一、NFS-网络文件系统
1、介绍
NFS(Network File System),即网络文件系统。
网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS.,它允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
模式:C/S模式
端口:2049
2、安装
安装包
nfs-utils:基本的NFS命令与监控程序
portmap:支持安全NFS RPC服务的连接
[root@qianshuiliyu ~]# yum -y install rpcbind nfs-utils
启动
[root@qianshuiliyu ~]# systemctl restart rpcbind.service
[root@qianshuiliyu ~]# systemctl status nfs
[root@qianshuiliyu ~]# systemctl enable nfs
查看端口
3、服务端操作
不要在服务器的目录里设置,有些目录特殊会出问题,这边设置没问题,客户端那边会出问题
1、创建测试信息
[root@qianshuiliyu ~]# mkdir /nfs
[root@qianshuiliyu ~]# cp /etc/passwd /etc/shadow /nfs/
2、配置文件
[root@qianshuiliyu ~]# vim /etc/exports
/root/nfs/ *(rw)
# * 表示对所有网段开放权限,也可以设置网段或者主机
============================================================
[root@qianshuiliyu ~]# exportfs -rv
exporting *:/root/nfs
重启
[root@qianshuiliyu ~]# systemctl restart nfs
============================================================
# 重新读取配置文件,不中断服务
[root@qianshuiliyu ~]# exportfs -rv
exporting *:/nfs
4、客户端
1、命令
mount -t
-t,指定挂载系统
showmount -e NFS服务器IP
[root@qianshuiliyu_client ~]# man showmount
# 查看说明,很简单
# 列出挂载信息,有了之后进行挂载
[root@qianshuiliyu_client ~]# showmount -e 192.172.168.100
Export list for 192.172.168.100:
/nfs *
2、在客户端进行挂载
[root@qianshuiliyu_client ~]# mount -t nfs 192.172.168.100:/nfs /mnt/
# 现在系统一般会自动识别
[root@qianshuiliyu_client ~]# mount 192.172.168.100:/nfs /mnt/
[root@qianshuiliyu_client ~]# ll /mnt/
总用量 8
-rw-r--r--. 1 root root 1917 10月 4 15:39 passwd
----------. 1 root root 1138 10月 4 15:39 shadow
3、查看,最下面的是
[root@qianshuiliyu_client ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 22G 3.7G 19G 17% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 80K 1.9G 1% /dev/shm
tmpfs 1.9G 8.9M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 497M 108M 390M 22% /boot
192.172.168.100:/nfs 22G 3.7G 19G 17% /mnt
4、设置开机自动挂载
# 修改配置文件或者追加,千万别覆盖
[root@qianshuiliyu_client ~]# echo "192.172.168.100:/nfs /mnt nfs defaults 0 0" >> /etc/fstab
5、权限
1、创建文件
[root@qianshuiliyu_client ~]# cd /mnt/
[root@qianshuiliyu_client mnt]# touch 1
touch: 无法创建"1": 权限不够
2、修改权限
[root@qianshuiliyu ~]# chmod 777 /nfs/
3、客户端创建
[root@qianshuiliyu_client mnt]# touch 1
[root@qianshuiliyu_client mnt]# ls
1 passwd shadow
[root@qianshuiliyu_client mnt]#
============================================================
# 服务端也存在
[root@qianshuiliyu ~]# ls /nfs/
1 passwd shadow
二、配置文件的参数
共享目录是必跟参数外,其他参数都是可选的。
共享目录与客户端之间及客户端与客户端之间需要使用空格符号,但是客户端括号里面的参数与客户端不能空格
空格的
参数 | 说明 |
---|---|
ro | 只读访问 |
rw | 读写访问 |
sync | 资料同步写入到内存与硬盘当中 |
async | 资料会先暂存于内存当中,而非直接写入硬盘 |
secure | NFS通过1024以下的安全TCP/IP端口发送 |
insecure | NFS通过1024以上的端口发送 |
wdelay | 如果多个用户要写入NFS目录,则归组写入(默认) |
no_wdelay | 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 |
Hide | 在NFS共享目录中不共享其子目录 |
no_hide | 共享NFS目录的子目录 |
subtree_check | 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) |
no_subtree_check | 和上面相对,不检查父目录权限 |
all_squash | 共享文件的UID和GID映射匿名用户anonymous,适合公用目录 |
no_all_squash | 保留共享文件的UID和GID(默认) |
root_squash | root用户的所有请求映射成如anonymous用户一样的权限(默认) |
no_root_squash | root用户具有根目录的完全管理访问权限 |
root_squash(压制):如果用root登录nfs,使其身份自动且换成nfsnobody。
no_root_squash:如果用root登录nfs,使其身份就是root。
all_squash:用户登录nfs时,指定身份为UID/GID的用户,用户要存在
压制root,指定身份,客户noboday,服务指定的身份,有可能不显示
1、实验
[root@qianshuiliyu ~]# vim /etc/exports
/nfs 192.172.168.0/24(rw,no_root_squash)
# 重启
[root@qianshuiliyu ~]# systemctl restart nfs
# 在客户端
[root@qianshuiliyu_client mnt]# touch 5
[root@qianshuiliyu_client mnt]# ll
总用量 8
-rw-r--r--. 1 nfsnobody nfsnobody 0 10月 4 16:07 1
-rw-r--r--. 1 nfsnobody nfsnobody 0 10月 4 16:30 5
-rw-r--r--. 1 root root 1917 10月 4 15:39 passwd
----------. 1 root root 1138 10月 4 15:39 shadow
============================================================
# 服务端
[root@qianshuiliyu ~]# ll /nfs/
总用量 8
-rw-r--r--. 1 nfsnobody nfsnobody 0 10月 4 16:07 1
-rw-r--r--. 1 nfsnobody nfsnobody 0 10月 4 16:30 5
-rw-r--r--. 1 root root 1917 10月 4 15:39 passwd
----------. 1 root root 1138 10月 4 15:39 shadow
2、再实验
[root@qianshuiliyu ~]# vim /etc/exports
/nfs 192.172.168.0/24(rw,all_squash,anonuid=1000,anongid=1000)
# 重启
[root@qianshuiliyu ~]# systemctl restart nfs
查看客户端
查看服务端
3、参数调优
客户端在挂载的时候进行优化或者直接写入配置文件
mount命令
mount | 说明 |
---|---|
-o | 优化加-o |
async 异步同步 | 此参数会提高I/O性能,但会降低数据安全(除非对性能要求很高,对数据可靠性不要求的场合。一般生产环境,不推荐使用) |
noatime | 取消更新文件系统上的inode访问时间,提升I/O性能,优化I/O目的,推荐使用。 |
nodiratime | 取消更新文件系统上的directory inode访问时间,高并发环境,推荐显式应用该选项,提高系统性能 |
intr | 可以中断不成功的挂载 |
rsize/wsize 读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,比如说32768(bytes),提升缓冲区块将可提升NFS文件系统的传输能力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。
内和优化
内核优化:
net.core.wmem_default = 8388608 #内核默认读缓存
net.core.rmem_default = 8388608 #内核默认写缓存
net.core.rmem_max = 16777216 #内核最大读缓存
net.core.wmem_max = 16777216 #内核最大写缓存
[root@qianshuiliyu_client ~]# mount -o noatime,nodiratime,intr 192.172.168.100:/nfs /mnt/
三、自动挂载
1、说明
在客户端使用
通过autofs实现自动挂载
自动挂载涉及到两个文件,auto.master和auto.misc,也可能直接是autofs软件包
[root@qianshuiliyu ~]# yum -y install autofs.x86_64
/etc/auto.master 文件定义本地挂载点.
/etc/auto.misc 配置文件是用来设置需要挂载的文件系统类型和选项
2、配置
# 创建挂载点
[root@qianshuiliyu ~]# mkdir /gzd
[root@qianshuiliyu ~]# vim /etc/auto.master
/nfs/ /etc/auto.nfs --timeout=60
# 挂载超时时间,单位为秒。可以修改这个参数。
============================================================
[root@xuegod64 ~]# vim /etc/auto.nfs
nfs -fstype=nfs 192.172.168.100:/nfs/chuang
# cd切换目录到/nfs/chuang,触发自动挂载,超过时间自动卸载
# 在自动挂载时目录会自动创建
注: 只有cd /tmp/a/nfs 进去, 触发一下,才能自动挂载。 另外 nfs目录,不能提前创建,自动挂载时,系统自动创建nfs目录。