主要内容
1.Linux中的文件系统
2.NFS的应用场景
3.软件
4.准备环境
5.第一次启动rpc和nfs
6.nfs的配置
7.nfs权限控制
8.排错流程
9.nfs配置文件
NFS=Network File System 网络文件系统
一、文件系统:决定文件 数据如何在系统中存放
1.xfs:C7
2.ext系列:C5 C6
3.swap
4.tmpfs:内存文件系统(存放的数据相当于存放在内存中)
二、NFS应用场景
1.共享存储
2.存放用户上传的 附件(zip) 图片 (头像和文章里的图片)
三、软件
1.NFS:单个服务器
2.分布式存储:GlusterFS、Fastdfs
四、准备环境
1.机器
(1)web01:nfs的客户端
RPC服务:rpcbind(C6 C7) portmap(C5)
NFS服务:nfs-utils
(2)nfs01:nfs的服务端
RPC服务:rpcbind(C6 C7) portmap(C5)
NFS服务:nfs-utils
2.软件
RPC服务:rpcbind(C6 C7) portmap(C5)
NFS服务:nfs-utils
[root@nfs01 ~]# systemctl is-enabled rpcbind nfs
enabled
enabled
[root@nfs01 ~]# systemctl is-active rpcbind nfs
active
active
五、第一次启动rpc和nfs
1.nfs服务端nfs01
(1).启动rpcbind
[root@nfs01 ~]# systemctl restart rpcbind
(2).启动nfs
[root@nfs01 ~]# systemctl restart nfs
(3).查询rpc服务的注册信息:rpcinfo -p
[root@nfs01 ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 57161 nlockmgr
100021 3 udp 57161 nlockmgr
100021 4 udp 57161 nlockmgr
100021 1 tcp 41054 nlockmgr
100021 3 tcp 41054 nlockmgr
100021 4 tcp 41054 nlockmgr
2.用户映射基础 idmapd
用户映射就是客户端用户进入服务端后会被映射为匿名用户,默认为nfsnobody
六、nfs配置
1.nfs服务端
(1)nfs配置文件:/etc/exports
NFS共享目录 NFS客户端地址(参数列表)
(2)systemctl reload nfs
reload:
平滑重启/优雅重启
不中断当前正在处理的请求 只影响新的请求
注意:nfs尽量不要使用restart 使用之后会卡住90s
(3)检查可以挂载的具体信息:showmount -e 172.16.1.31
[root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/nfs 172.16.1.0/24
/upload 172.16.1.0/24
(4)本地挂载 进行测试
[root@nfs01 ~]# mount -t nfs 172.16.1.31:/upload/ /mnt/
[root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.8G 18G 10% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/upload 19G 1.8G 18G 10% /mnt
2.nfs客户端
(1)在web01 上进行挂载测试
[root@web01 ~]# mount -t nfs 172.16.1.31:/nfs /nfs/
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.8G 18G 10% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
172.16.1.31:/upload 19G 1.8G 18G 10% /video
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/nfs 19G 1.8G 18G 10% /nfs
(2)把nfs的upload目录挂载到video目录
七、nfs权限控制
1.配置文件/etc/exports
2.Linux服务端 共享目录权限755 用户和组是不是nfsnobody
八、排错流程
1.道路畅通
能ping通
2.rpc服务状态
rpcinfo -p 172.16.1.31
[root@nfs01 ~]# rpcinfo -p 172.16.1.31
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 57161 nlockmgr
100021 3 udp 57161 nlockmgr
100021 4 udp 57161 nlockmgr
100021 1 tcp 41054 nlockmgr
100021 3 tcp 41054 nlockmgr
100021 4 tcp 41054 nlockmgr
3.nfs服务的共享信息
showmount -e 172.16.1.31
[root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/nfs 172.16.1.0/24
/upload 172.16.1.0/24
4./proc/mounts
客户端挂在信息
[root@nfs01 ~]# cat /proc/mounts |egrep 'upload|nfs'
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
172.16.1.31:/upload /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.31,local_lock=none,addr=172.16.1.31 0 0
5./var/lib/nfs/etab
exports tables nfs服务端共享信息
服务端配置的共享参数
[root@nfs01 ~]# cat /var/lib/nfs/etab
/nfs 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=888,anongid=888,sec=sys,rw,secure,root_squash,all_squash)
/upload 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
九、nfs配置文件
1.sync
同步
同时将数据写入到内存与硬盘中,保证不丢失数据
直接写入数据
2.async
异步
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
先写到内存 在通过内存写入硬盘
3.rw
读写权限
4.ro
只读权限
5.all_squash
所有用户都压缩,访问nfs服务端都变成nfsnobody用户
6.root_squash
只有root用户被压缩,访问nfs服务端只有root变成nfsnobody,其他用户不变
7.no_all_squash
不是所有用户都压缩,一般和root_squash一起使用 默认情况
8.anonuid=xxx,anongid=xxx
指定访问客户端时的用户(这个用户一般为虚拟用户)