nfs文件儲存系統(tǒng)

nfs大綱

1.nfs是干什么
1.什么是NFS乳幸,NFS是Network File System的縮寫及網(wǎng)絡文件系統(tǒng)符欠。
2.NFS能干什么希柿,它的主要功能是通過局域網(wǎng)絡讓不同主機系統(tǒng)之間可以共享文件和目錄曾撤。
和Windows網(wǎng)絡共享很像
windows\linux\macos
3.為什么要使用NFS,NFS解決了什么問題巫湘?
解決多臺web靜態(tài)資源的共享(所有客戶端都掛載服務端,看到的數(shù)據(jù)都一樣)
解決多臺web靜態(tài)資源一致性(如果客戶端A刪除NFS服務上的test文件洞渤,客戶端B上也會看不見test文件)
解決多臺web磁盤空間的浪費(有用戶上傳圖片,就使用rsync進行一次同步)

需要注意的問題:
由于用戶請求靜態(tài)資源每次都需要web連接NFS服務獲取,那么勢必會帶來一定的網(wǎng)絡開銷护昧、以及網(wǎng)絡延時、所以增加NFS服務并不能給網(wǎng)站帶來訪問速度的提升。
如果希望對靜態(tài)資源進行加速浴捆,建議將靜態(tài)資源統(tǒng)一存放至NFS服務端选泻,便于統(tǒng)一推送至CDN,以此來實現(xiàn)靜態(tài)資源的加速窝撵。

CDN:將源站內容分發(fā)至最接近用戶的節(jié)點,使用戶可就近取得所需內容襟铭,提高用戶訪問的響應速度和成功率碌奉。

NFS共享存儲
分布式共享存儲: glusterfs fastdfs ceph

nfs沒什么用: 為什么要學?
    1.理解什么是共享存儲
    2.后面很多課程需要使用共享存儲   nfs
    3.簡單\容易理解\

2.nfs是怎么存數(shù)據(jù)

本地文件操作方式
1.當用戶執(zhí)行mkdir命令,BashShell無法完成該命令操作寒砖,會將其翻譯給內核赐劣。
2.Kernel內核解析完成后會驅動對應的磁盤設備,完成創(chuàng)建目錄的操作哩都。

NFS實現(xiàn)原理(需要先了解[程序|進程|線程])
1.NFS客戶端執(zhí)行增魁兼、刪等操作,客戶端會使用不同的函數(shù)對該操作進行封裝咐汞。
2.NFS客戶端會通過TCP/IP的方式傳遞給NFS服務端锌仅。
3.NFS服務端接收到請求后伊脓,會先調用portmap進程進行端口映射纯蛾。
4.nfsd進程用于判斷NFS客戶端是否擁有權限連接NFS服務端。
5.Rpc.mount進程判斷客戶端是否有對應的權限進行操作俄认。
6.idmap進程實現(xiàn)用戶映射和壓縮役拴。
7.NFS服務端將客戶端的函數(shù)轉換為本地能執(zhí)行的命令髓考,然后將命令傳遞至內核查蓉,由內核驅動硬件

注意: rpc是一個遠程過程調用,那么使用nfs必須有rpc服務

3.nfs怎么使用
安裝
yum install nfs-utils -y #依賴rpcbind軟件包
配置
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,all_squash)

準備共享目錄
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

啟動
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl enable nfs-server

客戶端測試掛載:
    [root@web01 ~]# yum install nfs-utils -y
    [root@web01 ~]# showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data 172.16.1.0/24
    [root@web01 ~]# mount -t nfs 172.16.1.31:/data /opt
    [root@web01 ~]# df -h

客戶端測試寫入
    [root@web01 opt]# mkdir dir
    [root@web01 opt]# ll
    total 0
    drwxr-xr-x. 2 nfsnobody nfsnobody 6 May 22 03:01 dir


怎么判斷nfs服務啟動異常:
    systemctl status nfs-server
    [root@nfs ~]# cat /var/lib/nfs/etab 
        #有記錄則代表共享的沒問題
        #無記錄則代表共享的有問題

使用nfs在共享一個/data1目錄,讓客戶端web01能通過172網(wǎng)段掛載到本地的/mnt目錄,并能寫入數(shù)據(jù)

服務端
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,all_squash)
/data1 172.16.1.0/24(rw,all_squash)

[root@nfs ~]# mkdir /data1
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data1/
[root@nfs ~]# systemctl restart nfs-server

客戶端
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data1 172.16.1.0/24
/data 172.16.1.0/24
[root@web01 ~]# mount -t nfs 172.16.1.31:/data1 /mnt/
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
172.16.1.31:/data 37G 3.8G 34G 11% /opt
172.16.1.31:/data1 37G 3.8G 34G 11% /mnt

數(shù)據(jù)到底在哪?
nfs服務器
有人說數(shù)據(jù)就在web上面? 錯誤 數(shù)據(jù)始終都是在存儲上面

希望開機自啟動:
#cat /etc/fstab
172.16.1.31:/data /opt nfs defaults 0 0

    如果當nfs故障
        開機狀態(tài): 那么客戶端輸入df -h 則會夯住
            解決方法: 強制卸載
            mount               #查看所有的掛載信息
            umount -lf /opt     #強制卸載
        重啟系統(tǒng): 會導致系統(tǒng)無法啟動
            單用戶: e  enforcing=0 init=/bin/bash   ctrl+x   
                    mount -o remount,rw /

NFS配置詳解

nfs共享參數(shù) 參數(shù)作用
rw* 讀寫權限
ro 只讀權限
root_squash 當NFS客戶端以root管理員訪問時凌蔬,映射為NFS服務器的匿名用戶(不常用)
no_root_squash 當NFS客戶端以root管理員訪問時坎弯,映射為NFS服務器的root管理員(不常用)
all_squash 無論NFS客戶端使用什么賬戶訪問囚灼,均映射為NFS服務器的匿名用戶(常用)
no_all_squash 無論NFS客戶端使用什么賬戶訪問,都不進行壓縮
sync* 同時將數(shù)據(jù)寫入到內存與硬盤中,保證不丟失數(shù)據(jù)
async 優(yōu)先將數(shù)據(jù)保存到內存破花,然后再寫入硬盤蹂喻;這樣效率更高,但可能會丟失數(shù)據(jù)
anonuid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)
anongid* 配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)

驗證: ro
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(ro,all_squash)
[root@nfs ~]# systemctl restart nfs

客戶端測試
[root@web01 opt]# touch file
touch: cannot touch 'file': Read-only file system

驗證: all_squash anonuid anongid
服務端操作
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u 666 -g 666 www
[root@nfs ~]# id www
uid=666(www) gid=666(www) groups=666(www)
[root@nfs ~]# chown -R www.www /data
[root@nfs ~]# systemctl restart nfs

客戶端掛載
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /opt
如果客戶端覺得看666屬主和屬組不爽,請執(zhí)行 groupadd 和useradd添加一個666的用戶
[root@web01 opt]# ll
drwxr-xr-x. 2 666 666 6 May 22 03:01 dir
-rw-r--r--. 1 666 666 0 May 22 07:00 file

[root@web01 opt]# groupadd -g 666 www
[root@web01 opt]# useradd -u 666 -g 666 www

[root@web01 opt]# ll
drwxr-xr-x. 2 www www 6 May 22 03:01 dir
-rw-r--r--. 1 www www 0 May 22 07:00 file

NFS案例實踐
準備3臺虛擬機服務器大磺,并且請按照要求搭建配置NFS服務。
NFS服務端(A)172.16.1.31
NFS客戶端(B)172.16.1.7
NFS客戶端(C)172.16.1.41
1.在NFS服務端(A)上共享/data/w(讀寫rw)及/data/r(只讀ro)
2.在NFS客戶端(B/C)上進行掛載測試

服務端:

1.配置共享
[root@nfs ~]# cat /etc/exports
/data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/r 172.16.1.0/24(ro,sync,all_squash,anonuid=666,anongid=666)

2.創(chuàng)建共享的目錄,以及用戶,并進行授權
[root@nfs ~]# mkdir /data/{r,w} -p
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u 666 -g 666 www
[root@nfs ~]# chown -R www.www /data/r/
[root@nfs ~]# chown -R www.www /data/w/

3.重啟服務
[root@nfs ~]# systemctl restart nfs-server

4.檢查共享是否成功
[root@nfs ~]# cat /var/lib/nfs/etab
/data/r 172.16.1.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,ro,secure,root_squash,all_squash)
/data/w 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 ~]# mount 172.16.1.31:/data/r /opt/
[root@web01 ~]# mount 172.16.1.31:/data/w /mnt/

測試寫:
[root@web01 mnt]# touch file123
[root@web01 mnt]# ls
file123

測試讀:
root@web01 ~]# cd /opt/
[root@web01 opt]# ls
[root@web01 opt]# touch file
touch: cannot touch 'file': Read-only file system

NFS存儲總結

1.NFS存儲優(yōu)點
1.NFS簡單易用蘸泻、方便部署、數(shù)據(jù)可靠、服務穩(wěn)定崩侠、滿足中小企業(yè)需求漆魔。
2.NFS的數(shù)據(jù)都在文件系統(tǒng)之上,所有數(shù)據(jù)都是能看得見。

2.NFS存儲局限
1.存在單點故障, 如果構建高可用維護麻煩
2.NFS數(shù)據(jù)都是明文,并不對數(shù)據(jù)做任何校驗改抡,也沒有密碼驗證(強烈建議內網(wǎng)使用)矢炼。

3.NFS應用建議
1.生產場景應將靜態(tài)數(shù)據(jù)(jpg\png\mp4\avi\css\js)盡可能放置CDN進行加速, 以此來減少后端存儲壓力
2.如果沒有緩存或架構、代碼等阿纤,本身歷史遺留問題太大句灌,在多存儲也沒意義

明天: sersync實時同步
案例: 實現(xiàn)web上傳視頻文件,實則是寫入NFS至存儲欠拾,當NFS存在新的數(shù)據(jù)則會實時的復制到備份服務器
rsync
nfs
sersync

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)

  Stale NFS file handle的解決方法
  https://dikar.iteye.com/blog/634862

nfs錯誤:
    [root@web01 ~]# mount -t nfs 10.0.0.31:/data /mnt/
    mount.nfs: access denied by server while mounting 10.0.0.31:/data
    你沒有權限訪問我的nfs服務器
    寫錯了共享的目錄名


nfs已掛載:
[root@web01 opt]# mkdir dir
mkdir: cannot create directory 'dir': Permission denied


nfs
[root@web01 ~]# showmount -e 172.16.1.31
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
    建議關閉掉 firewalld
    建議關閉掉 selinux
    加入開機自啟
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末胰锌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子藐窄,更是在濱河造成了極大的恐慌资昧,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荆忍,死亡現(xiàn)場離奇詭異格带,居然都是意外死亡,警方通過查閱死者的電腦和手機东揣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門践惑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嘶卧,你說我怎么就攤上這事尔觉。” “怎么了芥吟?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵侦铜,是天一觀的道長。 經(jīng)常有香客問我钟鸵,道長钉稍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任棺耍,我火速辦了婚禮贡未,結果婚禮上,老公的妹妹穿的比我還像新娘蒙袍。我一直安慰自己俊卤,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布害幅。 她就那樣靜靜地躺著消恍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪以现。 梳的紋絲不亂的頭發(fā)上狠怨,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天约啊,我揣著相機與錄音,去河邊找鬼佣赖。 笑死恰矩,一個胖子當著我的面吹牛,可吹牛的內容都是我干的茵汰。 我是一名探鬼主播枢里,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹂午!你這毒婦竟也來了栏豺?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤豆胸,失蹤者是張志新(化名)和其女友劉穎奥洼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晚胡,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡灵奖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了估盘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓷患。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖遣妥,靈堂內的尸體忽然破棺而出擅编,到底是詐尸還是另有隱情,我是刑警寧澤箫踩,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布爱态,位于F島的核電站,受9級特大地震影響境钟,放射性物質發(fā)生泄漏锦担。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一慨削、第九天 我趴在偏房一處隱蔽的房頂上張望洞渔。 院中可真熱鬧,春花似錦缚态、人聲如沸磁椒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衷快。三九已至宙橱,卻和暖如春姨俩,著一層夾襖步出監(jiān)牢的瞬間蘸拔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工环葵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留调窍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓张遭,卻偏偏與公主長得像邓萨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子菊卷,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容