NFS服务

发布于 29 天前  19 次阅读


一、搭建NFS服务

1.安装服务

[root@nfs ~]#yum -y install nfs-utils

2.配置服务

[root@nfs ~]#vim /etc/exports	#安装后默认生成 空文件
/data  172.16.1.0/24(rw,sync,all_squash)
/data	#共享的目录
172.16.1.0/24	#允许哪个网段可以挂载
rw		#挂载的参数 可读写
sync	#表示所有的I/O操作都将被同步到存储设备上,这意味着数据在写入磁盘后才会返回写入成功的确认。
all_squash	#表示所有的客户端用户和组都会被映射为匿名用户(通常是nobody或nogroup),这样做可以防止客户端用户对NFS服务器上的文件拥有不同的权限。

3.根据配置创建必要的数据信息

#参数中使用的all_squash用户的身份压缩,压缩成哪个用户就使用哪个用户的身份往/data中写数据
创建目录 /data
[root@nfs ~]#mkdir /data

4.启动服务

[root@nfs ~]#systemctl start  nfs
[root@nfs ~]#systemctl enable  nfs

5.查看服务启动参数

#需要参数存在说明配置文件没问题,如果参数不存在说明配置文件出错。
[root@nfs ~]#cat /var/lib/nfs/etab
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
通过uid查找用户
[root@nfs ~]#cat /etc/passwd |grep 65534
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

6.修改/data的属主属组

[root@nfs ~]#chown nobody.nobody /data
[root@nfs ~]#ll -d /data
drwxr-xr-x 2 nobody nobody 6 Dec  3 20:49 /data

7.测试

1.安装nfs-utild
[root@web01 ~]#rpm -qa nfs-utild
2.查看共享的文件
[root@web01 ~]#showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
3.挂载使用
[root@web01 ~]#mkdir /img
[root@web01 ~]#mount -t nfs 172.16.1.31:/data  /img
[root@web01 ~]#df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           459M     0  459M   0% /dev
tmpfs              475M     0  475M   0% /dev/shm
tmpfs              475M  6.8M  468M   2% /run
tmpfs              475M     0  475M   0% /sys/fs/cgroup
/dev/sda3           48G  3.8G   45G   8% /
tmpfs              475M     0  475M   0% /tmp
/dev/sda1          195M  122M   74M  63% /boot
tmpfs               95M     0   95M   0% /run/user/0
172.16.1.31:/data   48G  3.8G   45G   8% /img

写入测试
[root@web01 ~]#touch /img/{1..3}.txt
[root@nfs ~]#ll /data/
total 0
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 1.txt
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 2.txt
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 3.txt

#bakcup 挂载
[root@backup ~]#mount -t nfs 172.16.1.31:/data /img
[root@backup ~]#ll /img/
total 0
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 1.txt
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 2.txt
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 3.txt
-rw-r--r-- 1    666    666 0 Dec  3 21:16 4.txt

8.写入开机自启动

[root@web01 ~]#vim /etc/fstab 
172.16.1.31:/data       /img    nfs     defaults 0 0           
#建议写入/etc/rc.local
[root@web01 ~]#vim /etc/rc.local 
mount -t nfs 172.16.1.31:/data /img

#因为开机自启动的时候网络和自动挂载是同时进行 容易造成没有挂载成功 

二、NFS参数

/data 172.16.1.0/24(ro,sync,all_squash)
ro		#表示客户端只读权限
[root@nfs ~]#groupadd -g666 www
[root@nfs ~]#useradd -u666 -g666 -M -s /sbin/nologin www
[root@nfs ~]#id www
uid=666(www) gid=666(www) groups=666(www)
[root@nfs ~]#chown www.www /data
[root@nfs ~]#ll -d /data
drwxr-xr-x 2 www www 45 Dec  3 21:06 /data
[root@nfs ~]#cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

[root@web01 ~]#umount /img
[root@web01 ~]#!mount
mount -t nfs 172.16.1.31:/data  /img
[root@web01 ~]#touch /img/4.txt
[root@web01 ~]#ll /img/
total 0
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 1.txt
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 2.txt
-rw-r--r-- 1 nobody nobody 0 Dec  3 21:06 3.txt
-rw-r--r-- 1    666    666 0 Dec  3 21:16 4.txt

三、夯住解决方法

1.挂载到NFS
2.将NFS的内网网卡关闭
3.df -h 夯住

解决方法:
1.启动网卡
2.强制卸载挂载点
[root@web01 ~]#umount -f /img 
3.如果不知道挂载点,查看/proc/mounts信息
[root@web01 ~]#cat /proc/mounts
172.16.1.31:/data /img nfs4 rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
然后卸载

实例

backup服务器

#搭建rsync服务
1.安装
[root@backup ~]#yum -y install rsync
2,修改配置文件
[root@backup ~]#cat /etc/rsyncd.conf 
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors 
read only = false
list = false
auth users = rsync_backup		
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
path = /backup

[nfs]
path = /nfs
3.创建用户
[root@backup ~]#groupadd -g666 www
[root@backup ~]#useradd -u666 -g666 -M -s /sbin/nologin www
4.创建密码文件并修改权限
[root@backup ~]#cat  /etc/rsync.passwd
rsync_backup:123456
[root@backup ~]#chmod 600 /etc/rsync.passwd 
5.创建目录并修改属主属组
[root@backup ~]#mkdir /backup /nfs
[root@backup ~]#chown www.www /backup /nfs
6.启动rsyncd服务
[root@backup ~]#systemctl start rsyncd
[root@backup ~]#systemctl enable rsyncd
#搭建nfs服务
7.安装nfs-utilsf
[root@backup ~]#yum -y install nfs-utils
8.修改配置文件
[root@backup ~]#vim /etc/exports
/nfs 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
9.启动服务
[root@backup ~]#systemctl start nfs
10.查看
[root@backup ~]#cat /var/lib/nfs/etab 
/nfs	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

nfs服务器

#搭建nfs服务
1.安装
[root@nfs ~]#yum -y install nfs-utils
2.修改配置文件
[root@nfs ~]#cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3.创建用户
[root@nfs ~]#groupadd -g666 www
[root@nfs ~]#useradd -u666 -g666 -M -s /sbin/nologin www
4.创建目录并修改属主属组
[root@nfs ~]#mkdir /data
[root@nfs ~]#chown www.www /data
5.启动nfs服务
[root@nfs ~]#systemctl start nfs
6.查看
[root@nfs ~]#cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

#搭建lsync服务
1.安装lsync
[root@nfs ~]#yum -y install lsyncd
2.修改配置文件
[root@nfs ~]#vim /etc/lsyncd.conf 
settings {
    logfile = "/var/log/lsyncd/lsyncd.log", -- 日志文件所在的位置
    statusFile = "/var/log/lsyncd/lsyncd.status", -- 状态文件日志所在的位置
    maxProcesses = 2, -- 最大的进程数量,内核的数量保持一致
    nodaemon = false, -- 以守护进程方式来运行
}

sync {
    default.rsync, -- 默认用rsync命令
    source = "/data/", -- 实时监控/data目录,只要发生变化立刻推送到backup
    target = "rsync_backup@10.0.0.41::nfs", -- 通过rsync守护进程命令来推送数据
    delete = true, -- 使用--delete参数来实时同步
    delay = 1, -- 1秒钟同步一次
    rsync = {
        binary = "/usr/bin/rsync", -- 命令所在的位置
        password_file = "/etc/rsyncd.pwd", -- 密码的配置文件
        archive = true, -- 使用-a参数
        compress = true, -- 使用-z参数
    }
}	
3.创建密码文件并修改权限
[root@nfs ~]#vim /etc/rsyncd.pwd
123456
[root@nfs ~]#chmod 600 /etc/rsyncd.pwd 
4.启动lsync服务

web01服务器

创建目录/img
[root@web01 ~]#mkdir /img
查看可挂载目录
[root@web01 ~]#showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@web01 ~]#showmount -e 172.16.1.41
Export list for 172.16.1.41:
/nfs 172.16.1.0/24
将命令img挂载到nfs的/data目录
[root@web01 ~]#mount -t nfs 172.16.1.31:/data /img/
[root@web01 ~]#df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           459M     0  459M   0% /dev
tmpfs              475M     0  475M   0% /dev/shm
tmpfs              475M  6.8M  468M   2% /run
tmpfs              475M     0  475M   0% /sys/fs/cgroup
/dev/sda3           48G  3.8G   45G   8% /
tmpfs              475M     0  475M   0% /tmp
/dev/sda1          195M  122M   74M  63% /boot
tmpfs               95M     0   95M   0% /run/user/0
172.16.1.31:/data   48G  3.8G   45G   8% /img

模拟nfs挂掉

关闭 nfs ens36
[root@nfs ~]#ifdown ens36
[root@web01 ~]#df -h
^C
夯住了
1.卸载挂载
[root@web01 ~]#umount -f /img
2.挂载backup 
[root@web01 ~]#mount -t nfs 172.16.1.41:/nfs /img
[root@web01 ~]#df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          459M     0  459M   0% /dev
tmpfs             475M     0  475M   0% /dev/shm
tmpfs             475M  6.8M  468M   2% /run
tmpfs             475M     0  475M   0% /sys/fs/cgroup
/dev/sda3          48G  3.8G   45G   8% /
tmpfs             475M     0  475M   0% /tmp
/dev/sda1         195M  122M   74M  63% /boot
tmpfs              95M     0   95M   0% /run/user/0
172.16.1.41:/nfs   48G  3.8G   45G   8% /img
[root@web01 ~]#!vim
#!/bin/bash
  
ping -c1 -w1 172.16.1.31

if  [ $? -ne 0  ];then
        umount -f /img &> /dev/null &
        sleep 2
        umount -f /img &> /dev/null
        mount -t nfs 172.16.1.41:/nfs /img

fi
[root@nfs ~]#ifdown ens36
[root@web01 ~]#sh m.sh 
PING 172.16.1.31 (172.16.1.31) 56(84) bytes of data.

--- 172.16.1.31 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

[root@web01 ~]#df -h
Filesystem        Size  Used Avail Use% Mounted on
devtmpfs          459M     0  459M   0% /dev
tmpfs             475M     0  475M   0% /dev/shm
tmpfs             475M  6.9M  468M   2% /run
tmpfs             475M     0  475M   0% /sys/fs/cgroup
/dev/sda3          48G  3.8G   45G   8% /
tmpfs             475M     0  475M   0% /tmp
/dev/sda1         195M  122M   74M  63% /boot
tmpfs              95M     0   95M   0% /run/user/0
172.16.1.41:/nfs   48G  3.8G   45G   8% /img
小棱
最后更新于 2024-12-24