歡迎您光臨本站 註冊首頁

Solaris的NFS使用手冊(網路共享)

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

所有的測試環境都是sun的solaris系統。

1、理解nfs伺服器和客戶端功能。

nfs是sun公司來建立來使用tcp/ip協議以及sun的遠程調用和外部數據表示規範的產品。nfs的使用非常方便,也比較可靠。他具有在不同操作系統之間共享文件的能力。
nfs伺服器可以使用nfs來讓其他遠程機器共享它的本地資源。nfs客戶機是訪問nfs伺服器的共享資源的機器。其實在實際工作中,一台主機即可以是nfs伺服器,也可以是nfs客戶機。他們可以互相共享和訪問。
只要你能理解nfs伺服器和nfs客戶機之間的不同。剩下的就很easy了。

2、 nfs伺服器和nfs客戶機區別。
2、1 solaris使用分散式文件系統或dfs命令共享資源。共享資源可以手動和自動設置。
nfs伺服器運行兩個守侯進程:mountd 和 nfsd。
用到的文件是:
/etc/rc3.d/S15nfs.server
/etc/dfs/dfstab
/etc/dfs/sharetab
/etc/rmtab
nfs伺服器使用命令是:share unshare shareall unshareall dfshares dfmounts

nfs客戶機上運行的守侯進程是:statd 和 lockd。
用到的文件是:
/etc/vfstab
/etc/mnttab
nfs客戶機使用命令是:mount umount mountall umountall showmount

2、2 nfs伺服器設置
nfs 伺服器需要運行兩個守侯進程mountd和nfsd來工作。當nfs客戶機試圖訪問一個遠程的nfs伺服器資源。nfs客戶機通過mount命令請求與 nfs伺服器的mountd守侯進程進行連接。當nfs伺服器響應客戶機時候,返回給可戶機一個信息。客戶機把這個信息寫到本地的/etc/mnttab 文件中。這個信息是伺服器中共享文件和目錄的信息。它是資源信息的編碼:磁碟設備號、節點生成號、節點號等。這個是唯一的。
一旦可戶機得到請求信息,nfs伺服器上的mountd進程就會在伺服器本地的/etc/rmtab文件中添加一條信息。這是為了保持對當前載入可戶機上文件的跟蹤。這個文件為每一個被載入資源添加一個條目,格式是:
remote hostname: local filename name

注意:mountd每一次重新啟動和可戶機發一個卸載請求,都會更新伺服器的/etc/rmtab文件中的舊條目。

2、3 共享設置命令。
明白了以上的道理,下面說具體的操作了。nfs伺服器使用/usr/sbin/share命令為客戶機共享資源。
命令詳解:
# share ---顯示所有可以安裝的資源,不管它是否已經被安裝。
# share [ -F filesystem ] [ -o options ] [-d description ] pathname-to-resource
---指定共享文件。
* -F file system type 指定被公享的文件系統類型。
* -o options 指定客戶對資源訪問的類型。
* -d description 功享資源的簡單描述。當你share命令不帶任何參數運行,他就會被顯示。
* pathname-to-resource 在伺服器上共享的資源名字。
------------------------------------------------------
*-o 指定了允許客戶訪問共享資源的用戶也許可權。具體如下:
rw 表示用戶可讀/寫,是默認植。
rw=client1:client2 指定用戶可以有讀/寫許可權。可以有很多用戶,用冒號分隔。
ro 表示只讀。
ro=client1:client2 指定用戶client1和client2隻讀。client1可以是主機名,也可以是ip地址,或者一個網段。例如:ro=@202.99.88.0/24
root=client:client2 指定client1和client2上的root用戶對共享資源有超級用戶的許可權。但是,他的優先順序小於nfs伺服器的本地許可權。

例如:用戶peng有個目錄/exprot/home/games要共享。
# share -F nfs -o rw=lnx3000:race , ro=@202.88.99.0/24:sune450 ,root=mmmmn -d "i love MM !" /export/home/peng/games
運行結果:共享/exprot/home/peng/games目錄,名字是lnx3000和race的兩台主機有讀/寫許可權;202.88.99.0這個 c類網的機器和sun450這個主機只有讀的許可權;mmmmn這台主機的root用戶可以對共享資源有超級用戶訪問許可權。但是聲名一點,要是我給共享目錄 /exprot/home/peng/games目錄只讀,mmmmn的root許可權也沒有用,只能只讀。因為伺服器本地許可權大於任何share的許可權。。

取消share資源。
# unshare [ -F nfs ] path-to-resource
* -F nfs 指定系統類型,默認。
* path-to-resource 指定共享路徑。
例如:
# unshare /export/home/peng/games
取消這個共享資源了。

2、4 開機自動共享資源。
以上的命令方法,在機器重新啟動的時候,設置消失。如何保留和開機自動啟動nfs共享。我們可以用/etc/dfs/dfstab文件來實現自動共享文件。只要主機啟動進入運行級別3,nfs資源共享自動啟動。
1、編輯/etc/dfs/dfstab文件,添加:
share [ -F filesystem ] [ -o options ] [-d description ] pathname-to-resource
-----這個和命令行是一樣的。。。
2、# /etc/init.d/nfs.server start
這樣就ok了。

3、手工快速命令。
# shareall --共享所有列在/etc/dfs/dfstab中的共享資源。
# unshareall --取消所有列在/etc/dfs/dfstab中的共享資源。

2、5 資源查看。
# dfshares
用以查看伺服器的共享資源 。輸入格式如下:
resource server access transprot
* resource 可被遠程調用的資源的主機和路徑名。
* server 指定資源的系統名稱。
* access 伺服器指定的許可權,默認是rw,顯示為「-」。
* transport 指定共享資源的埠。

# dfmounts命令
顯示伺服器上查看共享資源被利用的狀況,輸出格式如下:
RESOURCE SERVER PATHNAME CLIENTS
* resource 共享資料名稱。
* server pathname 共享資料目錄。
* client 連接的客戶端。

# nfsstat
看nfs的全部狀態

3、nfs客戶機設置。
安裝好nfs伺服器后,就可以用客戶端使用共享資料了。首先要檢測nfs伺服器,然後安裝。

3、1 檢測nfs伺服器。
# showmount [ -ade ] <hostname>
* -a 顯示已經已經使用的資源和來自哪個nfs伺服器。
* -d 顯示已經被遠程安裝的資源。
* -e 顯示可以被安裝的可以資源。一般用-e來查看遠程主機的可以資源。

3、2 建立共享。
# mount [ -F nfs ] [ -o options ] path-to-resource path-to-local-mount-point
* -F nfs 指定共享文件系統,默認的。沒必要指定。
* -o options 指定選項,例如許可權。默認rw,可讀/寫。也可以ro--只讀。
* path-to-rescource 指定nfs伺服器的主機名和共享資源路徑。
* path-to-local-mount-point 指定共享資源在本地的mount點。

例如:
# mkdir /export/home/games
# mount peng:/export/home/peng/games /exprot/home/games
共享遠程主機peng的/export/home/peng/games目錄,可讀寫,掛接在本地的/exprot/home/games目錄上。

3、3取消共享。
# umount [-F nfs] remote-path-to-resource path-to-local-mount-point
* -F nfs 默認的文件系統。
* remote-path-to-resource 遠程主機和共享目錄路徑,主機和共享目錄路徑用冒號分隔。
* path-to-local-mount-point 本地主機掛點。

例如:
# umount peng:/export/home/peng/games /export/home/games
取消遠程主機peng上的/exprot/home/peng/games這個目錄的在本地/export/home/games上的共享。

3、4 系統開機自動共享。
修改/etc/vfstab文件,格式如下:
device to mount device to fsck mount point FS type fsck pass mount at boot mount options

* device to mount 指定遠程伺服器名和共享路徑。遠程伺服器名和共享路徑用冒號分開。
* device to fsck 這個是空的。從來不從客戶機進行文件檢測。
* mount point 指定本地的mount點。這個目錄必須是已經存在的。
* FS type 對於nfs資源系統來說,當然是nfs了。
* fsck pass 這個也是空的。表示不從客戶機進行文件系統檢測。
* mount at boot 選擇yes or no,yes就是啟動時自動安裝。
* mount options 用逗號分隔的mount命令的列表。

例如:
# vi /etc/vfstab 添加:
peng:/export/home/peng/games - /export/home/games nfs - yes soft,bg

表示開機自動把遠程主機peng的/export/home/peng/games目錄自動掛到本機的/export/home/games下。soft選項是目錄不能安裝,產生一個錯誤。bg選項,系統啟動過程中安裝在後台。
關於mount options的參數,請用 man mount 自己看看吧。

3、5 手工調試命令。
# mountall
不帶任何參數,安裝所有列在/etc/vfstab文件中mount at boot中為yes的資源。
# mountall -r 隻影響遠程文件
# mountall -l 隻影響本地文件

# umountall
不帶任何參數,謝載已經安裝的資源。不包括/ 、/proc、/usr、/var。另外,系統忙,也可能不會卸載。
# umountall -r 隻影響遠程文件
# umountall -l 隻影響本地文件

小節:
到這裡我想應該沒有什麼問題了。
大家只要注意一下客戶端和伺服器端的區分。
nfs伺服器端運行守侯進程mountd、nfsd
nfs伺服器端使用文件/etc/dfs/dfstab、/etc/dfs/sharetab、/etc/rmtab
nfs伺服器使用命令是:share unshare shareall unshareall

nfs客戶端運行守侯進程statd、lockd。
用到的文件是/etc/vfstab、/etc/mnttab
nfs客戶機使用命令是:mount umount mountall umountall
知道這些,就ok了。

FAQ :
1、運行mount命令不能得到共享資源,得到信息:「nfs server not responding」。
answer:確信伺服器上nfsd和mountd已經運行,資源已經用共享命令正確共享。
2、當我企圖共享到本地磁碟時,錯誤為:「mount:/tmp_mount not found」.
answer: 你有沒有在本地創建mount點。。。

3、# showmount -e 192.168.200.200
showmount: 192.168.200.200: RPC: Rpcbind failure - RPC: Unable to receive

192.168.200.200的防火牆禁止了連接

[火星人 ] Solaris的NFS使用手冊(網路共享)已經有981次圍觀

http://coctec.com/docs/linux/show-post-203225.html