1. 程式人生 > >DNS服務部署

DNS服務部署

關系 4.3 useradd 例如 ssi 服務 mas quota not

NFS網絡文件系統(存儲服務),什麽是NFS?
NFS是Network File System的縮寫,中文意思是網絡文件系統,它的主要功能是通過網絡(一般是局域網)
讓不同的主機系統之間可以共享文件或目錄 

什麽是文件系統:
知識回顧:
文件系統(裝修的風格)--怎麽來存放文件的,即存放文件的一種方式
新磁盤要做raid---分區---格式化(文件系統)---掛載使用
centos ext2,3,4
centos 7 xfs
suse reisersfs
分布式文件系統:mfs gfs fastdfs(重點研究的分布式文件系統)

1.3 為什麽要NFS服務進行數據存儲

a 實現數據信息共享
b 實現數據信息一致

1.4 NFS系統原理介紹

1.4.1 NFS服務工作架構(掛載架構圖)
a 部署好NFS服務
b web服務器進行掛載nfs共享目錄
c 對客戶端掛載點目錄下的數據進行修改,等價於在服務端共享目錄中,對數據的修改

1.4.2 什麽叫做rpc服務
rpc服務類似一個中介服務,由於nfs服務啟動會產生多個進程和端口(端口號隨機產生),
不方便客戶端與之建立網絡連接
利用rpc服務建立nfs文件共享流程
a 啟動rpc服務,創建111端口信息
b 啟動nfs服務,向rpc服務註冊進程端口號信息
c 客戶端訪問rpc服務,獲取nfs服務信息
d 客戶端獲取nfs共享目錄信息後,進行mount掛載

1.4.3 nfs工作原理圖

nfs服務端:做了3件事
nfs客戶端:做了3件事

1.5 NFS服務部署過程

技術分享圖片
1.5.1 確認部署環境
3臺服務器:web01 backup nfs01

擴展:實現yum下載數據本地保存
vim /etc/yum.conf     ---修改編寫yum配置文件
cachedir=/var/cache/yum/$basearch/$releasever   --- 下載軟件保存路徑
keepcache=1                                     --- 開啟yum下載軟件保存功能
[root@nfs01 ~]# yum reinstall telnet -y
[root@nfs01 ~]# cd /var/cache/yum/x86_64/6/
[root@nfs01 6]# tree

1.5.2 nfs服務部署流程

技術分享圖片

1.5.3 nfs服務端部署
第一個裏程碑:確認nfs相關軟件是否安裝
rpm -qa rpcbind
rpm -qa nfs-utils

第二個裏程碑:進行nfs相關軟件yum安裝
yum install -y rpcbind nfs-utils

第三個裏程碑:編寫nfs配置文件
[root@nfs01 6]# cat /etc/exports 
/data 172.16.1.0/24(rw,sync)

第四個裏程碑:創建共享目錄
mkdir /data
chown -R nfsnobody.nfsnobody /data

第五個裏程碑:啟動nfs相關服務
[root@nfs01 data]# /etc/init.d/rpcbind start
Starting rpcbind:                                          [  OK  ] 
[root@nfs01 data]# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]

第六個裏程碑:檢查nfs相關服務是否正常啟動
[root@nfs01 data]# rpcinfo -p localhost      --- 確認房源信息是否已經註冊到rpc服務中
[root@nfs01 data]# showmount -e 172.16.1.31  --- 確認是否有可以掛載的目錄信息
Export list for 172.16.1.31:

/data 172.16.1.0/24
1.5.4 本地測試掛載
[root@nfs01 data]# mount -t nfs 172.16.1.31:/data /mnt --- nfs服務端本地測試掛載
[root@nfs01 data]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 8.8G 1.7G 6.8G 20% /
tmpfs 931M 0 931M 0% /dev/shm
/dev/sda1 190M 40M 141M 22% /boot
172.16.1.31:/data 8.8G 1.7G 6.8G 20% /mnt

1.5.5 nfs客戶端部署
第一個裏程碑:安裝相應nfs客戶端軟件
yum install -y rpcbind nfs-utils

第二個裏程碑:rpcbind服務可以啟動(也可以不啟動)
/etc/init.d/rpcbind start

第三個裏程碑:進行掛載前測試
[root@nfs01 data]# rpcinfo -p localhost      --- 確認房源信息是否已經註冊到rpc服務中
[root@nfs01 data]# showmount -e 172.16.1.31  --- 由於未安裝nfs-utils軟件,因此沒有showmount

第四個裏程碑:進行共享目錄掛載
[root@backup ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@backup ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda3          8.8G  1.7G  6.8G  20% /
tmpfs              931M     0  931M   0% /dev/shm
/dev/sda1          190M   40M  141M  22% /boot
172.16.1.31:/data  8.8G  1.7G  6.8G  20% /mnt

1.6 NFS服務常見進程詳解

查看看以上進程,均可以執行 ”man 進程名“ 命令,例如 “man rpc.idmapd”,
可查看有關NFS服務進程的英文說明參考:

1.7 exports配置文件格式

NFS共享目錄 NFS客戶端地址1(參數1,參數2,...) 客戶端地址2(參數1,參數2,...)

NFS共享目錄 NFS客戶端地址(參數1,參數2,...)

執行man exports命令,然後切換到文件結尾,可以快速查看如下樣例格式:
EXAMPLE

sample /etc/exports file

      /                 master(rw) trusty(rw,no_root_squash)
      /projects         proj*.local.domain(rw)
      /usr              *.local.domain(ro) @trusted(rw)
      /home/joe         pc001(rw,all_squash,anonuid=150,anongid=100)
      /pub              *(ro,insecure,all_squash)
      /srv/www          -sync,rw server @trusted @external(ro)
      /foo              2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
      /build            buildhost[0-9].local.domain(rw)

1.8 exports配置文件重要參數說明

no_root_squash --- root用戶不進行映射壓縮
root_squash --- root用戶進行映射壓縮
all_squash --- 所有用戶都進行壓縮
no_all_squash --- 所有用戶都不進行壓縮

root_squash,no_all_squash參數實踐
[root@nfs01 data]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,root_squash,no_all_squash)

1.9 NFS在企業生產集群架構中的位置

技術分享圖片

1.10 NFS存儲服務器搭建-同步異步對比及優點缺點

技術分享圖片

1.11 命令參數

技術分享圖片
流程圖
技術分享圖片

實踐操作:將默認nfsnobody映射用戶轉為www
第一裏程碑:在服務端和客戶端創建出相同uid和gid的www用戶
[root@nfs01 ~]# useradd -u 666 www
[root@nfs01 ~]# id www
uid=666(www) gid=666(www) groups=666(www)

[root@web01 ~]# useradd -u 666 www
[root@web01 ~]# id www
uid=666(www) gid=666(www) groups=666(www)

第二裏程碑:編寫nfs服務端配置文件
[root@nfs01 ~]# cat /etc/exports 
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666)

第三個裏程:修改原有共享目錄權限
chown -R www.www /data

第四個裏程:客戶端進行掛載測試
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 mnt]# touch oldboy.txt
root@web01 mnt]# ll
otal 0
rw-r--r-- 1 www www 0 Dec  1 09:35 oldboy.txt

1.3 為什麽用戶默認映射為nfsnobody

[root@nfs01 data]# cat /var/lib/nfs/etab     --- nfs默認配置信息記錄文件
/data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,no_all_squash)
[root@nfs01 data]# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

1.4 實踐練習:共享不同的兩個目錄,分別賦予讀和寫權限

服務端上面要求:
nfs服務器172.16.1.31,共享下面兩個目錄:
/data/w 要求的權限可讀寫,同步數據sync,所有用戶都壓縮為匿名用戶all_suqash
/data/r 要求的權限為只讀,同步數據sync,所有用戶都壓縮為匿名用戶all_squash

客戶端上面要求:
backup服務器 把NFS服務器的/data/r 掛載到/data/r
web01服務器 把NFS服務器的/data/w 掛載到/data/w

1.5 配置nfs服務端:

第一個裏程:編寫nfs配置文件
vim /etc/exports
/data 172.16.1.0/24(rw,sync,anonuid=666,anongid=666)
/data/w 172.16.1.0/24(rw,sync,all_suqash)
/data/r 172.16.1.0/24(ro,sync,all_suqash)

第二個裏程:創建新增共享目錄
[root@nfs01 data]# mkdir /data/{w,r} -p
[root@nfs01 data]# chown -R nfsnobody.nfsnobody /data/
[root@nfs01 data]# ll /data/
total 8
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 1 09:35 oldboy.txt
drwxr-xr-x 2 nfsnobody nfsnobody 4096 Dec 1 10:30 r
drwxr-xr-x 2 nfsnobody nfsnobody 4096 Dec 1 10:30 w

第三個裏程:平滑重啟nfs服務
/etc/init.d/nfs reload

配置nfs客戶端:
backup服務器配置:
創建掛載點目錄:mkdir /data/r -p
進行共享目錄掛載:mount -t nfs 172.16.1.31:/data/r /data/r
說明:如果掛載點已經掛載上了,需要卸載重新掛載

web01服務器配置:
創建掛載點目錄:mkdir /data/w -p
進行共享目錄掛載:mount -t nfs 172.16.1.31:/data/w /data/w
說明:如果掛載點已經掛載上了,需要卸載重新掛載

第四個裏程:進行掛載目錄權限測試
測試backup掛載目錄權限(預期結果:掛載目錄中創建信息會權限拒絕)
[root@backup ~]# cd /data/r/
[root@backup r]# touch oldboy_backup.txt
touch: cannot touch `oldboy_backup.txt‘: Permission denied

測試web01掛載目錄權限(預期結果:掛載目錄中創建信息會權限拒絕)
[root@web01 w]# touch oldboy_web01.txt
[root@web01 w]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 1 10:48 oldboy_web01.txt

註意:nfs配置文件中,配置的共享目錄,不要有父目錄與子目錄的繼承關系

1.6 NFS服務的重點知識梳理

NFS客戶端權限與三個因素有關:
1) NFS服務器/etc/exports設置需要開放可寫入的權限,即服務器端的共享權限。
? 2) NFS服務器實際要共享的NFS目錄權限具有可寫入w的權限,即服務器端本地目錄的安全權限。
? 3)每臺機器對應存在和NFS默認配置UID的相同UID 65534的nfsnobody用戶
(確保所有客戶端的訪問權限統一,否則每個機器需要同時建立相同UID的用戶,並覆蓋NFS的默認用戶配置)、

重要配置文件與命令總結
/etc/exports --- nfs服務端主配置文件
/usr/sbin/exportfs --- exportfs為nfs服務管理命令,還可以進行命令行配置共享目錄信息
/usr/sbin/showmount --- 顯示可以掛載的共享目錄列表信息
/var/lib/nfs/etab --- 查看nfs服務端默認掛載參數配置信息
/proc/mounts --- 查看nfs客戶端默認掛載參數配置信息

umount命令重要參數
-l Lazy unmount --- 懶惰卸載,不用跳出掛載的目錄進行卸載
-f Force unmount --- 強制卸載
NFS客戶端掛載命令

1.7 客戶端掛載可能會遇到的問題

第一個報錯:
[root@nfs-client1 ~]# showmount -e 10.0.0.7 <- 這裏遇到了故障
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
問題說明:
nfs服務端防火墻沒有關閉,防火墻策略阻止掉了

第二個報錯:
[root@nfs-client1 ~]# showmount -e 10.0.0.7
clnt_create: RPC: Program not registered
問題說明:
nfs服務沒有啟動,只啟動了rpcbind服務

第三個報錯:
[root@nfs01 data]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
[FAILED]
Starting NFS mountd: [FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
[FAILED]
問題說明:
nfs與rpcbind服務啟動順序不正確,rpcbind服務沒有啟動,先啟動了nfs服務

第四個報錯:
示例1:客戶端掛載報錯“No such file or directory”
[root@nfs-client ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mount.nfs: mounting 172.16.1.31:/data failed, reason given by server: No such file or directory
解答:原因是NFS服務器端沒有共享目錄/data,創建即可。命令如下:
[root@nfs-server ~]# mkdir /data

第五個報錯:
示例4:卸載掛載設備時顯示device is busy。
[root@nfs-client mnt]# umount /mnt
umount.nfs: /mnt: device is busy
umount.nfs: /mnt: device is busy
問題解決:
umount -lf /mnt

第六個報錯:
示例5:CentOS 6.6客戶端NFS掛載時遇到問題。
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mount:wrong fs type,bad option,bad option,bad superblock on 10.0.0.7:/data,
missing codepage or helper program,or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program )
In some cases useful info is found in syslog - try
meg | tail or so
問題說明:
客戶端沒有安裝nfs-utils軟件包,無法識別nfs文件系統類型

第七個報錯:
共享目錄掛載很卡
mount -t nfs 172.16.1.31:/data /mnt
cd /mnt
time touch test.txt
原因分析:
? NFS服務端重啟之後。立刻進行掛載會出現此問題,因為NFS自身重啟的時候,擁有無敵的時間,默認是90秒;在無敵時間內,是不能對共享目錄進行更改的操作;
? 在系統配置中/etc/sysconfig/nfs中指定了無敵時間的配置參數
NFSD_V4_GRACE=90
NFSD_V4_LEASE=90
NLM_GRACE_PERI0D=90

第八個報錯:
Stale file handle
客戶端報錯
mount -t nfs 172.16.1.31:/data /mnt
mount.nfs: Stale file handle
問題原因:
掛載點目錄已經在掛載中,一定要卸載後,才能進行重新掛載

1.8 NFS客戶端開機自啟動掛載

1.8.1 利用rc.local文件實現
將掛載命令追加到/etc/rc.local文件中
echo ‘mount -t nfs 172.16.1.31:/data /mnt‘ >>/etc/rc.local

1.8.2 利用fstab文件實現
vim /etc/fstab
掛載什麽 掛載到哪 類型 掛載參數 是否備份 是否檢查磁盤
172.16.1.31:/data /mnt nfs defaults 0(dump) 0(fsck)
[root@backup ~]# /etc/init.d/netfs start
說明:netfs服務設置開機自啟動後,可以讓系統網絡服務啟動後,再次識別fstab文件配置信息

1.8.3 NFS客戶端掛載參數說明
技術分享圖片
技術分享圖片
1.8.4 NFS客戶端優化參數總結

技術分享圖片
技術分享圖片
1.8.4.1 有關系統安全掛載參數選項
在企業工作場景,一般來說,NFS服務器共享的只是普通靜態數據(圖片、附件、視頻),不需要執行suid、exec等權限,掛載的這個文件系統只能作為數據存取之用,無法執行程序,對於客戶端來講增加了安全性,例如:很多木馬篡改站點文件都是由上傳入口上傳的程序到存儲目錄。然後執行的。
因此在掛載的時候,用下面的命令很有必要:
mount -t nfs -o nosuid,noexec,nodev,rw 10.0.0.7:/data /mnt
通過mount -o指定掛載參數和在/etc/fstab裏指定掛載參數的效果是一樣的。
網絡文件系統和gf 本地的文件系統效果也是一樣的。

1.8.4.2 mount掛載性能優化參數選項
下面介紹幾個在企業生產環境下,NFS性能優化掛載的例子。
1)禁止更新目錄及文件時間戳掛載,命令如下:
mount -t nfs -o noatime,nodiratime 10.0.0.7:/data /mnt

DNS服務部署