linux运维的日常工作中,mount命令绝对是最基础也最重要的命令之一。大多数人对它的印象还停留在:mount /dev/sdx /data挂载硬盘。但真正的高手,都在用mount 实现权限控制、系统急救、性能优化和安全加固。

今天,我们不讲基础,直接看一看Linux mount 命令的高级玩法,每一个都能解决生产环境的实际痛点。

一、在线热重载:不关机修改分区权限

场景:系统盘突然变成了只读模式(read-only),业务报错,但你不敢重启!

解决办法:remount它可以在不卸载、不中断业务的情况下,重新挂载并修改参数。

#救命命令:将根目录重新挂载为可读写mount-o remount,rw /#反之,如果数据区是挂载目录,将数据区设为只读,防止误删mount-o remount,ro /disk2
打开网易新闻 查看精彩图片

打开网易新闻 查看精彩图片

remount 用于调整已挂载文件系统的参数,如将原读写挂载改为只读。目标必须是已挂载的文件系统,而非普通目录。

运维急救第一命令,零停机维护。若业务允许停机,也可选择重启后维护,但优先推荐 remount 以减少影响。

二、目录绑定:让两个目录访问同一份数据

场景:程序写死了路径/old,但数据在/new,不想改代码怎么办?

解决办法:--bind它可以把一个目录映射到另一个目录,类似于 Windows 的快捷方式,但更强大。

#将 /data 目录映射到 /disk2/datamount --bind /data /disk2/data

这在接入多种数据源,有多个路径需要传输至安全设备的场景中比较常用。比如边界机器上接入多个厂家的设备,需要通过安全设备传输至内外,使用bind可以有效解决该问题。

三、防止服务器被入侵提权

场景:你的服务器有个上传目录/disk2,最怕黑客上传木马并执行。

解决办法:noexec, nosuid, nodev这三个参数是服务器安全基线配置的重中之重。

mount -o defaults,noexec,nosuid,nodev /disk2/#需要时可以挂载的目录 
  • noexec:阻止该挂载点上的二进制程序执行(对脚本的影响视解释器和权限而定。
  • nosuid:禁止用户通过 SUID 权限进行提权。
  • nodev:不允许在此创建设备文件。

就算木马传上来,也跑不起来!

四、内存文件系统,有效提高速度

场景:高并发下的临时缓存、日志队列,追求极致读写速度。

解决办法:tmpfs直接把内存虚拟成磁盘,重启消失,但速度极快!

#创建一个 512M 的内存盘mount -t tmpfs -o size=512M tmpfs /disk2/ramdisk
打开网易新闻 查看精彩图片

这是一个临时的缓存替代方案,可以有效地减轻io压力。

五、挂载镜像文件:不用解压直接看内容

场景:下载了iso镜像或固件包,不想刻盘,只想看里面的文件。

解决办法:-o loop将普通文件虚拟成块设备。

mount -o loop CentOS-7.iso /iso
打开网易新闻 查看精彩图片

六、关闭无用的时间戳记录

场景: mysql、redis 等高性能服务磁盘io压力大。多数现代发行版默认已使用 relatime,如需极致性能可评估 noatime,但可能影响少数依赖 atime 的工具。

解决办法:noatimeLinux 默认每次读文件都会更新 “访问时间”,这会产生大量无效 io。

#重新挂载,关闭文件访问时间记录mount -o remount,noatime /disk2

在性能优化或追求极致访问效率的环境可是使用。

七、排查谁占用了磁盘

场景:想卸载磁盘,提示target is busy,找不到谁在占用。

#查看哪个进程在占用 /data 目录fuser -mv /data#当然也可以使用我们常用的lsof lsof /data
打开网易新闻 查看精彩图片

八、写入 fstab 永久配置

所有临时的mount命令,重启都会失效!想要永久生效,必须写入/etc/fstab

数据库安全优化模式

/dev/sdb /disk2 ext4 defaults,noatime 0 0

只读绑定模板(安全加固使用)

/data /disk2/data none bind,ro 0 0

修改完成后可以使用mount -a进行测试验证。

mount-a#确认配置是否正确mount | grep -E"/data|/disk2/data"
九、总结运维高手的 Mount 备忘录
  • 救急 用 remount;
  • 映射用 --bind;
  • 防黑 用 noexec;
  • 提速用 tmpfs和 noatime;
  • 挂载镜像用 loop。