1、为何需要NFS

共享存储的需要。多个服务器(可以理解为客户机),共用一个存储空间,同时读写。

2、为何不选用云公司的NFS

云公司的NFS的确更健壮,但版本比较低。NFS目前已经发展到4.2,但是云公司使用的专业存储设备,却指支持到3.0。4.1比3.0在文件锁、并发性能、安全功能都好很多。
云公司的NFS更慢。有点无法理解,但实测如此,可能是版本,可能是底层网络,可能是其他使用人的竞争。比自建慢10倍以上。

3、自建NFS如何保证高可用性?

1)云硬盘本身是高可用的。据说是3副本,以及损坏巡检。
2)通过应用服务自身的同步。比如gerrit服务集群有镜像站点,有插件实时同步到镜像站点。
3)通过rsync定期同步到另外的虚机的云硬盘。此过程可以升级为通过linux的inotify事件实时监控文件变动来同步指定文件。
4)通过备份服务器,保留一定时长的全量备份,如半个月。

服务搭建过程:

1)准备好承担nfs服务虚机 nfs-server-1(master) 、nfs-server-2(backup),
2)挂载数据盘如/data
3)对nfs-server做操作系统参数优化,主要是limits限制:655350
4)安装nfs服务,centos使用yum安装nfs-utils
5)配置服务文件:/etc/exports,内容为:/data/xxx 192.168.0.0/24(rw,no_root_squash,no_all_squash,sync)。该网段为许可访问列表
6)server-1 master启动nfs服务。systemctl start / enable nfs
本机检查:

  1. #showmount -e 127.0.0.1
  2. Export list for 127.0.0.1:
  3. /data/backup 10.17.34.0/24

7)server-1启动inotify监控
安装:yum install inotify-tools -y
修改配置:
/proc/sys/fs/inotify目录下存在三个文件:
max_queued_events文件:设置inotify实例事件(event)队列可容纳的事件数量。
max_user_instances文件:设置每个用户可运行的inotifywait或inotifywatch命令的进程数。
max_user_watches文件:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程). 如果监控的目录文件数量很多,需要加大。
16384-》
128-》
8192-》 1048576 :echo 1048576 > /proc/sys/fs/inotify/max_user_watches
inotifywait -e create,modify,delete,attrib /mnt/gerritgit:
——待续

客户机挂载nfs服务:

客户机也需要安装nfs-utils
可以在fstab或rc.local
fstab:192.168.0.1:/data/xxx /data/backup nfs defaults 0 0
rc.local:mount -t nfs 192.168.0.1:/data/xxx /data/backup
fstab在启动后网络不通时可能会出现启动异常
rc.local也有类似问题,可以sleep一定时间延迟挂载。