01: 儲存技術與應用 iSCSI技術應用 、 udev配置 NFS網路檔案系統 、 Multipath多路徑 、 NFS網路檔案系統 、 udev配置
NSD CLUSTER DAY01
1 案例1:配置iSCSI服務
1.1 問題
本案例要求先搭建好一臺iSCSI伺服器,並將整個磁碟共享給客戶端:
- 伺服器上要額外配置一塊硬碟
- 服務端安裝target,並將新加的硬碟配置為iSCSI 的共享磁碟
- 在客戶端上安裝initiator,掛在伺服器iSCSI,要求實現開機自動掛載
1.2 方案
使用2臺RHEL7虛擬機器,其中一臺作為iSCSI伺服器(192.168.2.5)、另外一臺作為測試用的客戶機(192.168.2.100),如圖-1所示,主機網路地址配置如表-1所示。
圖-1
表-1 主機網路引數配置列表
在RHEL7系統中,預設通過targetcli軟體包提供iSCSI服務,因此需要在服務端安裝targetcli包並配置對應的服務,iSCSI服務主要配置選項如表-1所示。
表-2 iSCSI配置選項列表
客戶端掛載iSCSI伺服器:
- 客戶端需要安裝iscsi-initiator-utils軟體包
- 客戶端使用命令掛載後需要分割槽、格式化並進行掛載測試
1.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:安裝iSCSI伺服器軟體
1)使用yum安裝targetcli軟體包
- [[email protected] ~]# yum -y install targetcli
- .. ..
- [[email protected] ~]# yum info targetcli
- .. ..
步驟二:通過命令列配置iSCSI服務
1)真實主機準備底層儲存磁碟
真實主機使用virt-manager工具為proxy虛擬機器新增磁碟,如圖-2所示。
圖-2
雙擊開啟虛擬機器後新增磁碟裝置,如圖-3和圖-4所示。
圖-3
圖-4
登陸到192.168.2.5主機,為新新增的磁碟準備分割槽:
- [[email protected] ~]# parted /dev/vdb mklabel gpt
- [[email protected] ~]# parted /dev/vdb mkpart primary 1 100%
2)使用targetcli定義後端儲存
設定需要將哪個裝置共享給其他主機,這裡將/dev/vdb1設定為後端共享磁碟。
- [[email protected] ~]# targetcli
- /> ls
- /> backstores/block create store /dev/vdb1
- 備註:store為任意名稱
3)建立iqn物件
給iSCSI共享設定一個共享名稱,客戶端訪問時需要使用該共享名稱。
- /> /iscsi create iqn.2018-01.cn.tedu:server1
4) 授權客戶機訪問
類似於一個密碼,設定ACL訪問控制,擁有iqn.2018-01.cn.tedu:client1這個字串的客戶端才有許可權訪問伺服器。
- /> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/acls create iqn.2018-01.cn.tedu:client1
5) 繫結儲存
將iqn共享名稱(iqn.2018-01.cn.tedu:server1)與後端實際的儲存裝置(vdb)繫結。
- />iscsi/iqn.2018-01.cn.tedu:server1/tpg1/luns create /backstores/block/store
#注意:block後面的store必須與前面步驟2定義後端儲存create建立的名稱一致。
6) 儲存繫結服務監聽的地址,並儲存配置
- /> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/portals/ create 0.0.0.0
- /> saveconfig
- /> exit
步驟三:服務管理
1)啟動服務
- [[email protected] ~]# systemctl {start|restart|stop|status} target
- [[email protected] ~]# systemctl enable target
2)檢視埠資訊
- [[email protected] ~]# ss -utlnp | grep :3260
3)關閉防火牆與SELinux
- [[email protected] ~]# systemctl stop firewalld
- [[email protected] ~]# setenforce 0
步驟四:客戶端訪問(web1作為客戶端的角色)
1)客戶端安裝軟體並啟動服務
- [[email protected] ~]# yum -y install iscsi-initiator-utils
2)設定本機的iqn名稱
- [[email protected] ~]# vim /etc/iscsi/initiatorname.iscsi
- InitiatorName=iqn.2018-01.cn.tedu:client1
- 注意:必須跟伺服器上配置的ACL一致!
3)發現遠端target儲存
提示:參考man iscsiadm!
- [[email protected] ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
- [[email protected] ~]# iscsiadm --mode node --targetname iqn.2018-01.cn.tedu:server1 --portal 192.168.2.5:3260 --login
3)客戶端掛載iSCSI共享
- [[email protected] ~]# lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 9.3G 0 disk
- #多了一個sda裝置
- sr0 11:0 1 1024M 0 rom
- vda 252:0 0 20G 0 disk
- [[email protected] ~]# systemctl restart iscsi
4)分割槽、格式化、掛載
- [[email protected] ~]# parted /dev/sda mklabel gpt
- [[email protected] ~]# parted /dev/sda mkpart primary 1 800
- [[email protected] ~]# mkfs.xfs /dev/sda1
- [[email protected] ~]# mount /dev/sda1 /mnt
- [[email protected] ~]# umount /mnt
步驟四:附加課外實驗:多臺FTP或者http主機使用共享儲存。
這裡以FTP為例,web1和web2主機都安裝vsftpd軟體,使用統一的後端共享儲存裝置。
1) web1操作(延續前面步驟三的實驗):
- [[email protected] ~]# mkdir /var/ftp/
- [[email protected] ~]# mount /dev/sda1 /var/ftp/
- [[email protected] ~]# yum -y install vsftpd
- [[email protected] ~]# sed -i 's/^#anon/anon/' /etc/vsftpd/vsftpd.conf
備註:修改vsftpd配置檔案,開啟匿名上傳功能。將下面2行預設的註釋行開啟。
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
- [[email protected] ~]# chmod 777 /var/ftp/pub
- [[email protected] ~]# systemctl start vsftpd
- [[email protected] ~]# systemctl enable vsftpd
2) 真實主機訪問web1的FTP共享,並任意上傳一個檔案到FTP伺服器。
開啟真實主機瀏覽網路,如圖-5所示。
圖-5
輸入需要連線的伺服器協議與IP地址,如圖-6所示。
圖-6
連線到伺服器後,進入pub共享目錄,將真實主機的任意檔案拖拽到FTP的共享目錄下(pub目錄)。注意:僅pub目錄有讀寫許可權。
圖-7
3)當web1宕機後,web2主機可以繼續使用iscsi提供FTP共享服務。
Web1關閉vsftpd服務,解除安裝iscsi掛載。
- [[email protected] ~]# systemctl stop vsftpd
- [[email protected] ~]# umount /var/ftp
新增iSCSI共享(web2操作)。
- [[email protected] ~]# vim /etc/iscsi/initiatorname.iscsi
- InitiatorName=iqn.2018-01.cn.tedu:client1
- 注意:必須跟伺服器上配置的ACL一致!
- [[email protected] ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
- [[email protected] ~]# iscsiadm --mode node --targetname iqn.2018-01.cn.tedu:server1 --portal 192.168.2.5:3260 --login
安裝部署vsftpd軟體(web2操作)。
- [[email protected] ~]# yum -y install vsftpd
- [[email protected] ~]# sed -i 's/^#anon/anon/' /etc/vsftpd/vsftpd.conf
- [[email protected] ~]# chmod 777 /var/ftp/pub/
- [[email protected] ~]# systemctl start vsftpd
- [[email protected] ~]# systemctl enable vsftpd
4) 真實主機訪問web2的FTP共享,檢視共享裡現有的資料,並任意上傳一個新檔案到FTP伺服器。操作步驟參考圖-5至圖-7所示,注意修改對應的IP地址。
思考?
寫一個檢測ftp的指令碼,如果發現web1宕機後,web2自動mount掛載iscsi共享,自動啟動vsftpd服務。
2 案例2:部署Multipath多路徑環境
2.1 問題
通過Multipath,實現以下目標:
- 在共享儲存伺服器上配置iSCSI,為應用伺服器共享儲存空間
- 應用伺服器上配置iSCSI,發現遠端共享儲存
- 應用伺服器上配置Multipath,將相同的共享儲存對映為同一個名稱
2.2 方案
配置2臺虛擬機器,每臺虛擬機器均為兩塊網絡卡:
- eth1和eth3都可用於iSCSI儲存通訊
- 具體配置如表-3所示
表-3 各節點IP地址配置
多路徑示意圖,如圖-8所示。
圖-8
2.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:儲存伺服器上新增額外的磁碟(如果虛擬機器已經有磁碟,此步驟可以忽略)
使用KVM軟體新建(或修改)虛擬機器,為虛擬機器額外新增一塊硬碟。
步驟二:儲存伺服器上安裝並配置共享儲存(如果有iscsi共享,此步驟可用忽略)
1) 定義後端儲存
- [[email protected] ~]# targetcli
- /> ls
- /> backstores/block create /dev/vdb1
2)建立iqn物件
- /> /iscsi create iqn.2018-01.cn.tedu:server1
3) 授權客戶機訪問
- /> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/acls create iqn.2018-01.cn.tedu:client1
4) 繫結儲存
- />iscsi/iqn.2018-01.cn.tedu:server1/tpg1/luns create /backstores/block/iscsi_store
5) 繫結儲存繫結監聽地址,並儲存配置
- /> iscsi/iqn.2018-01.cn.tedu:server1/tpg1/portals/ create 0.0.0.0
- /> saveconfig
- /> exit
步驟三:在client伺服器上安裝並配置iSCSI客戶端
(前面的案例1已經完成的情況下,可以忽略此步驟)
1)安裝客戶端軟體
- [[email protected] ~]# yum list | grep iscsi
- iscsi-initiator-utils.x86_64 6.2.0.873-14.el6
- [[email protected] ~]# yum install -y iscsi-initiator-utils
2)發現儲存伺服器的共享磁碟
因為有兩條鏈路都可以連線到共享儲存,所以需要在兩條鏈路上都發現它。
注意:兩次發現使用的IP地址不同!
- [[email protected] ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.2.5 --discover
- 192.168.2.5:3260,1 iqn.2018-01.cn.tedu:client1
- [[email protected] ~]# iscsiadm --mode discoverydb --type sendtargets --portal 192.168.4.5 --discover
- 201.1.2.5:3260,1 iqn.2018-01.cn.tedu:client1
3)登陸共享儲存
只需要將iscsi服務重啟就可以自動登陸(就不需要再login了)。
在login之前,只能看到本地的儲存,登陸之後,將會多出兩塊新的硬碟。
- … …
- [[email protected] ~]# service iscsi restart
- 停止 iscsi: [確定]
- 正在啟動 iscsi: [確定]
- [[email protected] ~]# lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 20G 0 disk
- ├─sda1 8:1 0 20G 0 part
- sdb 8:0 0 20G 0 disk
- ├─sdb1 8:1 0 20G 0 part
- vda 252:0 0 20G 0 disk
- ├─vda1 252:1 0 1G 0 part /boot
提示:登陸的是同一個伺服器的同一個iSCSI,但客戶端看到的是兩個獨立的裝置,sda和sdb。其實,這兩個裝置是同一個裝置。
4)設定開機自啟動
iscsi用於自動login遠端儲存,iscsid是守護程序。
- [[email protected] ~]# systemctl enable iscsid
- [[email protected] ~]# systemctl enable iscsi
步驟四:配置Multipath多路徑
1)安裝多路徑軟體包
- [[email protected] ~]# yum list | grep multipath
- device-mapper-multipath.x86_64 0.4.9-111.el7 Server
- device-mapper-multipath-libs.i686 0.4.9-111.el7 Server
- device-mapper-multipath-libs.x86_64 0.4.9-111.el7 Server
- [[email protected] ~]# yum install -y device-mapper-multipath
2)生成配置檔案
- [[email protected] ~]# cd /usr/share/doc/device-mapper-multipath-0.4.9/
- [[email protected] ~]# ls multipath.conf
- [[email protected] ~]# cp multipath.conf /etc/multipath.conf
3)獲取wwid
登陸共享儲存後,系統多了兩塊硬碟,這兩塊硬碟實際上是同一個儲存裝置。應用伺服器使用哪個都可以,但是如果使用sdb時,sdb對應的鏈路出現故障,它不會自動切換到sda。
為了能夠實現系統自動選擇使用哪條鏈路,需要將這兩塊磁碟繫結為一個名稱。
通過磁碟的wwid來判定哪些磁碟是相同的。
取得一塊磁碟wwid的方法如下:
- [[email protected] ~]# /usr/lib/udev/scsi_id --whitelisted --device=/dev/sdb
- 360014059e8ba68638854e9093f3ba3a0
4)修改配置檔案
首先宣告自動發現多路徑:
- [[email protected] ~]# vim /etc/multipath.conf
- defaults {
- user_friendly_names yes
- find_multipaths yes
- }
然後在檔案的最後加入多路徑宣告,如果哪個儲存裝置的wwid和第(3)步獲取的wwid一樣,那麼,為其取一個別名,叫mpatha。
- multipaths {
- multipath {
- wwid "360014059e8ba68638854e9093f3ba3a0"
- alias mpatha
- }
- }
步驟五:啟用Multipath多路徑,並測試
1)啟動Multipath,並設定為開機啟動
- [[email protected] ~]# systemctl start multipathd
- [[email protected] ~]# systemctl enable multipathd
2)檢查多路徑裝置檔案
如果多路長設定成功,那麼將在/dev/mapper下面生成名為mpatha的裝置檔案:
- [[email protected] ~]# ls /dev/mapper/
- control mpatha mpatha1
3)對多路徑裝置檔案執行分割槽、格式化、掛載操作
提示:如果前面已經對iscsi做過分割槽操作,則這裡可以直接識別到mpatha1(就不需要再次分割槽了)。
- [[email protected] ~]# fdisk -cu /dev/mapper/mpatha
- Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
- Building a new DOS disklabel with disk identifier 0x205c887e.
- Changes will remain in memory only, until you decide to write them.
- After that, of course, the previous content won't be recoverable.
- Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
- Command (m for help): n #建立分割槽
- Command action
- e extended
- p primary partition (1-4)
- p #分割槽型別為主分割槽
- Partition number (1-4): 1 #分割槽編號為1
- First sector (2048-4194303, default 2048): #起始扇區回車
- Using default value 2048
- Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): #回車
- Using default value 4194303
- Command (m for help): w #儲存並退出
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
新的分割槽名稱應該是/dev/mapper/mpathap1,如果該檔案不存在,則執行以下命令進行配置的重新載入:
- [[email protected] ~]# ls /dev/mapper/ #再次檢視,將會看到新的分割槽
- control mpatha mpathap1
建立目錄並掛載:
- [[email protected] ~]# mkfs.xfs /dev/mapper/mpathap1
- [[email protected] ~]# mkdir /data
- [[email protected] ~]# mount /dev/mapper/mpathap1 /data/
- [[email protected] ~]# df -h /data/
- Filesystem Size Used Avail Use% Mounted on
- /dev/mapper/mpathap1 2.0G 3.0M 1.9G 1% /data
4)驗證多路徑
檢視多路徑,sda和sdb都是running狀態。
- [[email protected] ~]# multipath -rr
- reload: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
- size=9.3G features='0' hwhandler='0' wp=undef
- |-+- policy='service-time 0' prio=1 status=undef
- | `- 2:0:0:0 sda 8:0 active ready running
- `-+- policy='service-time 0' prio=1 status=undef
- `- 3:0:0:0 sdb 8:16 active ready running
關閉某個鏈路後,再次檢視效果,此時會發現sdb為執行失敗狀態。
- [[email protected] ~]# nmcli connection down eth1
- [[email protected] ~]# multipath -rr
- reject: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
- size=9.3G features='0' hwhandler='0' wp=undef
- |-+- policy='service-time 0' prio=0 status=undef
- | `- 2:0:0:0 sda 8:0 active undef running
- `-+- policy='service-time 0' prio=0 status=undef
- `- 3:0:0:0 sdb 8:16 active faulty running
使用-ll選項檢視,僅sda為有效執行狀態。
- [[email protected] ~]# multipath -ll
- reject: mpatha (360014059e8ba68638854e9093f3ba3a0) undef LIO-ORG ,store
- size=9.3G features='0' hwhandler='0' wp=undef
- `-+- policy='service-time 0' prio=0 status=undef
- `- 2:0:0:0 sda 8:0 active undef running
3 案例3:編寫udev規則
3.1 問題
編寫udev規則,實現以下目標:
- 當插入一個U盤時,該U盤自動出現一個連結稱為udisk
- U盤上的第1個分割槽名稱為udisk1,以此類推
- 終端上出現提示資訊”udisk plugged in”
3.2 方案
問題:載入一個USB裝置後,系統可能識別為sda也可能識別為sdb,能不能固定呢?
對於Linux kernel 2.6及更新的作業系統版本會將裝置的相關資訊動態寫入/sys檔案系統中,而udev程式可以通過讀取這些裝置系資訊,並根據自己的udev規則進行裝置管理器,實現如下功能:
- 處理裝置命名
- 決定要建立哪些裝置檔案或連結
- 決定如何設定屬性
- 決定觸發哪些事件
udev預設規則存放在/etc/udev/rules.d目錄下,通過修改此目錄下的規則實現裝置的命名、屬性、連結檔案等。
3.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫udev規則
1)準備USB裝置(如果使用真實機演示,下面為虛擬機器新增USB裝置可以忽略)
使用virt-manager為虛擬機器新增USB裝置,如圖-5所示。注意新增裝置時一定要選擇正確的USB裝置,圖-9僅是參考案例,每個人的USB品牌與型號都有可能不一樣!
圖-9
1)檢視裝置屬性
載入USB裝置的同時實時檢視裝置的相關屬性,可以使用monitor指令。
- [[email protected] ~]# udevadm monitor --property
如果裝置已經載入則無法使用monitor檢視相關屬性。可以使用下面的命令檢視裝置屬性。
- [[email protected] ~]# udevadm info --query=path --name=/dev/sda
- [[email protected] ~]# udevadm info --query=property --path=/block/sda
- [[email protected] ~]# udevadm info --query=all --attribute-walk --path=/block/sda
單獨檢視某個磁碟分割槽的屬性資訊。
- [[email protected] ~]# udevadm info --query=property --path=/block/sdada1
2)編寫udev規則檔案(實現插拔USB裝置時有螢幕提示資訊)
注意:修改規則檔案不能照抄,這裡的變數都是需要根據實際情況而修改的!!!
每個裝置的屬性都有所不同!!!一定要根據前面查詢的info資訊填寫。
- [[email protected] ~]# vim /etc/udev/rules.d/70-usb.rules
- SUBSYSTEMS=="usb",ATTRS{manufacturer}=="TOSHIBA",ATTRS{serial}=="60A44CB4665EEE4133500001",RUN+="/usr/bin/wall udisk plugged in"
在virt-manager中刪除、新增USB裝置,測試自己的udev規則是否成功。
排錯方法:通過檢視/var/log/messages日誌檔案排錯。
3)繼續修改規則檔案(實現給分割槽命名)
- [[email protected] ~]# udevadm info --query=property --path=/block/sdb/sdb1
- [[email protected] ~]# /etc/udev/rules.d/70-usb.rules
- ACTION=="add",ENV{ID_VENDOR}=="TOSHIBA",ENV{DEVTYPE}=="partition",ENV{ID_SERIAL_SHORT}=="60A44CB4665EEE4133500001",SYMLINK="usb%n"
在virt-manager中刪除、新增USB裝置,測試自己的udev規則是否成功。
4)繼續修改規則檔案(修改裝置所有者和許可權)
- [[email protected] ~]# /etc/udev/rules.d/70-usb.rules
- ACTION=="add",ENV{ID_VENDOR}=="TOSHIBA",ENV{DEVTYPE}=="partition",ENV{ID_SERIAL_SHORT}=="60A44CB4665EEE4133500001",SYMLINK="usb%n",OWNER="root",GROUP="root",MODE="0644"
在virt-manager中刪除、新增USB裝置,測試自己的udev規則是否成功。
5)繼續修改規則檔案(插拔U盤等於啟停服務)
注意:啟動服務的程式systemctl,必須使用絕對路徑。
- [[email protected] ~]# /etc/udev/rules.d/70-usb.rules
- ACTION=="add",ENV{ID_VENDOR}=="TOSHIBA",ENV{ID_SERIAL_SHORT}=="60A44CB4665EEE4133500001",RUN+="/usr/bin/systemctl start httpd"
- ACTION=="remove",ENV{ID_VENDOR}=="TOSHIBA",ENV{ID_SERIAL_SHORT}=="60A44CB4665EEE4133500001",RUN+="/usr/bin/systemctl stop httpd"
在virt-manager中刪除、新增USB裝置,測試自己的udev規則是否成功。
總結知識點:
udev規則檔案,常見指令操作符如表-4所示。
表-4 udev常見指令操作符
udev常用替代變數:
- %k:核心所識別出來的裝置名,如sdb1
- %n:裝置的核心編號,如sda3中的3
- %p:裝置路徑,如/sys/block/sdb/sdb1
- %%:%符號本身
4 案例4:配置並訪問NFS共享
4.1 問題
伺服器利用NFS機制釋出2個共享目錄,要求如下:
- 將目錄/root共享給192.168.2.100,客戶機的root使用者有許可權寫入
- 將/usr/src目錄共享給192.168.2.0/24網段,只開放讀取許可權
從客戶機訪問NFS共享:
- 分別查詢/掛載上述NFS共享目錄
- 檢視掛載點目錄,並測試是否有寫入許可權
4.2 方案
使用2臺RHEL7虛擬機器,其中一臺作為NFS共享伺服器(192.168.2.5)、另外一臺作為測試用的Linux客戶機(192.168.2.100),如圖-10所示。
圖-10
NFS共享的配置檔案:/etc/exports 。
配置記錄格式:資料夾路徑 客戶地址1(控制引數.. ..) 客戶地址2(.. ..) 。
4.3 步驟
實現此案例需要按照如下步驟進行。
步驟一:配置NFS伺服器,釋出指定的共享
1)確認服務端程式、準備共享目錄
軟體包nfs-utils用來提供NFS共享服務及相關工具,而軟體包rpcbind用來提供RPC協議的支援,這兩個包在RHEL7系統中一般都是預設安裝的:
- [[email protected] ~]# rpm -q nfs-utils rpcbind
- nfs-utils-1.3.0-0.48.el7.x86_64
- rpcbind-0.2.0-42.el7.x86_64
根據本例的要求,需要作為NFS共享釋出的有/root、/usr/src這兩個目錄:
- [[email protected] ~]# ls -ld /root /usr/src/
- dr-xr-x---. 35 root root 4096 1月 15 18:52 /root
- drwxrwxr-x+ 4 root root 4096 1月 15 17:35 /usr/src/
2)修改/etc/exports檔案,新增共享目錄設定
預設情況下,來自NFS客戶端的root使用者會被自動降權為普通使用者,若要保留其root許可權,注意應新增no_root_squash控制引數(沒有該引數,預設root會被自動降級為普通賬戶);另外,限制只讀的引數為ro、可讀可寫為rw,相關配置操作如下所示:
- [[email protected] ~]# vim /etc/exports
- /root 192.168.2.100(rw,no_root_squash)
- /usr/src 192.168.2.0/24(ro)
3)啟動NFS共享相關服務,確認共享列表
依次啟動rpcbiind、nfs服務:
- [[email protected] ~]# systemctl restart rpcbind ; systemctl enable rpcbind
- [[email protected] ~]# systemctl restart nfs ; systemctl enable nfs
使用showmount命令檢視本機發布的NFS共享列表:
- [[email protected] ~]# showmount -e localhost
- Export list for localhost:
- /usr/src 192.168.2.0/24
- /root 192.168.2.100
步驟二:從客戶機訪問NFS共享
1)啟用NFS共享支援服務
客戶機訪問NFS共享也需要rpcbind服務的支援,需確保此服務已開啟:
- [[email protected] ~]# systemctl restart rpcbind ; systemctl enable rpcbind
2)檢視伺服器提供的NFS共享列表
- [[email protected] ~]# showmount -e 192.168.2.5
- Export list for 192.168.2.5:
- /usr/src 192.168.2.0/24
- /root 192.168.2.100
3)從客戶機192.168.2.100訪問兩個NFS共享,並驗證許可權
將遠端的NFS共享/root掛載到本地的/root5資料夾,並驗證可讀可寫:
- [[email protected] ~]# mkdir /root5 //建立掛載點
- [[email protected] ~]# mount 192.168.2.5:/root /root5 //掛載NFS共享目錄
- [[email protected] ~]# df -hT /root5 //確認掛載結果
- Filesystem Type Size Used Avail Use% Mounted on
- 192.168.2.5:/root nfs 50G 15G 33G 31% /root5
- [[email protected] ~]# cd /root5 //切換到掛載點
- [[email protected] root5]# echo "NFS Write Test" > test.txt //測試寫入檔案
- [[email protected] root5]# cat test.txt //測試檢視檔案
- NFS Write Test
將遠端的NFS共享/usr/src掛載到本地的/mnt/nfsdir,並驗證只讀:
- [[email protected] ~]# mkdir /mnt/nfsdir //建立掛載點
- [[email protected] ~]# mount 192.168.2.5:/usr/src /mnt/nfsdir/ //掛載NFS共享目錄
- [[email protected] ~]# df -hT /mnt/nfsdir/ //確認掛載結果
- Filesystem Type Size Used Avail Use% Mounted on
- 192.168.2.5:/usr/src nfs 50G 15G 33G 31% /mnt/nfsdir
- [[email protected] ~]# cd /mnt/nfsdir/ //切換到掛載點
- [[email protected] nfsdir]# ls //讀取目錄列表
- debug install.log kernels test.txt
- [[email protected] nfsdir]# echo "Write Test." > pc.txt //嘗試寫入檔案失敗
- -bash: pc.txt: 只讀檔案系統
!!!! 如果從未授權的客戶機訪問NFS共享,將會被拒絕。比如從NFS伺服器本機嘗試訪問自己釋出的/root共享(只允許192.168.2.100訪問),結果如下所示:
- [[email protected] ~]# mkdir /root5
- [[email protected] ~]# mount 192.168.2.5:/root /root5
- mount.nfs: access denied by server while mounting 192.168.2.5:/root
4)設定永久掛載
- [[email protected] ~]# vim /etc/fstab
- .. ..
- 192.168.2.5:/usr/src nfsdir nfs default,ro 0 0
- 192.168.2.5:/root root5 nfs default 0 0