NFS服务的使用
.1 案例目标
(1)了解 NFS 服务的安装。
(2)了解 NFS 的配置与使用。
2、案例分析
节点规划
IP 主机名 节点
192.168.200.11 nfs-server NFS 服务节点
192.168.200.12 nfs-client NFS 客户端节点
介绍: NFS 是 Network File System 的缩写,即网络文件系统。客户端通过挂载的方式将 NFS
服务器端共享的数据目录挂载到本地目录下。主要功能指的是共享文件。
步骤
1、修改两个节点的主机名,第一台机器为 nfs-server;第二台机器为 nfs-client。命令如下:
nfs-server 节点:
第一台:
# hostname nfs-server
# hostnamectl
Static hostname: nfs-server
Icon name: computer-vm
Chassis: vm
Machine ID: 157e7b1841884487a34c1eff02896644
Boot ID: 1f35ee11c5674ee680f18f85e13f0a26
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.el7.x86_64
Architecture: x86-64
第二台:
# hostnamectl set-hostname nfs-client
# hostnamectl
Static hostname: nfs-client
Icon name: computer-vm
Chassis: vm
Machine ID: 157e7b1841884487a34c1eff02896644
Boot ID: dc4382fc087642d8ab8c9c21f4a56878
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.el7.x86_64
Architecture: x86-64
2.安装 NFS 服务
两台均安装:
# yum install -y nfs-utils rpcbind
注意:安装 NFS 服务必须要依赖 RPC,所以运行 NFS 就必须要安装 RPC
3.NFS 服务使用
# mkdir /mnt/test
编辑 NFS 服务的配置文件/etc/exports,在配置文件中加入一行代码,命令如下:
# vi /etc/exports
/mnt/test 192.168.200.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501)
生效配置,命令如下:
[root@nfs-server ~]# exportfs –r
配置文件说明:
/mnt/test:为共享目录(若没有这个目录,请新建一个)。
192.168.200.0/24:可以为一个网段,一个 IP,也可以是域名。域名支持通配符,例
如,*.qq.com。
rw:read-write,可读写。
ro:read-only,只读。
sync:文件同时写入硬盘和内存。
async:文件暂存于内存,而不是直接写入内存。
no_root_squash:NFS 客户端连接服务端时,如果使用的是 root,那么对服务端共享
的目录来说,也拥有 root 权限。显然开启这项是不安全的。
root_squash:NFS 客户端连接服务端时,如果使用的是 root,那么对服务端共享的目
录来说,拥有匿名用户权限,通常它将使用 nobody 或 nfsnobody 身份。
all_squash:不论 NFS 客户端连接服务端时使用什么用户,对服务端共享的目录来说,
都拥有匿名用户权限。
anonuid:匿名用户的 UID(User Identification,用户身份证明)值,可以在此处自行
设定。
anongid:匿名用户的 GID(Group Identification,共享资源系统使用者的群体身份)
值。
4、nfs-server 端启动 NFS 服务,命令如下:
# systemctl start rpcbind
# systemctl start nfs
5、nfs-server 端查看可挂载目录,命令如下:
# showmount -e 192.168.200.11
Export list for 192.168.200.11:
192.168.200.0/24(rw,no_root_squash,no_all_squash,sync,anonuid=501,anongid=501) *
/mnt/test *
6、转到 nfs-client 端,在客户端挂载前,先要将服务器的 SELinux 服务和防火墙服务关闭,
命令如下:
# setenforce 0
# systemctl stop firewalld
7、在 nfs-client 节点,进行 NFS 共享目录的挂载,命令如下
# mount -t nfs 192.168.200.11:/mnt/test /mnt
无提示信息则表示成功,查看挂载情况。命令如下:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 18G 1.1G 17G 6% /
devtmpfs 904M 0 904M 0% /dev
tmpfs 913M 0 913M 0% /dev/shm
tmpfs 913M 8.7M 904M 1% /run
tmpfs 913M 0 913M 0% /sys/fs/cgroup
/dev/sda1 497M 118M 379M 24% /boot
tmpfs 183M 0 183M 0% /run/user/0
192.168.200.11:/mnt/test 5.8G 20M 5.5G 1% /mnt
可以看到 nfs-server 节点的/mnt/test 目录已挂载到 nfs-client 节点的/mnt 目录下。
.8、验证 NFS 共享存储
在 nfs-client 节点的/mnt 目录下创建一个 abc.txt 的文件并计算 MD5 值,命令如下:
# cd /mnt/test/
# touch abc.txt
遇到的问题:Read-only file system
解决方法:
.查看有多少分区入格式
cat /etc/fstab
/dev/VolGroup00/LogVol03 /opt ext3 defaults 1 2
2.在每个分区下测试能否写入
cd /mnt
touch x
touch: cannot touch `x’: Read-only file system
3.手动修复/opt分区
fsck前分区要先卸载
umount /mnt
遇到系统忙可以使用fuser
fuser -mk /mnt
以ext3格式修复
fsck -t ext4 /mnt
再重新挂载分区就可以写入了
mount /mnt
# md5sum abc.txt
d41d8cd98f00b204e9800998ecf8427e abc.txt
9、回到 nfs-server 节点进行验证,命令如下:
# cd /mnt/test/
# ll
total 0
-rw-r--r-- 1 root root 0 Aug 3 22:12 abc.txt
可以发现,在 client 节点创建的文件和 server 节点的文件是一样的。