之前用过很多次mount相关的功能,包括加载远程NFS等,最近因为配置vsftpd又用到,所以记录一下。
绑定A与B目录
这一操作感觉上类似于ln -s或者ln(实际上)。区别在于ln根本不能实现(硬链接不支持目录),而ln -s实际上是创建了一个文件指向了目标。
需求来自于一个ftp的配置。多个帐户要求共享若干个目录,每个帐户又有各自独立的目录,并且这些目录需要隐藏而不仅仅是禁止访问。
解决的方案是:
mount -bound /source/dir /target/dir
在fstab中启动时加载
这也是经常需要的功能,毕竟一次性加载的时候不多。
方法是编辑/etc/fstab文件,此文件的各个字段的标准解释参考这里。
简单点说包括:fs_spec(加载系统) fs_file(挂载点<目录>) fs_type(文件系统类型) fs_options(参数) fs_dump(转储频率) fs_pass(启动时加载顺序)
翻译得通俗一点就是;
/source/dirOrDevice /target/dir file_system_type option1,option2 #1 #2
其中#1,#2一般为0,0。
对于上面提到的A目录挂载B目录时,对应的写法是:
/ftp/public /ftp/users/ftp/public none defaults,bind 0 0
字段之间可以使用“任意数量”的“空字符”分隔,至少包括:空格和制表符,且允许多个。
选项(option)之间使用逗号分隔。常用的除了上面的defaults,bind之外,还有ro(只读),rw(读写)等。
在另一个项目中,我试过用如下的方式加载远程的目录,通过NFS方式共享文件,实现上传文件的统一管理。
172.17.16.24:/nfs/upload /nfs/upload nfs defaults 0 0
172.17.16.24:/nfs/archive /nfs/archive nfs defaults 0 0
172.17.16.24:/nfs/share /nfs/share nfs defaults 0 0
与之对应的的NFS配置虽然与mount无关,这里也列一下以便对照。
/nfs/share 172.17.16.25/32(rw,sync,no_root_squash,no_all_squash)
/nfs/share 172.17.16.30/32(rw,sync,no_root_squash,no_all_squash)
/nfs/share 172.17.16.45/32(rw,sync,no_root_squash,no_all_squash)
/nfs/archive 172.17.16.25/32(ro,sync)
/nfs/archive 172.17.16.30/32(ro,sync)
/nfs/archive 172.17.16.45/32(ro,sync)
/nfs/upload 172.17.16.25/32(rw,sync,no_root_squash,no_all_squash)
/nfs/upload 172.17.16.30/32(rw,sync,no_root_squash,no_all_squash)
fstab校验
之前遇到过一次修改了fstab把主机搞挂了的情况,所以一直对修改这个文件有点发怵,今天上网发现了一个命令,应该是非常实用的:
mount -a
该命令尝试加载fstab文件,可以不重启验证fstab文件是否有异常。
解除挂载
其实这个命令很简单,就是umount 挂载点路径
唯一需要说明的就是不是unmount,而是umount,一开始打错了。