1、NFS客户端挂载命令
这里先强调下客户端挂载的命令格式。

挂载命令

挂载的格式类型

NFS服务端提供的共享目录

NFS客户端的挂载点

mount

-t nfs

172.16.1.31:/data

/mnt(必须存在)

mount -t nfs 172.16.1.31:/data /mnt,此命令要在NFS客户端执行.

2、NFS客户端mount挂载命令参数说明
在NFS服务端可以通过cat/var/lib/nfs/etab查看NFS服务端配置参数的细节。在NFS客户端可以通过cat/proc/mounts 查看mount的挂载参数细节。

通过如下命令在NFS客户端测试挂载获取的默认挂载参数:
[ root@web01~]# grep mnt /proc/mounts
172.16.1.31:/data/mnt nfs4
rw, relatime, vers=4.1, rsize=131072, wsize=131072, namlen=255, hard, psoto=tcp, timeo=600, retrans=2, sec=sys,clientaddr=172.16.1.7,local_lock=none, addr=172.16.1.31 0 0

NFS Client mount挂载参数说明。
NFS Client mount 挂载参数列表

参数

参数功能

默认

fg、bg

当在客户端执行挂载时,可选择是前台(fe)还是在后台(bg)执行。若在前台执行,则mount会持续尝试挂载,直到成功或挂载时间超时为止,若在后台执行,则mount会在后台持续多次进行mount,而不会影响到前台的其他程序操作。如果网络联机不稳定,或是服务器常常需要开关机,建议使用bg比较妥当。

fg

soft、hard

当NFS Client 以soft 挂载Server时,若网络或Server出现问题,造成Client和Server无法传输资料,Client就会一直尝试,直到timeout后显示错误才停止。若使用soft mount的话,可能会在timeout出现时造成资料丢失,故一般不建议使用(害羞的男孩)。若用hard模式挂载硬盘时,刚好和soft相反,此时Client会一直尝试连线到Server,若Server有回应就继续刚才的操作,若没有回应NFS Client会一直尝试,此时无法umount或kil1,所以常常会配合intr使用。这是默认值(死缠烂打脸皮厚的男孩)。

hard

intr

当使用hard挂载的资源timeout后,若有指定ntr参数,可以在timeout后把它中断掉,这避免出问题时系统整个被NFS锁死,建议使用intr。


rsize、wsize

读出(rsize)与写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务器端传输数据的缓冲存储量,一般来说,如果在局域网内(LAN),并且客户端与服务器端都具有足够的内存,这个值可以设置大一点,比如说65535(bytes),提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不要太大,最好以网络能够传输的最大值为限。

CentOS5:默认值rsize=1024,wsize=1024;CentOS7.6:默认值rsize=131072,wsize=13107

proto=udp

使用UDP协定来传输资料,在LAN中会有比较好的性能。若要跨越Internet的话,使用proto=tcp多传输的数据会有比较好的纠错能力。

proto=tcp

nfs文件系统挂载参数详解 nfs 挂载命令_文件系统


有hard参数————>耦合度高了

可通过man nfs查看上述参数信息。如果追求极致,可以用如下参数挂载:

mount -t nfs -o fg, hard, intr, rsize=131072, wsize=131072 172.16.1.31:/data/  /mnt

但是如果考虑以简单、易用为原则,直接选择默认值就可以了。
mount -t nfs 172.16.1.31:/data/ /mnt


mount -o参数对应的选项

参数

参数意义

默认系统值

suid、nosuid

当挂载的文件系统上有任何SUID的程序时,只要使用nosuid就能够取消设置SUID的功能。(SUID,在linux基础学习篇权限管理里面讲过了)

suid

rw、ro

可以指定文件系统是只读(ro)或可写(rw)。

rw

dev、nodev

是否可以保留装置文件的特殊功能?一般来说只有/dev才会有特殊的装置,因此可以选择nodev。

dev

exec、noexec

是否具有执行文件的权限?如果想要挂载的仅是普通资源数据区(例如:图片、附件),那么可以选择noexec(不允许执行二进制命令)。

exec

user、nouser

是否允许用户进行文件的挂载与卸载功能?如果要保护文件系统,最好不要提供用户进行挂载与卸载

nouser

auto、noauto

这个auto指的是“mount -a”时会不会被挂载的项目,如果不需要这个分区随时被挂载,可以设置为noauto

auto


3.把man mount后的-o参数中英翻译对比
下面是mount 而令的-o选项后面可以接的参数,注意,有些选项只有出现在/etc/fstab里才有效,下面这些选项可以应用在绝大多数文件系统上,但是sync仅适合ext2、ext3、fat、vfat 和ufs等文件系统。

  • async:涉及文件系统I/O的操作都是异步处理,即不会同步写到磁盘,此参数会提高性能,但会降低数据安全。一般情况,生产环境不推荐使用。除非对性能要求很高,对数据可靠性不要求的场合。
  • rsync:该参数和async相反。有I/O操作时,都会同步处理I/O,即把数据同步写入硬盘。此参数会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性。
  • atime:在每一次数据访问时,会同步更新访问文件的inode时间戳,是默认选项,在高并发的情况下,建议通过明确加上noatime,来取消这个默认项,以到达提升I/O性能,优化I/O的目的。
  • ro:以只读的方式挂载一个文件系统。
  • rw:以可写的方式挂载一个文件系统。
  • auto:能够被自动挂载通过-a选项。
  • noauto:不会自动挂载文件系统。
  • defaults:这是fstab里的默认值,包括rw、suid、dev、exec、auto、nouser、and async,默认情况大部分都是默认值。
  • exec:允许文件系统执行二进制文件,取消这个参数,可以提升系统安全。
  • noexec(优化参数):在挂载的文件系统中不允许直接执行任何二进制的程序,注意,仅对二进制程序有效,即使设置了noexec、shell,php程序还是可以执行的。
  • noatime:访问文件时不更新文件的inode时间戳,高并发环境下,推荐显式应用该选项,可以提高系统I/O性能。
    ps:时间戳在磁盘inode里,访问也会改变时间戳(访问时间,修改时间,属性变化时间),时间戳变了会占用磁盘I/O,访问一次磁盘I/O性能就会降低。
  • nodiratime:不更新文件系统上的directory inode时间截,高并发环境,推荐显式应用该选项,可以提高系统I/O性能。*
  • nosuid:不允许 set-user-identifier or set-group-identifier位生效。*
  • suid:允许set-user-identifier or set-group-identifier位生效。
  • nouser:禁止一个普通用户挂载该文件系统,这是默认挂载时的默认选项。
  • remount:尝试重新挂载一个已经挂载了的文件系统,这通常被用来改变一个文件系统的挂载标志,从而使得一个只读文件系统变的可写,这个动作不会改变设备或者挂载点。当系统故障时进入single或rescue模式修复系统时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场了。具体命令为:(单用户模式)mount -o remount,rw/,表示将根文件系统重新挂载使得可写。single或rescue模式修复系统时这个命令十分重要。*
  • dirsync:目录更新时同步写入磁盘*。

这些参数都支持本地文件系统。

一般情况安全的参数和性能参数是对立的,即越安全性能就越差。