20171016 網(wǎng)絡(luò)文件共享(二) NFS服務(wù)

  • NFS服務(wù)介紹
  • NFS配置文件
  • NFS工具
  • 自動(dòng)掛載
  • 實(shí)驗(yàn):實(shí)現(xiàn)基于NFS共享的LAMP wordpress的應(yīng)用

一猜嘱、NFS服務(wù)介紹

(一)NFS簡(jiǎn)介

  • NFS(Network File System):網(wǎng)絡(luò)文件系統(tǒng)熊咽,用戶和程序可以像訪問本地文件一樣訪問遠(yuǎn)端系統(tǒng)上的文件

  • NFS基于RPC(Remote Procedure Call)遠(yuǎn)程過程調(diào)用實(shí)現(xiàn)蓖墅,RPC基于C/S架構(gòu)實(shí)現(xiàn)

  • NFS優(yōu)勢(shì):節(jié)省本地存儲(chǔ)空間

  • NFS發(fā)展:目前為v4版本铣墨,實(shí)現(xiàn)了偽根秋柄,增強(qiáng)了安全特性(kerberos)

(二)NFS服務(wù)

  • 軟件包:nfs-utils益涧,默認(rèn)系統(tǒng)安裝

  • Kernel支持:nfs.ko

  • 服務(wù)開啟锹杈、關(guān)閉

    • CentOS 7:systemctl start|stop nfs-server
    • CentOS 6: service nfs start|stop
  • 端口:2049(nfsd)两芳,其它端口由portmap/rpcbind(111)分配

    • 使用ss -ntlp命令查看端口摔寨,端口111的進(jìn)程為rpcbind
    • 使用rpcinfo -p查看rpc注冊(cè)程序,端口111的進(jìn)程為portmapper
    • CentOS6開始portmap進(jìn)程由rpcbind代替
  • 配置文件:/etc/exports, /etc/exports.d/*.exports

  • 相關(guān)軟件包:rpcbind(必須)怖辆,tcp_wrappers

  • NFS服務(wù)主要進(jìn)程

    • rpc.nfsd:最主要的NFS進(jìn)程祷肯,管理客戶端是否可登錄
    • rpc.mountd:掛載和卸載NFS文件系統(tǒng),包括權(quán)限管理
    • rpc.lockd:非必要疗隶,管理文件鎖佑笋,避免同時(shí)寫出錯(cuò)
    • rpc.statd:非必要,檢查文件一致性斑鼻,可修復(fù)文件
  • 日志:/var/lib/nfs/

二蒋纬、NFS配置文件

(一)配置文件格式

  • 格式:/dir 主機(jī)1(opt1,opt2) 主機(jī)2(opt1,opt2)...

  • /dir: 共享目錄路徑

  • 主機(jī)格式

    • 單個(gè)主機(jī):ipv4, ipv6, FQDN
    • IP networks:兩種掩碼格式均支持
      172.18.0.0/255.255.0.0
      172.18.0.0/16
    • wildcards:主機(jī)名通配,例如*.magedu.com坚弱,不能應(yīng)用于IP地址
    • anonymous:表示使用*通配所有客戶端
  • 每個(gè)條目指定目錄導(dǎo)出到的哪些主機(jī)蜀备,及相關(guān)的權(quán)限和選項(xiàng)

    • 默認(rèn)選項(xiàng):(ro,sync,root_squash,no_all_squash)
    • ro,rw:只讀和讀寫
    • async:異步,數(shù)據(jù)變化后不立即寫磁盤荒叶,性能高
    • sync:同步碾阁,數(shù)據(jù)在請(qǐng)求時(shí)立即寫入共享,安全性高
    • no_all_squash:保留遠(yuǎn)程用戶建立共享文件的UID和GID
    • all_squash:所有遠(yuǎn)程用戶(包括root)都映射成nfsnobody
    • root_squash:遠(yuǎn)程root映射為nfsnobody些楣,UID為65534
    • no_root_squash:遠(yuǎn)程root映射成root用戶脂凶,優(yōu)先級(jí)低于all_squash
    • anonuid和anongid:指明匿名用戶映射為特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用

(二)實(shí)驗(yàn)1:建立NFS共享目錄/app/nfsfile1, /app/nfsfile2

  • 實(shí)驗(yàn)要求
    /app/nfsfile1目錄:192.168.136.0網(wǎng)段的主機(jī)可以登錄愁茁,支持讀寫蚕钦,所有用戶都映射為testuser
    /app/nfsfile2 目錄:只有192.168.136.129主機(jī)可以登錄,支持讀寫鹅很,遠(yuǎn)程root映射為root用戶

  • 實(shí)驗(yàn)步驟:

// 建立testuser用戶
useradd testuser
id testuser
uid=1002(testuser) gid=1002(testuser) groups=1002(testuser)

// 編輯NFS服務(wù)配置文件
vim /etc/exports.d/nfsfile1.exports
/app/nfsfile1 192.168.136.0/24(rw,all_squash,anonuid=1002,anongid=1002)

vim /etc/exports.d/nfsfile2.exports
/app/nfsfile2 192.168.136.129(rw,no_root_squash)

// 建立相關(guān)共享文件目錄
mkdir /app/nfsfile1
mkdir /app/nfsfile2
touch /app/nfsfile1/file1
touch /app/nfsfile2/file2
setfacl -R -m u:testuser:rwx /app/nfsfile1

// 重新載入配置
exportfs -r
exportfs -v
  • 實(shí)驗(yàn)測(cè)試:

    • 掛載共享目錄/app/nfsfile1嘶居,可以看到root和普通用戶都映射為testuser用戶(uid=1002, gid=1002)
    • 掛載共享目錄/app/nfsfile2,可以看到非192.168.136.129的主機(jī)不能成功掛載促煮;掛載成功后邮屁,root用戶沒有被映射為nobody,而普通用戶由于之前在NFS服務(wù)器上未設(shè)置寫權(quán)限菠齿,無權(quán)建立文件佑吝,說明NFS服務(wù)支持讀寫需要NFS服務(wù)和服務(wù)器文件系統(tǒng)兩方面同時(shí)授權(quán)才可以

(三)實(shí)驗(yàn)2:實(shí)現(xiàn)NFS偽根

  • NFS客戶端通常需要分別掛載NFS服務(wù)器上的共享目錄

  • 在NFS服務(wù)器建立偽根目錄,將需要共享的目錄全部掛載到偽根目錄上泞当,即可實(shí)現(xiàn)NFS客戶端一次性將不同目錄掛載到一個(gè)掛載點(diǎn)上

  • 實(shí)驗(yàn):通過NFS偽根一次性掛載共享目錄/app/ftpsite和/var/log

// 建立偽根目錄
mkdir /exports
mkdir /exports/ftpsite
mkdir /exports/log

// 將共享目錄掛載到偽根目錄的子目錄
mount -B /app/ftpsite /exports/ftpsite/
mount -B /var/log /exports/log/
setfacl -m u:nfsnobody:rwx /app/ftpsite     // 給遠(yuǎn)程主機(jī)root用戶開放寫權(quán)限

// 編輯配置文件
vim /etc/exports
/exports *(fsid=0,rw,crossmnt)
/exports/ftpsite *(rw)
/exports/log    *(ro)

// 配置文件生效
exportfs -r

可以看到迹蛤,/exports目錄充當(dāng)了偽根民珍,實(shí)現(xiàn)多個(gè)目錄一次掛載襟士,并且每個(gè)目錄的配置都生效了:ftpsite目錄可以寫入盗飒,log目錄不可以寫入文件

三、NFS工具

  • rpcinfo

    • rpcinfo -p hostname:詳細(xì)列明RPC注冊(cè)程序
    • rpcinfo -s hostname:簡(jiǎn)略列明RPC注冊(cè)程序
  • exportfs

    • -v:查看本機(jī)所有NFS共享
    • -r:重讀配置文件并共享目錄
    • -a:輸出本機(jī)所有共享
    • -au:停止本機(jī)所有共享
  • showmount -e hostname:顯示遠(yuǎn)程主機(jī)NFS共享目錄

四陋桂、自動(dòng)掛載

(一)autofs服務(wù)簡(jiǎn)介

  • autofs服務(wù):按需要掛載逆趣,在空閑時(shí)自動(dòng)卸載
  • 由autofs包提供
  • 自動(dòng)掛載的配置文件:/etc/auto.master
  • 文件系統(tǒng)在失活的指定間隔5分鐘后會(huì)自動(dòng)卸載

(二)autofs配置

(1)相對(duì)路徑描述
  • 格式:
    /etc/auto.master文件格式:掛載點(diǎn)的目錄名 /etc/auto.direct
    /etc/auto.direct文件格式:掛載點(diǎn)的基名 被掛載目錄或設(shè)備
    注釋:/etc/auto.direct文件僅為示例,文件名稱沒有要求

  • 相對(duì)路徑時(shí)支持含通配符的目錄名:* server:/export/&

(2)絕對(duì)路徑描述
  • 格式:
    /etc/auto.master文件格式:/- /etc/auto.direct
    /etc/auto.direct文件格式:掛載點(diǎn)路徑 被掛載目錄或設(shè)備
(3)實(shí)驗(yàn):利用autofs實(shí)現(xiàn)遠(yuǎn)程家目錄的自動(dòng)掛載
  • 本實(shí)驗(yàn)由2臺(tái)主機(jī)完成:
    主機(jī)1:NFS服務(wù)器
    主機(jī)2:NFS客戶端嗜历,安裝autofs服務(wù)宣渗,CentOS 7系統(tǒng)
    主機(jī)3:NFS客戶端,安裝autofs服務(wù)梨州,CentOS 6系統(tǒng)

  • 步驟1:NFS服務(wù)器上設(shè)置共享家目錄

mkdir -p /app/homedir/{wang,mage}
cp -r /etc/skel/.[^.]* /app/homedir/wang/
cp -r /etc/skel/.[^.]* /app/homedir/mage/
  • 步驟2:查詢NFS客戶端上用戶wang和mage的uid和gid
// 主機(jī)2上的用戶ID情況
id wang
uid=1001(wang) gid=1001(wang) groups=1001(wang)
id mage
uid=1002(mage) gid=1002(mage) groups=1002(mage)
// 主機(jī)3上的用戶ID情況
id wang
uid=502(wang) gid=502(wang) groups=502(wang)
id mage
uid=503(mage) gid=503(mage) groups=503(mage)
  • 步驟3:NFS服務(wù)器上根據(jù)不同系統(tǒng)的用戶ID情況痕囱,分別給共享家目錄添加權(quán)限
useradd -u 1001 wang
useradd -u 1002 mage
useradd -u 502 wang6
useradd -u 503 mage6
setfacl -R -m u:wang:rwx /app/homedir/wang/
setfacl -R -m u:wang6:rwx /app/homedir/wang/
setfacl -R -m u:mage:rwx /app/homedir/mage/
setfacl -R -m u:mage6:rwx /app/homedir/mage/
  • 步驟4:NFS服務(wù)器上編輯NFS配置文件并更新讀入配置
vim /etc/exports.d/wang.exports
/app/homedir/wang *(rw)
vim /etc/exports.d/mage.exports
/app/homedir/mage *(rw)

exportfs -r
  • 步驟5:NFS客戶端上配置autofs服務(wù)
// 兩臺(tái)主機(jī)均執(zhí)行以下操作
vim /etc/auto.master
/home   /etc/auto.direct             // 添加一行
vim /etc/auto.direct
* 192.168.136.230:/app/homedir/&     // 添加一行
// 按照系統(tǒng)執(zhí)行
systemctl restart autofs             // CentOS 7
service autofs restart               // CentOS 6
  • 測(cè)試:

    • 在主機(jī)2(CentOS 7)上進(jìn)入/home/wang目錄,切換至wang賬號(hào)暴匠,建立wangfile文件
    • 在主機(jī)3(CentOS 6)上進(jìn)入/home/wang目錄鞍恢,可以看到wangfile文件,但由于本機(jī)沒有uid=1001的賬號(hào)每窖,故UID直接顯示數(shù)字
    • 在主機(jī)3(CentOS 6)上進(jìn)入/home/mage目錄帮掉,切換至mage賬號(hào),建立magefile文件
    • 在主機(jī)2(CentOS 7)上進(jìn)入/home/mage目錄窒典,可以看到magefile文件蟆炊,但由于本機(jī)沒有uid=503的賬號(hào),故UID直接顯示數(shù)字
    • 使用NFS建立遠(yuǎn)程家目錄瀑志,如果可能涩搓,最好統(tǒng)一不同系統(tǒng)下相同用戶的uid,便于后期管理

五劈猪、實(shí)驗(yàn):實(shí)現(xiàn)基于NFS共享的LAMP wordpress的應(yīng)用

(一)實(shí)驗(yàn)環(huán)境:本實(shí)驗(yàn)需要4臺(tái)主機(jī)

  • 主機(jī)1:httpd服務(wù)器1缩膝,IP: 192.168.136.230
  • 主機(jī)2:httpd服務(wù)器2,兼做mysql數(shù)據(jù)庫(kù)岸霹,IP: 192.168.136.130
  • 主機(jī)3:NFS服務(wù)器疾层,存儲(chǔ)httpd服務(wù)器網(wǎng)頁(yè)數(shù)據(jù),包含WordPress應(yīng)用贡避,IP: 192.168.136.229
  • 主機(jī)4:DNS服務(wù)器痛黎,IP: 192.168.136.129

(二)步驟1:在主機(jī)3上配置nfs服務(wù)

mkdir -p /app/www/html
setfacl -R -m u:apache:rwx /app/www/html
service nfs start
vim /etc/exports
/app/www/html 192.168.136.0/24(rw,all_squash,anonuid=48,anongid=48)
exportfs -r
exportfs -v

(三)步驟2:在主機(jī)1, 2上配置httpd服務(wù),安裝php-fpm

// 以下步驟在主機(jī)1, 2上操作相同
yum install httpd php-fpm
vim /etc/fstab

vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1向代理
systemctl start php-fpm.service 
systemctl start httpd

(三)步驟3:在主機(jī)2上安裝mysql服務(wù)

yum install mariadb-server
systemctl start mariadb
mysql_secure_installation

(四)步驟4:在主機(jī)3的httpd共享目錄上測(cè)試與php與mysql的連接

vim /var/www/html/index.php
<?php
$mysqli=new mysqli("192.168.136.130","root","centos");
if(mysqli_connect_errno()){
  echo "連接數(shù)據(jù)庫(kù)失敗!";
  $mysqli=null;
  exit;
}
echo "連接數(shù)據(jù)庫(kù)成功!";
$mysqli->close();
phpinfo();
?>

(五)步驟5:在主機(jī)3的httpd共享目錄上安裝WordPress

tar -xvf wordpress-4.8.1-zh_CN.tar.gz -C /var/www/html/

(六)步驟6:在主機(jī)4上實(shí)現(xiàn)DNS服務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末刮吧,一起剝皮案震驚了整個(gè)濱河市湖饱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌杀捻,老刑警劉巖井厌,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡仅仆,警方通過查閱死者的電腦和手機(jī)器赞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墓拜,“玉大人港柜,你說我怎么就攤上這事】劝瘢” “怎么了夏醉?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)涌韩。 經(jīng)常有香客問我畔柔,道長(zhǎng),這世上最難降的妖魔是什么臣樱? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任靶擦,我火速辦了婚禮,結(jié)果婚禮上擎淤,老公的妹妹穿的比我還像新娘奢啥。我一直安慰自己,他們只是感情好嘴拢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布桩盲。 她就那樣靜靜地躺著,像睡著了一般席吴。 火紅的嫁衣襯著肌膚如雪赌结。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天孝冒,我揣著相機(jī)與錄音柬姚,去河邊找鬼。 笑死庄涡,一個(gè)胖子當(dāng)著我的面吹牛量承,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穴店,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼撕捍,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了泣洞?” 一聲冷哼從身側(cè)響起忧风,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎球凰,沒想到半個(gè)月后狮腿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腿宰,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年缘厢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吃度。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昧绣,死狀恐怖规肴,靈堂內(nèi)的尸體忽然破棺而出捶闸,到底是詐尸還是另有隱情夜畴,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布删壮,位于F島的核電站贪绘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏央碟。R本人自食惡果不足惜税灌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亿虽。 院中可真熱鬧菱涤,春花似錦、人聲如沸洛勉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)收毫。三九已至攻走,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間此再,已是汗流浹背昔搂。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留输拇,地道東北人摘符。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像策吠,于是被迫代替她去往敵國(guó)和親逛裤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容