Redian新闻
>
教你在 Linux 下做到一个文件即可读写,又只读~

教你在 Linux 下做到一个文件即可读写,又只读~

公众号新闻

转自:运维研习社

在Linux运维过程中,经常会遇到某个应用的存储目录跑满,提前又没有做任何规划,目录或磁盘无法扩容,这个时候,我们常用的解决方法是做软链接,通过ln,将原先存储的目录软链接到另外大的磁盘中的目录下,以此达到目的。
软链的弊端就是,多层软链之后,会被绕晕,很容易造成误操作,今天再介绍一种方法

mount --bind

mount命令运维小伙伴应该很熟悉,不做过多介绍
先来看下man里面的介绍
通过mount --bind可以将文件目录结构重新挂载,连接两个目录,它是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问

例子

通过例子看下,分别创建两个不同的目录,并在两个不同的目录下创建不同的文件
查看文件的inode
通过mount --bind将test1挂载到test2上,重新查看inode和目录下内容
可以看到,inode号和文件,都是test1的
然后对test2目录下的文件访问修改,实际上改动的就是test1目录,我们测试下,在test2目录创建文件
然后接触mount之后,我们再查看下两个目录下的内容
可以看到,test1目录保持修改后的状态,test2目录文件仍然存在,且保持原来的不变

原理

以mount --bind test1 test2为例,当mount --bind命令执行后,Linux将会把被挂载目录的目录项(也就是该目录文件的block,记录了下级目录的信息)屏蔽,即test2的下级路径被隐藏起来了(注意,只是隐藏不是删除,数据都没有改变,只是访问不到了)。同时,内核将挂载目录(test1)的目录项记录在内存里的一个s_root对象里,在mount命令执行时,VFS会创建一个vfsmount对象,这个对象里包含了整个文件系统所有的mount信息,其中也会包括本次mount中的信息,这个对象是一个HASH值对应表(HASH值通过对路径字符串的计算得来),表里就有 /test1 到 /test2 两个目录的HASH值对应关系
命令执行完后,当访问 /test2下的文件时,系统会告知 /test2 的目录项被屏蔽掉了,自动转到内存里找VFS,通过vfsmount了解到 /test2 和 /test1 的对应关系,从而读取到 /test1 的inode,这样在 /test2 下读到的全是 /test1 目录下的文件

注意

两个目录的对应关系是存在于内存中的,一旦重启,挂载关系就没有了,所以需要将挂载关系,写入/etc/fstab中

高级用法

  • 临时配置文件读取测试
    有些应用场景下,需要修改配置文件进行测试,但是又不能影响正在运行中的业务,在没有把握的情况下,不愿意直接修改原有配置文件的话,我们可以通过在/tmp等目录,写一个测试的配置文件,通过mount --bind的方式挂载到配置文件读取目录,运行程序读取该临时配置文件,测试完成后,只需要umount,不影响原来的配置
  • 只读挂载
    在一些场景下,比如需要给开发人员查看一些配置的权限,但是又不允许它们修改配置的情况下,可以通过mount --bind,ro 挂载一个只读目录,原目录可写,挂载出来的目录只读,只需要将只读目录权限给开发人员即可
以上就是mount --bind的简单介绍,更多使用方法,各位小伙伴可以自行尝试。

END

官方站点:www.linuxprobe.com

Linux命令大全:www.linuxcool.com

刘遄老师QQ:5604215

Linux技术交流群:2636170

(新群,火热加群中……)

想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Linus Torvalds:Linux 内核中的 Rust、AI 和疲劳的维护者 | Linux 中国LifeLabs集体诉讼和解金!每人获赔50-150加元 符合两条件即可如何在 Linux 中映射 SAN LUN、磁盘和文件系统 | Linux 中国终端基础:在 Linux 中重命名文件和目录 | Linux 中国将手机作为你的 Linux 桌面的摄像头和麦克风 | Linux 中国Vojtux:针对视力障碍用户改造 Linux | Linux 中国Linux 黑话解释:Linux 中的 Super 键是什么? | Linux 中国Linux 桌面上的 Firefox 面临着大问题 | Linux 中国为什么儿童早期读写能力很重要?如何激发读写能力?如何管理有近 3 万个文件的超大型 Python 代码仓?Linux 下“Hello World”的幕后发生了什么 | Linux 中国如何在 Linux 中扩展 Veritas 文件系统(VxFS) | Linux 中国2001-2007真是国剧经典爆发的年代/贞观之治如何在 Linux 中注释 PDF | Linux 中国Mageia 9 发布:搭载 Linux 内核 6.4,支持 PulseAudio | Linux 中国Fedora Linux Flatpak 八月推荐应用 | Linux 中国海外华人狂喜!中国永居“五星卡”惊艳亮相!申请条件曝光,满足这些条件即可第九章 政府公权力的组织运作 (全文)我的一位好友---Irene京沪学霸妈组了一个鸡娃群:每周2小时搞思辨读写,诞生好几个全A学生!娃的学术有救了!Arch Linux 下全面使用 Wayland 的配置指南 | Linux 中国盖有时代印戳的日记咏无花果首款 Linux 游戏本?!Tuxedo 推出 Linux 游戏本 Sirius 16加码!政府再投$4.13亿推动能源转型!符合条件即可申请$3000大额补贴!最后5周,补贴即将下调!如何在 Linux 中查找映射到 VxVM 磁盘的 SAN LUN | Linux 中国Linux 窗口管理器 Compiz 简史 | Linux 中国Fedora Linux 的家族(四):替代下载 | Linux 中国“大模型本质就是两个文件!”特斯拉前AI总监爆火LLM科普,时长1小时,面向普通大众如何制作一个 Linux Mint 立付 USB | Linux 中国你好,我是筚(bì)篥( lì)!Fedora Linux Flatpak 九月推荐应用 | Linux 中国在 Linux 文件系统中使用 attr 添加扩展属性 | Linux 中国一直在期待的基于 Ubuntu 的滚动发布 Rhino Linux 终于来了 | Linux 中国Linux 游戏的下一个秘密武器:Bottles Next | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。