1. 程式人生 > 遊戲攻略 >《永劫無間》三排團戰天賦搭配分享

《永劫無間》三排團戰天賦搭配分享

NFS共享儲存

NFS共享儲存

1.NFS基本概述

什麼是NFS

# NFS是Network File System的縮寫及網路檔案系統,NFS主要功能是通過區域網絡讓不同的主機系統之間可以共享檔案或目錄。
NFS一般用於檔案伺服器

企業中檔案伺服器(共享儲存)

NFS
GFS(glusterfs):高可用的
FastDFS
HDFS:大資料會使用
Ceph

為什麼要使用共享儲存

# 1.實現多臺伺服器之間資料共享
# 2.實現多臺伺服器之間資料一致

2.NFS應用場景

叢集沒有共享儲存

1.A使用者上傳圖片經過負載均衡,負載均衡將上傳請求排程至WEB1伺服器上。
2.B使用者訪問A使用者上傳的圖片,此時B使用者被負載均衡排程至WEB2上,因為WEB2上沒有這張圖片,所以B使用者無法看到A使用者傳的圖片。

叢集有共享儲存

1.A使用者上傳圖片無論被負載均衡排程至WEB1還是WEB2, 最終資料都被寫入至共享儲存
2.B使用者訪問A使用者上傳圖片時,無論排程至WEB1還是WEB2,最終都會上共享儲存訪問對應的檔案,這樣就可以訪問到資源了

3.NFS工作原理

本地檔案工作原理

1.當用戶執行mkdir命令,該命令會呼叫shell直譯器翻譯給核心
2.核心解析完成後會驅動對應的硬體裝置,完成相應的操作

NFS工作原理

1.使用者程序訪問NFS客戶端,使用不同的函式對資料化進行處理(如:照片寫入)
2.NFS客戶端通過TCP/IP的方式傳遞給NFS伺服器通過RPCbind伺服器
3.NFS服務端接受到請求後,會先呼叫Portmap程序進行埠對映
4.Rpc.nfsd程序用於判斷NFS客戶端是否擁有許可權連線NFS伺服器
5.Rpc.mount程序判斷客戶端是否有對應的許可權進行驗證
6.idmap程序實現使用者對映和壓縮
7.最後NFS服務端會將對應請求的函式轉換為本地能識別的命令,傳遞至核心,由核心驅動硬體

上傳圖片後,在本地儲存不儲存?

不儲存,但是本地的指定目錄中可以看到,它已經在遠端的data目錄裡了

4.NFS實戰

環境準備

主機名 角色 外網IP 內網IP
nfs NFS的服務端 10.0.0.31 172.16.1.3
web01 NFS的客戶端 10.0.0.7 10.0.0.8
web02 NFS的客戶端 10.0.0.8 172.16.1.8

NFS服務部署(服務端操作)

  • 1.安裝NFS

[root@nfs ~]# yum install -y nfs-utils
  • 2.修改配置檔案

修改配置檔案書寫方式
配置語法: /data 172.16.1.0/24 (rw,sync,all_squash)
語法含義: NFS共享目錄 NFS客戶端地址 (引數1,引數2........)
各引數含義
NFS共享引數 引數作用
rw 讀寫許可權
ro 只讀許可權
all_squash 無論NFS客戶端使用什麼賬戶訪問,均對映為NFS伺服器的匿名使用者
sync 同時將資料寫入到記憶體與硬碟中,保證不丟失資料
# 修改配置檔案[root@nfs ~]# vim /etc/exports/nfs_data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
  • 3.建立共享目錄

[root@nfs ~]# mkdir /nfs_data
  • 4.修改目錄許可權

[root@nfs ~]# chown www.www /nfs_data
  • 5.啟動服務

[root@nfs ~]# systemctl start nfs-server
  • 6.將nfs服務加入開機自啟

[root@nfs ~]# systemctl enable nfs-server
  • 7.檢查程序

[root@nfs ~]# ps -ef|grep [n]fsroot       6816      2  0 Jul07 ?        00:00:00 [nfsd4_callbacks]root       6824      2  0 Jul07 ?        00:00:00 [nfsd]root       6826      2  0 Jul07 ?        00:00:00 [nfsd]root       6827      2  0 Jul07 ?        00:00:00 [nfsd]root       6830      2  0 Jul07 ?        00:00:00 [nfsd]root       6831      2  0 Jul07 ?        00:00:00 [nfsd]root       6832      2  0 Jul07 ?        00:00:00 [nfsd]root       6833      2  0 Jul07 ?        00:00:00 [nfsd]root       6834      2  0 Jul07 ?        00:00:00 [nfsd]
  • 8.檢查rpcbind埠

[root@nfs ~]# netstat -lntup|grep 111tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      6326/rpcbind        tcp6       0      0 :::111                  :::*                    LISTEN      6326/rpcbind        udp        0      0 0.0.0.0:111             0.0.0.0:*                           6326/rpcbind        udp6       0      0 :::111                  :::*                                6326/rpcbind        

客戶端操作

[root@web01 ~]# yum install -y nfs-utils
  • 2.檢視掛載點

[root@web01 ~]# showmount -e 172.16.1.31Export list for 172.16.1.31:/nfs_data 172.16.1.0/24
  • 3.建立一個上傳資料的目錄

[root@web01 ~]# mkdir /user_pic
  • 4.掛載遠端目錄

[root@web01 ~]# mount -t nfs 172.16.1.31:/nfs_data /user_pic

5.企業實戰

NFS客戶端部署web站點

## 安裝網站服務[root@web01 ~]# yum install -y httpd php[root@web02 ~]# yum install -y httpd php## 查詢http服務的站點目錄[root@web01 ~]# rpm -ql httpd/var/www/html## 關閉selinux[root@web01 html]# setenforce 0 sed -i 's#SELINUX=enforcing#SELINUX=disabled#p' /etc/selinux/config [root@web01 html]# vim /etc/selinux/configSELINUX=disabled## 關閉Firewalld防火牆[root@nfs ~]# systemctl disable firewalld[root@nfs ~]# systemctl stop firewalld## 部署程式碼上傳程式碼rz## 解壓程式碼[root@web01 html]# unzip kaoshi.zip## 修改了php程式碼,改了裡面上傳目錄[root@web02 html]# vim upload_file.php$wen="/var/www/html/pic";## 修改目錄的許可權[root@web02 html]# chown apache.apache /var/www/html/## 啟動服務[root@web01 html]# systemctl start httpd## 將使用者上傳檔案的路徑做成共享儲存[root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/pic## 檢視掛載[root@web01 html]# df -hFilesystem         Size  Used Avail Use% Mounted on/dev/sda3           19G  1.4G   18G   8% /devtmpfs           476M     0  476M   0% /devtmpfs              487M     0  487M   0% /dev/shmtmpfs              487M  7.7M  479M   2% /runtmpfs              487M     0  487M   0% /sys/fs/cgroup/dev/sda1          497M  120M  378M  25% /boottmpfs               98M     0   98M   0% /run/user/0172.16.1.31:/data   19G  1.4G   18G   8% /var/www/html/pic

如何將nfs的客戶端做成開機自動掛載

## 編輯開機掛載的配置檔案(不建議)[root@web01 ~]# vim /etc/fstab172.16.1.31:/data    /var/www/html/pic   nfs defaults  0 0 注意:如果NFS服務端出現問題,客戶端一直掛載不上,可能會導致系統起不來

nfs解除安裝

 [root@web01 ~]# umount /var/www/html/pic

增加掛載的安全性

在企業工作場景,通常情況NFS伺服器共享的只是普通靜態資料(圖片、附件、視訊),不需要執行 suid、exec 等 許可權,掛載的這個檔案系統只能作為資料存取之用,無法執行程式,對於客戶端來講增加了安全性。例如: 很多木馬 篡改站點檔案都是由上傳入口上傳的程式到儲存目錄。然後執行的。

#通過mount -o指定掛載引數,禁止使用suid,exec,增加安全效能[root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt

驗證nfs的ro許可權

[root@nfs ~]# vim /etc/exports/data 172.16.1.0/24(rw,sync,all_squash)/pic  10.0.0.0/24(ro,sync,all_squash)# 掛載[root@web01 ~]# mount -t nfs 10.0.0.31:/pic /mnt# 檢視是否掛載[root@web01 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/sda3        19G  1.4G   18G   8% /devtmpfs        476M     0  476M   0% /devtmpfs           487M     0  487M   0% /dev/shmtmpfs           487M  7.7M  479M   2% /runtmpfs           487M     0  487M   0% /sys/fs/cgroup/dev/sda1       497M  120M  378M  25% /boottmpfs            98M     0   98M   0% /run/user/010.0.0.31:/pic   19G  1.4G   18G   8% /mnt# 建立檔案報錯[root@web01 ~]# touch /mnt/filetouch: cannot touch ‘/mnt/file’: Read-only file system# 檢視etab配置檔案是否生效[root@nfs ~]#  cat /var/lib/nfs/etab/pic	10.0.0.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,all_squash)/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和gid一樣[root@nfs ~]# groupadd www -g 666[root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M[root@backup ~]# groupadd www -g 666[root@backup ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M[root@web01 ~]# groupadd www -g 666[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M[root@web02 mnt]# groupadd www -g 666[root@web02 mnt]# useradd www -u 666 -g 666 -s /sbin/nologin -M# 1.統一apache服務使用者[root@web02 ~]# vim /etc/httpd/conf/httpd.conf## 修改前66 User apache67 Group apache## 修改後66 User www67 Group www# 2.統一nfs服務使用者[root@nfs ~]# vim /etc/exports/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)# 3.rsync服務的使用者[root@backup ~]# vim /etc/rsyncd.conf# 服務啟動的使用者uid = www# 服務啟動的使用者組gid = www

NFS小結

  • 1.NFS儲存優點
    • 1)NFS檔案系統簡單易用、方便部署、資料可靠、服務穩定、滿足中小企業需求。
    • 2)NFS檔案系統 記憶體放的資料都在檔案系統之上,所有資料都是能看得見。
  • 2.NFS儲存侷限
    • 1)存在單點故障, 如果構建高可用維護麻煩web->nfs()->backup
    • 2)NFS資料明文, 並不對資料做任何校 驗。
    • 3)客戶端掛載NFS服務沒有密碼驗證, 安全性一般(內網使用)
  • 3.NFS應用建議
    • 1)生產場景應將靜態資料儘可能往前端推, 減少後端儲存壓力
    • 2)必須將儲存裡的靜態資源通過CDN 快取jpg\png\mp4\avi\css\js
    • 3)如果沒有快取或架構本身歷史遺留問題太大, 在多儲存也無用