在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 挂载一个只读目录,原目录可写,挂载出来的目录只读,只需要将只读目录权限给开发人员即可
猜您喜欢
-
详解Linux多线程中互斥锁、读写锁、自旋锁、条件变量、信号量
大家好,我是木荣。今天我们再次探讨Linux多线程编程中的重要概念,特别是同步和互斥机制。 同步和互斥 互斥:在多线程环境中,互斥是指多个线程访问同一资源时,仅允许一个线程对其进行访问的特性。这种特性具有唯一性和排他性···
-
如何设置联想电脑的U盘启动项(一步步教你设置U盘启动项)
在系统安装、数据恢复等情况下,设置u盘启动项显得尤为重要。php小编小新将以联想电脑为例,通过本文内容详解如何设置u盘启动项,为读者提供轻松完成系统安装的指导。 检查U盘的启动盘制作是否正确 首先需要确保U盘内有正确的启动盘···
-
解除U盘写保护状态的方法(一步步教你轻松解决U盘写保护问题)
如何解除 u 盘的写保护状态?u 盘为数据传输提供了极大便利,但有时可能会遭遇无法写入数据的困境,这是由于 u 盘被设置了写保护状态。为了解决此问题,本文将详细介绍如何解除 u 盘的写保护状态,帮助您恢复 u 盘的正常使用。由 php···
-
电脑换了路由器怎么重新设置上网(简单步骤教你重新设置电脑的无线网络连接)
如何重新设置电脑的无线网络连接?电脑无法连接无线网络,可能会令人沮丧。php小编小新汇编了这份指南,提供逐步说明,帮助您解决此问题。在本指南中,我们将探讨重置无线网络连接的不同方法,包括通过设置、设备管理器和命令提示符。···
-
电脑如何加快开机速度(教你快速提高开机速度)
随着时间的推移,您的电脑开机速度可能会逐渐变慢,给您的工作效率带来麻烦。为了解决这个问题,php小编新一精心准备了五种行之有效的提高电脑开机速度的方法,具体内容如下: 方法一:清理系统垃圾 这些垃圾文件会占据系统的存储空···
-
SD卡数据删除了怎么恢复?教你几种办法轻松数据恢复
随着数字化的飞速发展,存储设备的需求日益增长。其中,sd卡凭借其体积小巧、便携易用的特性,已广泛应用于手机、相机、摄像机等电子设备中。它不仅可以轻松存储海量数据,更是我们珍贵记忆和重要资料的载体。因此,php小编苹果特整理···