12月7日任務mysql
14.1 NFS介紹linux
14.2 NFS服務端安裝配置sql
14.3 NFS配置選項服務器
NFS是網絡文件系統(Network File System)的縮寫。須要藉助網絡,實現數據的同步。網絡
NFS最先由Sun公司進行開發,分2,3,4三個版本,2和3版本有Sun公司起草開發,4.0開始由Netapp公司參與主導開發,最新版本爲4.1版本。app
NFS數據傳輸基於RPC協議,RPC爲Remote Procedure Call的簡寫。async
NFS的應用場景是:A,B,C三臺機器上須要保證被訪問到的文件時同樣的,A共享數據出來,B和C分別取掛載A共享的數據目錄,從而B和C訪問到的數據和A上的一致。測試
# 服務端安裝 [root@server etc]# yum install -y nfs-utils rpcbind # 客戶端安裝 [root@client etc]# yum install -y nfs-utils
[root@server etc] # 格式:分享的目錄 共享的ip(掛載選項) /home/nfstestdir 192.168.65.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
[root@server etc]# mkdir /home/nfstestdir # 這裏爲了測試方便給予了777權限,實際工做中須要按需求修改 [root@server etc]# chmod 777 /home/nfstestdir/
[root@server etc]# systemctl start nfs [root@server etc]# ps aux | grep nfs root 2878 0.0 0.0 0 0 ? S< 19:50 0:00 [nfsd4_callbacks] root 2884 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2885 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2886 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2887 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2888 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2889 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2890 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2891 0.0 0.0 0 0 ? S 19:50 0:00 [nfsd] root 2896 0.0 0.0 112680 976 pts/0 S+ 19:50 0:00 grep --color=auto nfs # 啓動了nfs時會自動啓動rpc服務,二者是關聯的 [root@server etc]# ps aux | grep rpc rpc 2644 0.0 0.0 64964 1412 ? Ss 19:28 0:00 /sbin/rpcbind -w rpcuser 2849 0.2 0.1 42380 1748 ? Ss 19:50 0:00 /usr/sbin/rpc.statd root 2850 0.0 0.0 0 0 ? S< 19:50 0:00 [rpciod] root 2862 0.0 0.0 19324 396 ? Ss 19:50 0:00 /usr/sbin/rpc.idmapd root 2868 0.0 0.0 42564 944 ? Ss 19:50 0:00 /usr/sbin/rpc.mountd root 2898 0.0 0.0 112680 976 pts/0 S+ 19:50 0:00 grep --color=auto rpc
[root@server etc]# systemctl enable nfs Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
/home/nfstestdir 192.168.65.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
rw 可讀可寫ui
ro 只讀spa
sync 同步模式 內存數據實時寫入磁盤,能夠很快的將數據寫入磁盤,相應的會下降磁盤的效率。
async 非同步模式 每一個一段時間再將數據寫入磁盤,缺點是當某一時刻斷電,將會致使部分數據丟失。
no_root_squash 客戶端掛載NFS共享目錄後,root用戶不受約束,權限很大。當客戶端須要共享目錄的數據時,將該目錄掛載到本機的某個目錄,客戶端的root權限能夠隨意對共享目錄內的數據進行操做。
root_squash 相對於no_root_squash參數而言,客戶端上的root用戶在訪問時被轉換爲某個普通用戶,權限被限制。
all_squash 客戶端上全部用戶在使用NFS共享目錄時都會被限制以某個普通用戶的身份進行數據的操做。
anonuid/anongid 配合squash的參數,定義限制後的用戶身份。
# 防火牆未放開rpc服務的111端口 [root@client ~]# showmount -e 192.168.65.133 clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host) # 服務端關閉防火牆和selinux [root@server etc]# systemctl stop firewalld [root@server etc]# setenforce 0 # 客戶端成功訪問 [root@client ~]# showmount -e 192.168.65.133 Export list for 192.168.65.133: /home/nfstestdir 192.168.65.0/24
[root@client ~]# mount -t nfs 192.168.65.133:/home/nfstestdir /mnt [root@client ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/sda3 18G 3.6G 15G 20% / devtmpfs 479M 0 479M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.7M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 197M 109M 88M 56% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.65.133:/home/nfstestdir 18G 3.4G 15G 20% /mnt
# 客戶端掛載共享目錄後,在該目錄下建立一個新用戶,其權限以下 [root@client ~]# cd /mnt/ [root@client mnt]# touch test [root@client mnt]# ls -l 總用量 0 -rw-r--r--. 1 mysql mysql 0 1月 9 20:45 test # 服務器也生成一個文件,其權限以下: [root@localhost etc]# ls -l /home/nfstestdir/ 總用量 0 -rw-r--r--. 1 mysql mysql 0 1月 9 20:45 test [root@localhost etc]# id mysql uid=1000(mysql) gid=1000(mysql) 組=1000(mysql)
關於爲何文件的屬主和屬組是mysql的說明:因爲在/etc/exports文件內定義了all_squash,anonuid=1000,anongid=1000參數,更新目錄下新建立的文件將以服務器上uid/gid爲1000的用戶最爲屬主和屬組。一樣的客戶端共享目錄下的文件也會以uid/gid爲1000的用戶做爲其屬主和屬組。