说明
NFS是网络文件系统,公司内部使用NFS做文件的共享。在集群管理中,比如php的应用,可以让集群机器mount相同的NFS目录使得数据可以同步。如果需要使用NFS的高可用集群,可以采用现有的存储集群软件。
安装
rpcbind提供远程调用接口,默认会随着nfs-utils安装包依赖安装。在服务器上,要同时启动rpcbind和nfs服务。
1. yum install nfs-utils
2. 创建准备共享的文件
mkdir -p /data/share
3. 修改暴露文件的配置
tee /etc/exports <<EOF
/data/share 192.168.10.0/24(rw,sync,insecure,no_subtree_check,no_root_squash)
EOF
关于此文件的配置
说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将 /data/share
文件目录设置为允许 IP 为该 10.222.77.0/24
区间的客户端挂载,当然,如果客户端 IP 不在该区间也想要挂载的话,可以设置 IP 区间更大或者设置为 *
即允许所有客户端挂载,例如:/home *(ro,sync,insecure,no_root_squash)
设置 /home
目录允许所有客户端只读挂载。
参数 | 说明 |
---|---|
ro | 只读访问 |
rw | 读写访问 |
sync | 所有数据在请求时写入共享 |
async | nfs 在写入数据前可以响应请求 |
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 用户具有根目录的完全管理访问权限 |
anonuid=xxx | 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID |
anongid=xxx | 指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID |
4. 启动服务器
systemctl start rpcbind && systemctl start nfs
5.查看本地能够共享的软件
[root@sv14-143 ~]# showmount -e localhost
Export list for localhost:
/data/share 192.168.10.0/24
6.至此安装介绍
使用
在客户机器上,注意客户机器的IP必须在192.168.10.0/24网段。
1.安装ntfs-utils包
2.创建目录并且进入目录修改文件
[root@sv10-141 ~]# mkdir -p /mnt/share
[root@sv10-141 ~]# mount 192.168.10.143:/data/share /mnt/share
[root@sv10-141 ~]# cd /mnt/share
[root@sv10-141 share]# touch aa bb cc
[root@sv10-141 share]# ll
total 0
-rw-r--r-- 1 root root 0 Dec 10 23:43 a
-rw-r--r-- 1 root root 0 Dec 11 11:52 aa
-rw-r--r-- 1 root root 0 Dec 10 23:44 b
-rw-r--r-- 1 root root 0 Dec 11 11:52 bb
-rw-r--r-- 1 root root 0 Dec 11 11:52 cc
[root@sv10-141 share]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 874M 0 874M 0% /dev
tmpfs tmpfs 885M 0 885M 0% /dev/shm
tmpfs tmpfs 885M 8.6M 877M 1% /run
tmpfs tmpfs 885M 0 885M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 8.0G 1.6G 6.5G 20% /
/dev/vda1 xfs 1014M 193M 822M 19% /boot
tmpfs tmpfs 177M 0 177M 0% /run/user/0
192.168.10.143:/data/share nfs4 8.0G 1.4G 6.7G 18% /mnt/share
提供一个脚本创建指定用途的nfs脚本
#!/bin/bash
[ $# -lt 4 ] && echo " usage: $0 pdir cdir from to " && exit 1
NFS=/home/share
PDIR=$1
CDIR=$2
FROM=$3
TO=$4
for num in `seq -s ' ' $FROM $TO `
do
mkdir -p $NFS/$PDIR/$CDIR-$num
if grep -q "$NFS/$PDIR/$CDIR-$num" /etc/exports ; then
continue
else
echo "$NFS/$PDIR/$CDIR-$num *(rw,no_root_squash,sync)" >>/etc/exports
fi
done
exportfs -a
3 结束