1. 程式人生 > >Linux 搭建NFS檔案伺服器實現檔案共享

Linux 搭建NFS檔案伺服器實現檔案共享

我們接著玩Linux,O(∩_∩)O哈哈~

1.什麼是nfs

NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像訪問本地檔案一樣。

2.搭建nfs

首先你得有一個Linux伺服器哈,這裡我還是用我的廉價騰訊雲~

2.1前期準備:

1.安裝nfs-utils和rpcbind 

yum install nfs-utils rpcbind

2.設定開機啟動服務 

chkconfig nfs on 
chkconfig rpcbind on

3.啟動相關服務 

service rpcbind start 
service nfs start

2.2服務端配置:

1.建立共享目錄 

mkdir /xjy/data/nfs/server 

2.編輯/etc/exports檔案新增如下內容 

vim /etc/exports 
/xjy/data/nfs/server *(rw,no_root_squash,no_all_squash,sync)

① /xjy/data/nfs/server —要共享的目錄 

② * 處代表限制訪問的ip段 

可以填192.168.0.* —允許訪問的網段,也可以是ip地址、主機名(能夠被伺服器解析) 
可以填192.168.0.123/24 
*(所有人都能訪問)

③ 括號內的常見引數有: 

引數值 內容說明 
rw  ro 該目錄分享的許可權是可擦寫 (read-write) 或只讀 (read-only),但最終能不能讀寫,還是與檔案系統的 rwx 及身份有關。 
sync  async sync 代表資料會同步寫入到記憶體與硬碟中,async 則代表資料會先暫存於記憶體當中,而非直接寫入硬碟! 
no_root_squash  root_squash 客戶端使用 NFS 檔案系統的賬號若為 root 時,系統該如何判斷這個賬號的身份?預設的情況下,客戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody, 如此對伺服器的系統會較有保障。但如果你想要開放客戶端使用 root 身份來操作伺服器的檔案系統,那麼這裡就得要開 no_root_squash 才行! 
all_squash 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦! 
no_subtree_check 關閉子樹檢查 
anonuid  anongid anon 意指 anonymous (匿名者) 前面關於 *_squash 提到的匿名使用者的 UID 設定值,通常為 nobody(nfsnobody),但是你可以自行設定這個 UID 的值!當然,這個 UID 必需要存在於你的 /etc/passwd 當中! anonuid 指的是 UID 而 anongid 則是群組的 GID 囉。 
其他選項可以通過man exports查閱man文件

3.重新整理配置立即生效 

exportfs -r

4.重啟nfs 

service nfs restart

       5.檢視 RPC 服務的註冊狀況 

[[email protected]_15_8_centos server]# rpcinfo -p localhost 
program vers proto port service 
4 tcp 111 portmapper 
3 tcp 111 portmapper 
2 tcp 111 portmapper 
4 udp 111 portmapper 
3 udp 111 portmapper 
2 udp 111 portmapper 
1 udp 49979 mountd 
1 tcp 58393 mountd 
2 udp 45516 mountd 
2 tcp 37792 mountd 
3 udp 32997 mountd 
3 tcp 39937 mountd 
2 tcp 2049 nfs 
3 tcp 2049 nfs 
4 tcp 2049 nfs 
2 tcp 2049 nfs_acl 
3 tcp 2049 nfs_acl 
2 udp 2049 nfs 
3 udp 2049 nfs 
4 udp 2049 nfs 
2 udp 2049 nfs_acl 
3 udp 2049 nfs_acl 
1 udp 51112 nlockmgr 
3 udp 51112 nlockmgr 
4 udp 51112 nlockmgr 
1 tcp 43271 nlockmgr 
3 tcp 43271 nlockmgr 
4 tcp 43271 nlockmgr 

 選項與引數: 

-p :針對某 IP (未寫則預設為本機) 顯示出所有的 port 與 porgram 的資訊; 
-t :針對某主機的某支程式檢查其 TCP 封包所在的軟體版本; 
-u :針對某主機的某支程式檢查其 UDP 封包所在的軟體版本;

6.本機查詢nfs伺服器 

[[email protected]_15_8_centos server]# showmount -e localhost 
Export list for localhost: 
/xjy/data/nfs/server *

選項與引數: 
-a :顯示目前主機與客戶端的 NFS 聯機分享的狀態; 
-e :顯示某部主機的 /etc/exports 所分享的目錄資料。

2.3客戶端配置:

1.建立掛載點 

mkdir /xjy/data/nfs/client 

2.檢視伺服器丟擲的共享目錄資訊 

[[email protected]_15_8_centos server]# showmount -e 192.168.0.123 
Export list for 192.168.0.123: 
/xjy/data/nfs/server *

3.掛載目錄 
為了提高NFS的穩定性,使用TCP協議掛載,NFS預設用UDP協議 

mount -t nfs -o vers=3 192.168.0.123:/xjy/data/nfs/server /xjy/data/nfs/client -o proto=tcp -o nolock 

4.檢視掛載的目錄 

[[email protected]_15_8_centos server]# df -h 
Filesystem Size Used Avail Use% Mounted on 
/dev/mapper/VolGroup-lv_root 
18G 1.1G 16G 7% / 
tmpfs 112M 0 112M 0% /dev/shm 
/dev/sda1 477M 54M 398M 12% /boot 
192.168.0.123:/data/lys 
18G 1.1G 16G 7% /lys

3.測試:

服務端 
[[email protected]_15_8_centos xjy]# echo “test” > test.txt 
客戶端 
[[email protected]_15_8_centos xjy]# cat /xjy/test.txt 
test 
[[email protected]_15_8_centos xjy]# echo204” >> /xjy/test.txt 
服務端 
[[email protected]_15_8_centos xjy]# cat /data/xjy/test.txt 
test 
204

4.取消掛載:

[[email protected]_15_8_centos server]# umount /xjy/data/nfs/client 
[[email protected]_15_8_centos server]# df -h 
Filesystem Size Used Avail Use% Mounted on 
/dev/mapper/VolGroup-lv_root 
18G 1.1G 16G 7% / 
tmpfs 112M 0 112M 0% /dev/shm 
/dev/sda1 477M 54M 398M 12% /boot

如果顯示:device is busy,可以使用-lf引數強行刪除 
[[email protected]_15_8_centos server]# umount –lf /xjy/data/nfs/client

5.重啟和關閉:

重啟:[[email protected]_15_8_centos server]# service 服務名 restart 
停止:[[email protected]_15_8_centos server]# service 服務名 stop 
開啟:[[email protected]_15_8_centos server]# service 服務名 start

6.固定nfs服務埠

為了方便配置防火牆,需要固定nfs服務埠 
NFS啟動時會隨機啟動多個埠並向RPC註冊,這樣如果使用iptables對NFS埠進行限制就會有點麻煩,可以更改配置檔案固定NFS服務相關埠。

[[email protected]_15_8_centos server]# rpcinfo -p localhost 
program vers proto port service 
100000 4 tcp 111 portmapper 
100000 3 tcp 111 portmapper 
100000 2 tcp 111 portmapper 
100000 4 udp 111 portmapper 
100000 3 udp 111 portmapper 
100000 2 udp 111 portmapper 
100005 1 udp 49979 mountd 
100005 1 tcp 58393 mountd 
100005 2 udp 45516 mountd 
100005 2 tcp 37792 mountd 
100005 3 udp 32997 mountd 
100005 3 tcp 39937 mountd 
100003 2 tcp 2049 nfs 
100003 3 tcp 2049 nfs 
100003 4 tcp 2049 nfs 
100227 2 tcp 2049 nfs_acl 
100227 3 tcp 2049 nfs_acl 
100003 2 udp 2049 nfs 
100003 3 udp 2049 nfs 
100003 4 udp 2049 nfs 
100227 2 udp 2049 nfs_acl 
100227 3 udp 2049 nfs_acl 
100021 1 udp 51112 nlockmgr 
100021 3 udp 51112 nlockmgr 
100021 4 udp 51112 nlockmgr 
100021 1 tcp 43271 nlockmgr 
100021 3 tcp 43271 nlockmgr 
100021 4 tcp 43271 nlockmgr

分配埠,編輯配置檔案: 

[[email protected]_15_8_centos server]# vim /etc/sysconfig/nfs 
新增: 
RQUOTAD_PORT=30001 
LOCKD_TCPPORT=30002 
LOCKD_UDPPORT=30002 
MOUNTD_PORT=30003 
STATD_PORT=30004 


重啟

[[email protected]_15_8_centos server]# service nfs restart 
關閉 NFS 守護程序: [確定] 
關閉 NFS mountd: [確定] 
關閉 NFS 服務: [確定] 
Shutting down RPC idmapd: [確定] 
啟動 NFS 服務: [確定] 
啟動 NFS mountd: [確定] 
啟動 NFS 守護程序: [確定] 
正在啟動 RPC idmapd: [確定]

檢視結果

[[email protected]_15_8_centos server]# rpcinfo -p localhost 
program vers proto port service 
100000 4 tcp 111 portmapper 
100000 3 tcp 111 portmapper 
100000 2 tcp 111 portmapper 
100000 4 udp 111 portmapper 
100000 3 udp 111 portmapper 
100000 2 udp 111 portmapper 
100005 1 udp 30003 mountd 
100005 1 tcp 30003 mountd 
100005 2 udp 30003 mountd 
100005 2 tcp 30003 mountd 
100005 3 udp 30003 mountd 
100005 3 tcp 30003 mountd 
100003 2 tcp 2049 nfs 
100003 3 tcp 2049 nfs 
100003 4 tcp 2049 nfs 
100227 2 tcp 2049 nfs_acl 
100227 3 tcp 2049 nfs_acl 
100003 2 udp 2049 nfs 
100003 3 udp 2049 nfs 
100003 4 udp 2049 nfs 
100227 2 udp 2049 nfs_acl 
100227 3 udp 2049 nfs_acl 
100021 1 udp 30002 nlockmgr 
100021 3 udp 30002 nlockmgr 
100021 4 udp 30002 nlockmgr 
100021 1 tcp 30002 nlockmgr 
100021 3 tcp 30002 nlockmgr 
100021 4 tcp 30002 nlockmgr

可以看到,隨機埠以固定 
iptables策略問題完美解決!!!

7.設定系統開機就掛載磁碟

在/etc/fstab中加入開機掛載命令 

[[email protected]_15_8_centos server]# vim /etc/fstab 
10.10.159.68:/s4_attachment /data/nfs/client nfs defaults 0 0

8.Windows作為客戶端掛載nfs

1.開啟nfs客戶端:開啟控制面板》程式》啟用或關閉windos功能》選中nfs客戶端,點選確定 
.2.掛載:mount 192.168.0.123:/xjy/data/nfs X:   (此處注意只能定位到nfs目錄,否則會報網路錯誤) 

會建立一個網路盤X盤,裡面掛載檔案 
3.取消掛載:右鍵X盤,點選取消連線或者執行命令:umount X:

OVER!

相關推薦

Linux 搭建NFS檔案伺服器實現檔案共享

我們接著玩Linux,O(∩_∩)O哈哈~ 1.什麼是nfs NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像

ECS linux 搭建NFS服務實現磁碟共享的具體操作

 目前在使用雲磁碟的時候,無法實現一塊雲磁碟同時掛載到多臺伺服器上的需求,只能實現一塊磁碟掛載到一臺伺服器使用。   但可通過搭建NFS服務,通過內網(默認同一個帳號下同一個region伺服器內網互通)實現一塊磁碟共享給多臺伺服器使用。   NFS的搭建環境如下所示:   系統環境

使用nodepad++連線Linux伺服器實現檔案編輯儲存同步

1.下載並安裝nodpad++軟體 2.下載並安裝NppFtp外掛,並將下載後的外掛複製到nodpad++的安裝目錄 3.重啟nodpa++軟體,找到外掛NppFtp 配置連線資訊 4.開始連線遠端伺服器 5.測試連線結果

搭建apache2伺服器實現檔案的上傳下載

作業系統:ubuntu14.04 如何搭建檔案伺服器,通過網頁下載檔案? 1、安裝   apt-getinstall apache2 2、修改網頁伺服器的配置檔案 vim /etc/apache2/sites-available/000-default.confDocum

Python將本機作為http伺服器實現檔案共享

如需將本機檔案傳輸或者分享給其他人怎麼辦?在終端視窗輸入  python -m http.server(預設8000,也可改為其他)這時候就可以瀏覽器訪問該埠了當分享物件比較多的時候,這不失為一個好方法

使用Linux搭建FTP服務器實現文件共享

fault cti transfer 重命名 主機 samb 命令 客戶端 dha 使用Linux搭建FTP服務器實現文件共享、、、 ---------------- Linux中的文件共享:FTPVSFTPDVSFTPD虛擬用戶 FTP可以用在Linux與Linux

前後臺互動實現點選超連結通過指定的 url 去網路或者檔案伺服器下載檔案

前臺 VUE 介面: <el-table-column prop="attachment" align="center" label="附件詳情"> <template slot-scope="scope"> <!--<el-button @

Linux指令碼連線遠端伺服器下載檔案

最近為了提高工作效率,想著把平時需要定期進行的程式碼替換工作進行自動化。於是寫了一個shell指令碼。整個指令碼的思路很簡單,就是把另一個環境上的最新編譯好的程式碼資料夾打包放到本地目錄,將新程式碼資料夾裡面的配置檔案替換成原本地配置檔案。程式碼如下:!/bin/ksh L

Http伺服器實現檔案上傳與下載(二)

一、引言 歡迎大家接著看我的部落格,如何大家有什麼想法的話回覆我哦,閒話不多聊了,接著上一講的內容來說吧,在上一節中已經講到了請求頭字串的解析,並且在解析中我我們已經獲取了url。就是上節中提到的/doing。當瀏覽器傳送了/doing請求後,這是的與伺服器的連線並沒有

Http伺服器實現檔案上傳與下載(五)

一、引言      歡迎大家和我一起編寫Http伺服器實現檔案的上傳和下載,現在我回顧一下在上一章節中提到的一些內容,之前我已經提到過檔案的下載,在檔案的下載中也提到了檔案的續下載只需要在響應頭中填寫Content-Range這一欄位,並且伺服器的檔案指標指向讀取的指定

一個簡單的檔案伺服器實現方案

引子 最近公司的系統約來越多,基本上每個系統都需要用到“資源”,以前只是簡單的把“資源”放到Web伺服器中,但是這樣的話有一個頭痛的問題----如何去管理“資源”? 想法 現在不是很流行API嘛,大家好像都在整什麼面向服務、面向資源、RESTful什麼的,據說在與複雜性的鬥爭中,人們討論表象化狀態轉移(

Http伺服器實現檔案上傳與下載(一)

一、引言   大家都知道web程式設計的協議就是http協議,稱為超文字傳輸協議。在J2EE中我們可以很快的實現一個Web工程,但在C++中就不是非常的迅速,原因無非就是底層的socket網路編寫需要自己完成,上層的http協議需要我們自己完成,使用者介面需要我們自己完

Http伺服器實現檔案上傳與下載(三)

一、引言   在前2章的內容基本上已經講解了整個的大致流程。在設計Http伺服器時,我設計為四層的結構,最底層是網路傳輸層,就是socket程式設計。接著一層是請求和響應層,叫做Request和Response。在上一層是URL解析流程走向層。最頂層我設計為索引層。這一層主要多檔案時對檔案進行記憶體上的索引

Http伺服器實現檔案上傳與下載(四)

一、引言   歡迎大家來到和我一起編寫Http伺服器實現檔案的上傳和下載,現在我稍微回顧一下之前我說的,第一、二章說明說明了整體的HTTP走向,第三章實現底層的網路程式設計。接著這一章我想給大家講的是請求獲取,和響應傳送的內容。這裡主要講解的響應內容,為什麼?因為我們編寫的是一個與瀏覽器互動的HTTP伺服器

Linux下的samba伺服器配置檔案詳解 smb.conf

workgroup = MYGROUP //此項表示在Windows作業系統中的“網路上的芳鄰”將會出現的SAMBA伺服器所屬群組,預設MYGROUP,不區分大小寫。    server string = Samba Server //此

利用aliyun OSS掛載檔案伺服器或session共享

在aliyun 應用市場搜尋cloudfs4oss 購買安裝 root# yum install libcurl libcurl-developenssl-develfuse fuse-libs f

關於JS訪問檔案伺服器的HTTP檔案地址實現檔案下載

    開發過程中遇到一個需求變動,主管要求網站在提供檔案下載的時候不要使用 服務寫流的形式(out.write)進行檔案下載。需要改造成將檔案生成到 檔案伺服器路徑下,然後以http的形式直接進行檔案訪問、下載。  我想這個訪問http地址顯示檔案的方式,大家應該都回使用

搭建NFS網絡文件共享服務(幹貨)

NFS配置先上幹貨: 以下是配置全過程(客戶端和服務端對比)查看NFS軟件包[root@server ~]# rpm -aq nfs-utils portmap rpcbind#這個命令比(yum grouplist)的更有效率 安裝法一:[root@server ~]#yum groupinstall &q

linux centos7 下Nginx伺服器實現URL重寫去掉index.php方法,跟Apache還是不一樣的。

想要的URL :http://localhost/Admin/ 而自己的是http://localhost/index.php/Admin/ 方法: 在nginx配置檔案nginx.conf中新增: location / {   if ( !e $request_filename )

Linux搭建FTP服務,實現只上傳,不下載

筆者最近收到一個需求,搭建Linux上的Ftp服務,但是隻能上傳,不能下載,且使用者不能跳開Ftp,通過Sftp來獲得檔案。大致看了些網上分享。通過配置,完成這個“奇葩”需求。 首先跳開Ftp,使用Sftp那麼可以通過設定虛擬賬戶來實現。 其次Ftp上只上傳,不下載,那麼通過配置Ft