NFS服务简介
NFS是Network File System的缩写及网络文件系统。它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
NFS一般用来存储共享视频,图片等静态数据。
CentOS 7.2 系统下 NFS服务器部署
1,让我们先来准备2台服务器
服务器系统 |
角色 |
内网IP |
主机名 |
挂载目录 |
CentOS 7.2 |
NFS服务端 |
eth1:192.168.14.10 |
DEV-COM-NFS-01 |
/data/nfs |
CentOS 7.2 |
NFS客户端 |
eth1:192.168.14.10 |
DEV-APP-MSG-01 |
/data/nfsdata |
2,服务器安装nfs
[root@DEV-COM-NFS-01 ~]# yum -y install nfs-utils
安装过程就此省略了,知道看到如下输出,就表示安装成了
以上省略若干报文 ...... "/etc/exports" 1L, 49C written Verifying : selinux-policy-targeted-3.13.1-60.el7.noarch 32/45 Verifying : libsemanage-2.1.10-18.el7.x86_64 33/45 Verifying : systemd-sysv-219-19.el7.x86_64 34/45 Verifying : libgudev1-219-19.el7.x86_64 35/45 Verifying : systemd-219-19.el7.x86_64 36/45 Verifying : selinux-policy-3.13.1-60.el7.noarch 37/45 Verifying : krb5-libs-1.13.2-10.el7.x86_64 38/45 Verifying : systemd-libs-219-19.el7.x86_64 39/45 Verifying : libselinux-utils-2.2.2-6.el7.x86_64 40/45 Verifying : cryptsetup-libs-1.6.7-1.el7.x86_64 41/45 Verifying : libselinux-python-2.2.2-6.el7.x86_64 42/45 Verifying : libsepol-2.1.9-3.el7.x86_64 43/45 Verifying : policycoreutils-2.2.5-20.el7.x86_64 44/45 Verifying : libselinux-2.2.2-6.el7.x86_64 45/45 Installed: nfs-utils.x86_64 1:1.3.0-0.65.el7 Dependency Installed: gssproxy.x86_64 0:0.7.0-26.el7 keyutils.x86_64 0:1.5.8-3.el7 libbasicobjects.x86_64 0:0.1.1-32.el7 libcollection.x86_64 0:0.7.0-32.el7 libevent.x86_64 0:2.0.21-4.el7 libini_config.x86_64 0:1.3.1-32.el7 libnfsidmap.x86_64 0:0.25-19.el7 libpath_utils.x86_64 0:0.2.1-32.el7 libref_array.x86_64 0:0.1.5-32.el7 libtirpc.x86_64 0:0.2.4-0.16.el7 libverto-libevent.x86_64 0:0.2.5-4.el7 lz4.x86_64 0:1.7.5-3.el7 quota.x86_64 1:4.01-19.el7 quota-nls.noarch 1:4.01-19.el7 rpcbind.x86_64 0:0.2.0-48.el7 tcp_wrappers.x86_64 0:7.6-77.el7 Updated: selinux-policy.noarch 0:3.13.1-252.el7_7.6 systemd.x86_64 0:219-67.el7_7.2 Dependency Updated: cryptsetup-libs.x86_64 0:2.0.3-5.el7 krb5-libs.x86_64 0:1.15.1-37.el7_7.2 libgudev1.x86_64 0:219-67.el7_7.2 libselinux.x86_64 0:2.5-14.1.el7 libselinux-python.x86_64 0:2.5-14.1.el7 libselinux-utils.x86_64 0:2.5-14.1.el7 libsemanage.x86_64 0:2.5-14.el7 libsepol.x86_64 0:2.5-10.el7 policycoreutils.x86_64 0:2.5-33.el7 selinux-policy-targeted.noarch 0:3.13.1-252.el7_7.6 systemd-libs.x86_64 0:219-67.el7_7.2 systemd-sysv.x86_64 0:219-67.el7_7.2 Complete!
3,配置NFS
vim /etc/exports /data/nfs * (rw,sync,all_squash)
/data/nfs 192.168.13.0/24(rw,sync,all_squash)
/data/nfs 共享目录的路径
* 这里标识没有限制,也可用限制ip替换
参数 |
参数作用 |
rw* |
读写权限 |
ro |
只读权限 |
root_squash |
当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用) |
no_root_squash |
当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用) |
all_squash |
无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用) |
no_all_squash |
无论NFS客户端使用什么账户访问,都不进行压缩 |
sync* |
同时将数据写入到内存与硬盘中,保证不丢失数据 |
async |
优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
anonuid* |
配置all_squash使用,指定NFS的用户UID,必须存在系统 |
anongid* |
配置all_squash使用,指定NFS的用户UID,必须存在系统 |
4,启动服务,并将服务加入开机启动
[root@DEV-COM-NFS-01 data]# systemctl enable rpcbind nfs-server Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. [root@DEV-COM-NFS-01 data]# systemctl start rpcbind nfs-server
5,检查端口
[root@DEV-COM-NFS-01 data]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:50317 0.0.0.0:* LISTEN 11278/rpc.statd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 11279/rpc.mountd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 668/sshd
tcp 0 0 0.0.0.0:41561 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp6 0 0 :::41480 :::* LISTEN -
tcp6 0 0 :::33226 :::* LISTEN 11278/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::20048 :::* LISTEN 11279/rpc.mountd
tcp6 0 0 :::22 :::* LISTEN 668/sshd
tcp6 0 0 :::2049 :::* LISTEN -
6,检查共享的内容
[root@DEV-COM-NFS-01 data]# cat /var/lib/nfs/etab /data/nfs *(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)
7,检查匿名用户对应的真实账户,并授权共享目录为nfsnobody
[root@DEV-COM-NFS-01 data]# grep "65534" /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin [root@DEV-COM-NFS-01 data]# chown -R nfsnobody.nfsnobody /data/nfs
8,客户端安装nfs,先放我们来看下客户端目前的磁盘情况
[root@DEV-COM-MSA-01 data]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 20G 1.9G 17G 11% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 17M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/vdc 50G 33M 50G 1% /data tmpfs 379M 0 379M 0% /run/user/0
9,安装nfs
[root@DEV-COM-MSA-01 data]# yum install -y nfs-utils
安装过程同上面第二步
10,启动rpcbind服务
[root@DEV-COM-MSA-01 data]# systemctl enable rpcbind [root@DEV-COM-MSA-01 data]# systemctl start rpcbind
11,查看服务端提供的可挂载nfs信息
[root@DEV-COM-MSA-01 data]# showmount -e 192.168.14.10 Export list for 192.168.14.10: /data/nfs *
12,执行挂载命令
[root@DEV-COM-MSA-01 data]# mount -t nfs 192.168.14.10:/data/nfs /data/nfsdata
13,查看挂载信息
[root@DEV-COM-MSA-01 data]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda1 20G 1.9G 17G 11% / devtmpfs 1.9G 0 1.9G 0% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs 1.9G 17M 1.9G 1% /run tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/vdc 50G 33M 50G 1% /data tmpfs 379M 0 379M 0% /run/user/0 192.168.14.10:/data/nfs 100G 32M 100G 1% /data/nfsdata
14,关掉客户端重启后,发现挂载信息不见了,还需要手动挂载一次?
[root@DEV-APP-MSA-01 ~]# echo '192.168.14.10:/data/nfs /data/nfsdata nfs defaults 0 0' >> /etc/fstab
[root@DEV-APP-MSA-01 ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Fri Jul 11 06:33:31 2014 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=277fd82b-0856-4e23-8371-1f11823281b7 / ext4 defaults 1 1 LABEL=YUNIFYSWAP swap swap defaults 0 0 192.168.14.10:/data/nfs /data/nfsdata nfs defaults 0 0
重启后发现就可以自动挂载了
也可通过如下命令,来验证我们的fstab是否设置成功
#卸载挂载 umount /data/nfsdata #将/etc/fstab的所有内容重新加载。 mount -a