NFS部署過程
yum install -y nfs-utils rpcbind
2)修改配置文件
vim /etc/exports
#共享目錄 IP網段 參數
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)nfs自帶用戶:nfsnobody 65534,自己創建用戶
groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M
4)創建共享目錄
mkdir /data
chown -R www.www /data
5)啟動服務
systemctl start rpcbind nfs-server
客戶端部署
1)安裝rpcbind和nfs
yum install -y rpcbind nfs-utils
2)啟動rpcbind
systemctl start rpcbind
3)查看可掛載點
showmount -e 172.16.1.31
4)掛載
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
5)開機掛載
vim /etc/fstab
172.16.1.31:/data /var/www/html/tupian nfs defaults 0 0
6)使用mount -a 檢測
[root@backup ~]# mount -a
7)卸載
umount /var/www/html/tupian
#強制卸載
umount -lf /var/www/html/tupian
8)nfs掛載文件
[root@nfs01 ~]# cat /var/lib/nfs/etab
9)增加掛載的安全性
#通過mount -o指定掛載參數,禁止使用suid,exec,增加安全性能
[root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt
nfs配置參數
rw:共享目錄的權限是 可讀 可寫
sync:同時將數據寫入內存和磁盤,增強數據的安全性,保證數據不丟失
all_squash:無論使用什么用上傳或者訪問,一律壓縮成 nfs的匿名用戶
anonuid:指定一個匿名用戶,必須是系統存在的uid
anongid:指定一個匿名用戶組,必須是系統存在的gid
----------------------------------------------不常用--------------------------------------------
root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶(不常用) |
---|---|
no_root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員(不常用) |
no_all_squash | 無論NFS客戶端使用什么賬戶訪問,都不進行壓縮 |
---|---|
async | 優先將數據保存到內存,然后再寫入硬盤;這樣效率更高,但可能會丟失數據 |
ro | 只讀權限 |
---|---|
NFS存儲小結
-
NFS存儲優點
-
1)NFS文件系統簡單易用、方便部署、數據可靠、服務穩定、滿足中小企業需求。
2)NFS文件系統內存放的數據都在文件系統之上,所有數據都是能看得見。
-
NFS存儲局限
-
1)存在單點故障, 如果構建高可用維護麻煩web->nfs()->backup
-
2)NFS數據明文, 並不對數據做任何校驗。
-
3)客戶端掛載NFS服務沒有密碼驗證, 安全性一般(內網使用)
-
-
3.NFS應用建議 1)生產場景應將靜態數據盡可能往前端推, 減少后端存儲壓力
2)必須將存儲里的靜態資源通過CDN緩存jpg\png\mp4\avi\css\js
3)如果沒有緩存或架構本身歷史遺留問題太大, 在多存儲也無用
rsync+nfs實戰,解決nfs的單點故障
服務器系統 | 角色 | IP |
---|---|---|
CentOS 7.5 | NfsServer(A) | 172.16.1.31 |
CentOS 7.5 | NfsClient(B) | 172.16.1.41 |
CentOS 7.5 | NfsClient(C) | 172.16.1.7 |
1)安裝服務端
yum install -y rpcbind nfs-utils
2)編輯服務端的配置文件
vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)創建用戶
groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M
4)創建目錄並授權
mkdir /data
chown -R www.www /data
5)啟動服務
systemctl start rpcbind nfs-server
6)檢查
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)
配置客戶端
1)安裝客戶端服務
yum install -y rpcbind nfs-utils
2)啟動rpc
systemctl start rpcbind
3)查看掛載點
showmount -e 172.16.1.31
4)掛載
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
結合rsync
1)NFS安裝rsync
yum install -y rsync
2)客戶端與服務端的關系
3)使用免密的方式
export RSYNC_PASSWORD=123456
rsync服務端操作(backup)
1)創建www用戶
groupadd www -g 666 useradd www -u 666 -g 666 -s /sbin/nologin -M
2)統一rsync服務的用戶和用戶組(修改配置文件)
vim /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 ##################################### [zls] comment = welcome to oldboyedu backup! path = /backup [nfs] comment = welcome to oldboyedu nfs! path = /data
3)創建目錄並授權
[root@backup ~]# mkdir /data [root@backup ~]# chown -R www.www /data/
4)編寫備份腳本
vim rsync.sh #!/bin/bash PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin' H=`hostname` I=`ifconfig eth1|awk 'NR==2{print $2}'` D=`date +%F` S=${H}_${I}_${D} BD=/backup export RSYNC_PASSWORD=123456 mkdir -p ${BD}/${S} tar zcf ${BD}/${S}/conf.tar.gz /etc/passwd &>/dev/null md5sum ${BD}/${S}/conf.tar.gz > /backup/${I}.txt rsync -az ${BD}/ rsync_backup@172.16.1.41::zls rsync -az --delete /data/ rsync_backup@172.16.1.41::nfs find ${BD} -type d -mtime +7|xargs rm -fr
5)安裝nfs服務端
[root@backup ~]# yum install -y rpcbind nfs-utils
6)編輯配置文件
[root@backup ~]# vim /etc/exports /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
7)啟動服務
[root@backup ~]# systemctl start rpcbind nfs-server [root@backup ~]# systemctl enable rpcbind nfs-server
web01客戶端寫腳本
#!/bin/bash check_nfs=`df -h|grep '/var/www/html/tupian'|wc -l` if [ $check_nfs -eq 0 ];then showmount -e 172.16.1.31 &>/dev/null if [ $? -eq 0 ];then mount -t nfs 172.16.1.31:/data /var/www/html/tupian else mount -t nfs 172.16.1.41:/data /var/www/html/tupian fi fi