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技术交流群:3861509

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

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


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

戳这里提交新闻线索和高质量文章给我们。
相关阅读
旧金山的新公园:隧道顶公园如何在 Ubuntu 和其他 Linux 发行版中查看 AVIF 图像 | Linux 中国如何在 Linux 系统中使用 Ventoy 创建多重引导的 U 盘 | Linux 中国Reminders:一个漂亮的开源 Linux 应用,可帮助你完成工作 | Linux 中国ChatPDF也来了!一键上传文件即可解读,复制粘贴都省了Linux 只是一个内核:这是什么意思? | Linux 中国Agustín Hernández:中美洲建筑背景下的未来主义巨构PK网络捉骗终端基础:在 Linux 中删除文件和文件夹 | Linux 中国世界上只有两个 Linux 发行版:Arch Linux 与其它 | Linux 中国【便民】儿童乘坐公共交通、飞机、火车等,符合这些条件即可免费!“旅游签证和非法移民的孩子,禁止获美籍!”川普放狠话,如果赢得2024年大选,第一天就会签这个文件房屋保险如何在 Linux 中使用旧相机作为网络摄像头 | Linux 中国ChatPDF也来了!一键上传文件即可解读,复制粘贴都省了...如何在 Linux 中合并 PDF 文件 | Linux 中国Linux 中的模糊文件搜索 | Linux 中国risiOS:一个易于使用的基于 Fedora 的 Linux 发行版 | Linux 中国“赴美生子和非法移民的孩子,将剥夺美籍!”川普放狠话,如果赢得2024年大选,第一天就签这个文件!​伊州一地租房金申请现已开放!最高可获得6个月的援助 符合这些条件即可如何做到一年高效阅读100本书?如何在 Ubuntu 和其他 Linux 下安装 IDLE Python IDE | Linux 中国如何入门 Linux Shell 脚本编写 | Linux 中国川普放狠话:旅游签证和非法移民的孩子,禁止获美籍!如果赢得2024年大选,第一天就会签这个文件!TUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国终端基础:在 Linux 中创建文件 | Linux 中国如何做有温度的阅读?今晚八点,名师来支招!|“阅·青春”读书会在Linux系统中使用Vim读写远程文件的命令详解春风如贵客,果岭遂繁华怎么开始学佛(十一)再啰嗦几句ELF 文件、镜像(Image)文件、可执行文件、对象文件详解如何将千亿文件放进一个文件系统,EuroSys'23 CFS 论文背后的故事如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国发钱了!新州学生可领取3张50澳元返校券,仅剩四周,符合这些条件即可申请破解 Linux 文件安放之谜:哪里才是绝佳文件归宿?
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。