服务器 | 说明 |
192.168.43.85 | NFSServer |
192.168.43.9 | NFSClient |
1.安装NFSServer
sudo yum install nfs-utils
2.启动
sudo systemctl start nfs-server.service
3.设置开机启动
sudo systemctl enable nfs-server.service
4.查看状态
[root@localhost ~]# systemctl status nfs-server ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled) Drop-In: /run/systemd/generator/nfs-server.service.d └─order-with-mounts.conf Active: active (exited) since 五 2023-11-17 12:37:48 CST; 5min ago Main PID: 2288 (code=exited, status=0/SUCCESS) CGroup: /system.slice/nfs-server.service 11月 17 12:37:48 localhost.localdomain systemd[1]: Starting NFS server and services... 11月 17 12:37:48 localhost.localdomain systemd[1]: Started NFS server and services.
5.创建一个要共享的目录,并确保该目录存在于NFS服务器上,记得给读写权限
sudo mkdir /mnt/nfs sudo chmod -R 777 /mnt/nfs
6.打开NFS服务器配置文件/etc/exports以进行编辑,并添加要共享的目录和访问权限
sudo vi /etc/exports /mnt/nfs *(rw,sync,no_root_squash)
或者
sudo vi /etc/exports /mnt/nfs 192.168.43.0/24(rw,sync,all_squash)
“rw”表示允许读写访问, “sync”表示使用同步数据传输方式, “no_root_squash”表示允许root用户对共享目录的访问。 “all_squash“所有用户访问共享资源时都将被映射为匿名用户,从而限制了其对共享资源的访问权限。
7.修改完成重启或者重载配置
sudo systemctl restart nfs-server sudo exportfs -r
1.192.168.43.9 使用NFS需要安装用于执行挂载命令
sudo yum install nfs-utils
2.查看或者验证是否可以挂载
sudo showmount -e 192.168.43.85 Export list for 192.168.43.85: /mnt/nfs 192.168.43.0/24
3.挂载共享目录
sudo mount -t nfs 192.168.43.85:/mnt/nfs /mnt/nfs_client
sudo mount -t nfs -o nolock 192.168.43.85:/mnt/nfs /mnt/nfs_client
两个命令都是挂载
使用Server服务器上的/mnt/nfs目录挂载到本地的/mnt/nfs_client目录。 mount:挂载文件系统或网络共享。 -t nfs:指定使用NFS(网络文件系统)协议。 -o nolock:指定挂载选项,其中nolock表示不启用文件锁定。 server:/mnt/nfs:指定远程服务器的挂载源,即服务器上的/mnt/nfs目录。 /mnt/nfs_client:指定本地挂载点,即在本地的/mnt/nfs_client目录下挂载。
4.查看挂载
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 893M 0 893M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 11M 900M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 4.3G 13G 25% / /dev/sda1 1014M 185M 830M 19% /boot tmpfs 182M 12K 182M 1% /run/user/42 tmpfs 182M 0 182M 0% /run/user/0 192.168.43.85:/mnt/nfs 17G 4.3G 13G 25% /mnt/nfs_client
5.测试在Client创建一个文件,在Server查看是否存在
[root@localhost nfs_client]# touch liu.txt
6.NFS 卸载Client挂载
[root@localhost nfs_client]# umount /mnt/nfs_client/
7.遇到的异常
1.卸载失败(每一个解决方式都可以) umount.nfs4: /mnt/nfs_client: device is busy。这个意识要卸载但是被占用无法卸载 #解决-1 查看哪个进程正在使用这个挂载点,直接kill 掉就可以 [root@localhost nfs_client]# sudo lsof /mnt/nfs_client COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 2170 root cwd DIR 0,43 21 51418476 /mnt/nfs_client (192.168.43.85:/mnt/nfs) sudo 2632 root cwd DIR 0,43 21 51418476 /mnt/nfs_client (192.168.43.85:/mnt/nfs) lsof 2634 root cwd DIR 0,43 21 51418476 /mnt/nfs_client (192.168.43.85:/mnt/nfs) lsof 2635 root cwd DIR 0,43 21 51418476 /mnt/nfs_client (192.168.43.85:/mnt/nfs) #解决-2 重启Server sudo systemctl restart rpcbind sudo systemctl restart nfs-server #解决-3强制卸载 [root@localhost nfs_client]# umount -f /mnt/nfs_client/ [root@localhost nfs_client]# fuser -cu /mnt/nfs_client/ /mnt/nfs_client: 2170c(root) # root占用 fuser 是用于查看哪些用户和进程正在使用文件、目录或套接字的命令。 -c 选项表示同时显示进程和用户。 -u 选项表示显示用户名。 /mnt/nfs_client/ 是需要查看的挂载点的路径。 执行该命令后,会列出所有正在访问该挂载点的进程和对应的用户。 [root@localhost ~]# fuser -ck /mnt/nfs_client/ fuser 是用于查看哪些用户和进程正在使用文件、目录或套接字的命令。 -c 选项表示强制终止进程。 -k 选项表示同时终止用户和进程。 /mnt/nfs_client/ 是需要终止访问的挂载点的路径。 执行该命令后,会强制终止所有正在访问该挂载点的用户和进程,包括与NFS共享相关的进程。 2.NOTE this deabult has changed since nfs-utils version 1.0.x # 解决 在/etc/exports文件中添加"no_subtree_check"参数,这将覆盖默认的subtree check规则