linux怎麼搭建nfs伺服器
『壹』 linux搭建NFS伺服器
作者:SpookZanG
linux搭建NFS伺服器
一、什麼是NFS服務
NFS是Network
File
System的簡寫,即網路文件系統.
網路文件系統是FreeBSD支持的文件系統中的一種,也被稱為NFS.
NFS允許一個系統在網路上與它人共享目錄和文件。通過使用NFS,用戶和程序可以象訪問本地文件一樣訪問遠端系統上的文件。
二、NFS的優勢
1.本地工作站使用更少的磁碟空間,因為通常的數據可以存放在一台機器上而且可以通過網路訪問到。
2.用戶不必在每個網路上機器里頭都有一個home目錄。Home目錄
可以被放在NFS伺服器上並且在網路上處處可用。
3.諸如軟碟機,CDROM,和
Zip®
之類的存儲設備可以在網路上面被別的機器使用。這可以減少整個網路上的可移動介質設備的數量。
NFS至少有兩個主要部分:一台伺服器和一台(或者更多)客戶機。客戶機遠程訪問存放在伺服器上的數據。為了正常工作,一些進程需要被配置並運行。
三、NFS的搭建
1、伺服器端
安裝NFS的服務程序
yum
install
-y
nfs-utils
寫配置文件
寫入
/music
192.168.0.0/255.255.255.0(rw,sync)
格式是:
要共享的目錄
共享的IP及掩碼或者域名(許可權,同步更新)
啟動服務
/etc/init.d/portmap
restart
/etc/init.d/nfs
restart
chkconfig
nfs
on
chkconfig
portmap
on
然後關閉防火牆以及更改Selinux關於NIS的選項
/etc/init.d/iptables
stop
(防護牆服務關閉)
chkconfig
iptables
off
system-config-selinux
(設置selinux)
2、客戶端
編輯fstab文件,實現開機自動掛載
mount
-t
nfs
IP:/目錄
掛載到的目錄
(此為臨時掛載)
如:mount
-t
nfs
192.168.0.9:/doce
/doc
編輯FSTAB文件
vim
/etc/init.d/fstab
IP:/目錄
掛載到的目錄
nfs
defaults
0
0
然後關閉防火牆以及更改Selinux關於NIS的選項
/etc/init.d/iptables
stop
(防護牆服務關閉)
chkconfig
iptables
off
system-config-selinux
(設置selinux)
至此,搭建完畢。
『貳』 NFS伺服器的安裝與配置
由於實驗室的項目需要實現在CephFS之上建立NFS之上,所以記錄一下NFS伺服器的安裝與配置流程。
NFS 伺服器可以讓客戶端將網路遠程的 NFS 伺服器分享的目錄,直接掛載到本地端的機器當中。本地端的機器通過直接讀寫掛載的目錄,就可以同步到NFS伺服器之上。
系統平台:Ubuntu 14.04
NFS Server IP:192.168.1.2
iptables關閉: Firewall is disable.(NFS埠使用在默認情況下是不固定,所以若配置NFS伺服器需要搭配防火牆使用的話,請配置固定埠)
SELINUX=disabled
NFS的安裝只需要安裝rpcbind與nfs-server就可以對外提供服務了。
NFS伺服器的主要配置文件就是:/etc/exports。不過這個配置文件不一定會存在,可能需要使用 vim 主動新建這個文件。
/etc/exports文件由以下選項構成:
每一行最前面是要分享出來的目錄,目錄可以依照不同的許可權分享給不同的主機。若許可權參數不止一個時,則以逗號 (,) 分開。且主機名與小括弧是連在一起的喔!其中參數是可選的,當不指定參數時,nfs將使用默認選項。默認的共享選項是 sync,ro,root_squash,no_delay 當主機名或IP地址為空時,則代表共享給任意客戶機提供服務。
下面是一些NFS共享的常用參數:
這里我們使用了NFS v3的配置,如下圖所示:
配置完/etc/exports之後,接下來就可以啟動NFS伺服器了。
為了使NFS伺服器能正常工作,需要啟動rpcbind和nfs-kernel-server兩個服務,並且rpcbind一定要先於nfs-kernel-server啟動。
若要開機自啟動nfs服務,可以通過sysv-rc-conf配置自啟動服務。
客戶端的掛載很簡單,先建立一個掛載目錄
之後客戶端對應的文件目錄便掛載上對應的文件系統了。
客戶端可以通過命令配置開機自啟動掛載NFS的文件系統。
將對應的命令 mount -t nfs 192.168.12:/tmp /mnt/nfs
添加至/etc/rc.d/local,不要嘗試在直接在/etc/fstab/里掛載
小結 :梳理了一下在ubuntu之下NFS伺服器的安裝與配置。當然RedHat系列的發行版也是大同小異。若有疏漏,望指點斧正。
『叄』 Linux NFS配置
body{
line-height:200%;
}
Linux
NFS配置
文件傳輸服務的種類:
1.NFS(Network
File
System),將遠程主機的目錄掛載到本地,實現文件共享與遠程訪問。
UNIX和UNIX之間的文件傳輸
UNIX和LINUX之間的文件傳輸
LINUX和LINUX之間的文件傳輸
2.Samba
WINDOWS和LINUX之間的文件傳輸
3.TFTP
常用於LINUX和開發板之間的文件傳輸
一、NFS伺服器的搭建
1.在NFS伺服器主機中進行設置
安裝NFS伺服器軟體包
設置NFS共享目錄輸出
啟動NFS伺服器程序
2.在NFS客戶機中進行設置
使用mount命令掛載NFS伺服器中的NFS共享目錄到文件系統中
通過NFS文件系統的掛載點目錄訪問NFS伺服器中的共享內容
(1)NFS伺服器的配置文件
"/etc/exports"文件用於配置NFS伺服器中輸出的共享目錄
例如:
/home/share
*(sync,ro)
NFS伺服器配置
以root
身份登陸Linux
伺服器,編輯/etc
目錄下的共享目錄配置文件exports,指定共享目錄及許可權等。
執行如下命令編輯文件/etc/exports:
#
vi
/etc/exports
在該文件里添加如下內容:
/home/work
192.168.0.*(rw,sync,no_root_squash)
然後保存退出。
添加的內容表示:允許ip
地址范圍在192.168.0.*的計算機以讀寫的許可權來訪問/home/work
目錄。
/home/work
也稱為伺服器輸出共享目錄。
括弧內的參數意義描述如下:
rw:讀/寫許可權,只讀許可權的參數為ro;
sync:數據同步寫入內存和硬碟,也可以使用async,此時數據會先暫存於內存中,而不立即寫入硬碟。
no_root_squash:NFS
伺服器共享目錄用戶的屬性,如果用戶是
root,那麼對於這個共享目錄來說就具有
root
的許可權。
接著執行如下命令,啟動埠映射:
#
/etc/rc.d/init.d/portmap
start
sync:設置NFS伺服器同步寫磁碟,這樣不會輕易丟失數據,建議所有的NFS共享目錄都是用該選項
ro:設置輸出的共享目錄只讀,與rw不能共同使用
rw:設置輸出的共享目錄可讀寫,與ro不能共同使用
二、NFS伺服器的架勢
防火牆修改
SELinux的修改
『肆』 linux如何安裝nfs系統
您好,方法
1、用rpm或者yum源方式安裝nfs,兩個軟體包nfs-utils和nfs-utils-lib(這里已經裝過了)。
2、創建共享目錄 share,並在其文件夾下面創建一個a的文本文件。
3、修改nfs配置文件 vi /etc/exports 設置允許192.168.4.122用戶以讀寫方式來掛載/share,
4、啟動nfs服務service nfs start ,並關閉防火牆。
5、查看本機nfs共享目錄信息,用命令exportfs。
6、客戶端測試,用rpm -qa nfs-utils 查看是否安裝,沒有安裝的話可以使用yum安裝。
7、在客戶端進行查看並掛載,用mount -t 命令進行掛載。
在客戶端查看是否可以看到伺服器端的數據,卸載umount。
『伍』 怎麼搭建Linux的nfs服務
1. 查看系統有沒有nfs功能
cat /proc/filesystes
2. ntsysv 命令選中nfs
service nfs restart,看能否啟動,如不能正常,可以查看相應的出錯信息
tali /var/log/messages
3. 配置/etc/exports
eg: /home/mis *(rw)
此文件是配置相關的文件和一些許可權,上面的設置表示,所有的用戶對/home/mis都有讀寫的許可權4. 執行exportfs -a 表示將所有的更新.
5. service nfs restart
6. 執行mount命令
eg: mount 10.0.1.153:/home/mis /mnt/mis
7. 常用的命令
showmount
repcinfo
8. 如果在開機時就載入,可在/etc/fstab中加入
ip:/home.mis /mnt/mis nfs intr
『陸』 搭建NFS伺服器
NFS 是Network File System的縮寫,即網路文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網路讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網路訪問位於伺服器磁碟中的數據,是在類Unix系統間實現磁碟文件共享的一種方法。
NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procere Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的。
NFS應用場景,常用於高可用文件共享,多台伺服器共享同樣的數據,可擴展性比較差,本身高可用方案不完善,取而代之的數據量比較大的可以採用MFS、TFS、HDFS等等分布式文件系統。
1. 環境准備兩台Centos7.6虛擬機:
服務端:192.168.199.180
客戶端:192.168.199.190
2.創建用戶,指定用戶訪問共享文件夾:
useradd test #創建test用戶
passwd test #設置test密碼為123456
6.編輯nfs主配置文件/etc/exports;並添加以下內容:
/www 192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)
參數詳解:
NFS安裝完畢,需要創建共享目錄,共享目錄在/etc/exports文件裡面配置,可配置參數如下:
/www 192.168.199.190(rw,sync,root_squash,no_all_squash,anonuid=1002,anongid=1002)
第一列/www 表示需要共享的目錄
IP表示允許哪個客戶端訪問
IP後括弧里的設置表示對該共享文件的許可權
ro 只讀訪問
rw 讀寫訪問
sync 所有數據在請求時寫入共享
hide 在NFS共享目錄中不共享其子目錄
no_hide 共享NFS目錄的子目錄
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的所有請求映射成如anonymous用戶一樣的許可權(默認)
no_root_squas root用戶具有根目錄的完全管理訪問許可權
anonuid 指定用戶UID
anongid 指定用戶組ID
7.啟動nfs服務:systemctl start nfs
8.查看nfs及rpc埠是否啟動成功:
9. rpcinfo -p 192.168.199.180 查看,如圖所示:
RPC命令詳解: rpcinfo 命令會向 RPC 伺服器發出 RPC 調用,並將得到的結果顯示出來。rpcinfo 會列出所有在主機 host 上向 rpcbind 注冊的 RPC 服務。
10. 使用showmount -e localhost 命令用於查詢NFS伺服器的相關信息,顯示NFS伺服器的輸出清單。
11. 創建共享文件夾目錄www ;並在www目錄下新建jfe.txt並加入內容,授予www用戶用戶組的nfsnobody.nfsnobody許可權
mkdir -p /www #創建www共享目錄
touch /www/jfe.txt #在www目錄下創建jfe.txt文件
chown -R test:test /www #授權用戶用戶組test給www目錄
二、安裝客戶端:(192.168.199.190)
1. yum install nfs-utils -y
客戶端上不需要啟動nfs服務,只是為了使用showmount工具
2. 查看RPC埠是否啟動:netstat -ntpl
3.使用showmount -e 192.168.199.180命令顯示NFS伺服器輸出結果:
4.遠程掛載www共享目錄到客戶端的/mnt目錄下:mount -t nfs 192.168.199.180:/www /mnt
5. 進入到/mnt掛載盤符目錄下cd /mnt ;確認是否有jfe.txt文件存在及查看文件許可權屬於誰:
確認文件已存在,用戶用戶組均為test用戶所屬,其他用戶不能操作此目錄下的文件及文件夾;包括root用戶都不能操作刪除及修改文件,例如root用戶都不能刪除jfe.txt文件:
6.如果也只需要客戶端的test用戶去對www共享文件夾有增刪改查許可權的話,需要以下步驟:
a. 在客戶端創建相同的test用戶,並保證UID一致的情況下才能對共享目錄有許可權進行操作
b. 設置tets用戶密碼為123456
c. 查看test用戶UID參數值是多少 cat /etc/passwd
d. 那麼問題來了,服務端的test用戶UID為1002,客戶端test用戶UID為1004,共享目錄在客戶端的許可權也為1002,那麼1004是沒有許可權去訪問共享目錄的,可參考下目前狀態的錯誤圖;首先切換到test用戶,然後進入到/mnt目錄下進行jfe.txt文件刪除看是否報錯:
e. 經過測試同樣的tets用戶,但是客戶端的用戶UID跟服務端不一致,所以是沒有許可權刪除文件的,首先退出tets用戶,切換root用戶後,需要修改客戶端test用戶UID跟服務端一致即可解決問題,命令:usermod -u 1002 tets
7.修改完客戶端test用戶UID為1002後,切換到test用戶,查看是否有jfe.txt文件存在;然後追加新內容123456到jfe.txt中;最後新建123.txt文件成功,代表NFS共享目錄指定用戶讀取(增刪改查)成功。
8. 在NFS服務端把NFS跟RPC服務加入開機自啟動:
systemctl enable nfs-server
systemctl enable rpcbind
9. 在客戶端將NFS遠程共享目錄掛載命令加入fstab配置,不然伺服器重啟掛載點將消失,加入以下配置到/etc/fstab配置文件
192.168.199.180:/www /mnt nfs defaults 0 0
『柒』 Linux 環境下搭建NFS服務
NFS(Network File System),網路文件存儲系統,它最早是由 Sun 公司開發的,也是 FreeBSD 支持的文件系統中的一個,它允許網路中的計算機之間通過TCP/IP 網路共享資源。通過 NFS 協議,我們本地 NFS 的客戶端應用可以透明的讀寫位於服務端 NFS 伺服器上的文件,就像訪問本地文件一樣方便。簡單的理解,NFS 就是可以透過網路,讓不同的主機,不同的操作系統可以共享存儲的服務。
NFS 在文件傳送或信息傳送過程中依賴 RPC(Remote Procere Call)協議,即遠程過程調用,NFS的各項功能都必須向 RPC 來注冊,如此一來 RPC 才能了解 NFS 這服務的各項功能 Port,PID,NFS 在伺服器所監聽的 IP 等,而客戶端才能透過 RPC 的詢問找到正確對應的埠,所以 NFS 必須要有 RPC 存在是才能成功的提供服務,簡單的理解二者關系:NFS 是一個文件存儲系統,而 RPC 是負責信息的傳輸。
通過上面的簡介,我們知道 NFS 服務需要依賴 RPC 服務,所以這里 NFS 服務端需要安裝 rpcbind 和 nfs-utils ,客戶端只需要安裝 nfs-utils 即可,由於我們選用 CentOS 系統,所以可以使用 yum 快速的安裝。
然後安裝 NFS 服務
另:Ubuntu 16.04 安裝命令
我們在服務端創建一個共享目錄 /data/share ,作為客戶端掛載在遠端入口,然後設置許可權
然後,修改 NFS 配置文件 /etx/exports
說明一下,這里配置後邊有很多參數,每個參數有不同的含義,具體可以參考下邊。此處,我配置了將 /data/share 文件目錄設置為允許IP為 192.168.0.0/24 區間的客戶端掛載。然後,如果客戶端IP不在該區間也想要掛載的話,可以設置IP區間更大或者設置為 * 即允許所有客戶端掛載,例如: /home *(ro, sync,insecure,no_root_squash) 設置 /home 目錄允許所有客戶端只讀掛載。
接下來,我們先啟動 RPC 服務
我們發現,啟動了 NFS 服務後,RPC 注冊的埠列表明顯增多。現在服務端都啟動起來了,在服務端看下是否正確載入了設置的 /etc/exports 配置
最後,在另一台Linux虛擬機上測試一下,是否能夠正確掛載。首先,我們可以在客戶端查看下NFS服務端設置可共享的目錄信息
然後,在客戶端創建掛載目錄/share
最後,掛載遠端目錄到本地 /share 目錄
可以看到,可以正確將遠端 NFS 目錄掛載到本地。注意:掛載點 /share 目錄必須已經存在,而且目錄中沒有文件或子目錄
最後,我們在 NFS 服務端 /data/share 目錄下創建一個文件,看下客戶端能否正確讀取並修改
都可以了,這里因為上面設置了 NFS 遠端目錄許可權為 rw 擁有讀寫許可權,如果設置為 ro ,那麼客戶端只能讀取,不能寫入。根據實際應用場景合理配置。
NFS 默認使用 UDP協議進行掛載,為了提供 NFS 的穩定性,可以使用 TCP 協議掛載,那麼客戶端掛載命令如下:
最後,卸載命令
『捌』 如何利用Linux系統做一個NFS伺服器
創建文件夾
新建文件夾名為testfs1,並且在該文件夾裡面新建一個文件:touch a.txt
以ROOT身份登錄Linux伺服器,編輯/etc/exports,指定共享目錄及許可權。
添加的信息如下:
/testfs1/ xxx.xxx.xxx.*(rw,sync,no_root_squash)
添加的內容表示:
允許ip 地址范圍在xxx.xxx.xxx.*的計算機以讀寫的許可權來訪問/testfs1 目錄; 其中*.*.*.*表示
括弧內的參數意義描述如下
rw:讀/寫許可權,只讀許可權的參數為ro;
sync:數據同步寫入內存和硬碟,也可以使用async,此時數據會先暫存於內存中,而不立即寫入硬碟.
no_root_squash:NFS 伺服器共享目錄用戶的屬性,如果用戶是 root,那麼對於這個共享目錄來說就具有 root 的許可權。
啟動埠映射
執行以下命令:/etc/rc.d/init.d/portmap start
開啟nfs服務:#service nfs start
關閉nfs服務:#service nfs stop
『玖』 NFS服務搭建及數據無縫遷移
五一節辦公室要停電,機房雖有UPS,但也支撐不了8小時。
因生產環境有業務系統掛了辦公室機房的NAS存儲,故需要進行遷移,步驟記錄如下:
先閑談下技術-----------------------
NFS和samba的區別
samba是混合型網路中的共享服務,windows伺服器可建samba服務,linux伺服器也可建samba服務
nfs只面向unix、linux間的共享,linux伺服器可建nfs服務(winodws系統也可以掛載nfs,就是有點不穩定)
NFS伺服器上的操作--------------------------
nfs伺服器操作系統版本:
[root@c7110 ~]# more /etc/system-release
CentOS Linux release 7.9.2009 (Core)
nfs伺服器安裝nfs服務
[root@c7110 ~]# yum -y install nfs-utils rpcbind
創建nfs目錄,並授權
[root@c7110 ~]# mkdir /opt/nfs-test
[root@c7110 ~]# chmod 777 /opt/nfs-test
編輯nfs服務配置文件
[root@c7110 ~]# vi /etc/exports
內容如下:
/opt/nfs-test *(rw,root_squash,all_squash,sync)
重新載入nfs配置:
[root@c7110 ~]# exportfs -r
nfs服務設置開機啟動
[root@c7110 ~]# systemctl enable rpcbind
[root@c7110 ~]# systemctl enable nfs
[root@c7110 ~]# systemctl enable nfs-lock
[root@c7110 ~]# systemctl enable nfs-idmap
啟動nfs服務
[root@c7110 ~]# systemctl start rpcbind
[root@c7110 ~]# systemctl start nfs
[root@c7110 ~]# systemctl start nfs-lock
[root@c7110 ~]# systemctl start nfs-idmap
查看nfs服務啟動後,所監聽的埠信息:
[root@c7110 ~]# rpcinfo -p
linux伺服器伺服器上操作-------------------------------
業務伺服器安裝nfs軟體客戶端
[root@c7111 ~]# yum -y install nfs-utils
建立一個掛載目錄
[root@c7111 ~]# mkdir /opt/test-m
掛載nfs伺服器共享出來的目錄
[root@c7111 ~]# mount -t nfs 10.x.x.10:/opt/nfs-test /opt/test-m/
查看下已掛載的nfs
[root@c7111 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.5G 0 1.5G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 8.8M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/centos-root 97G 2.3G 95G 3% /
/dev/sda1 1014M 171M 844M 17% /boot
tmpfs 297M 0 297M 0% /run/user/0
10.x.x.6:/opt/nfs-test 97G 4.1G 93G 5% /opt/test-m
經測試,數據可讀可寫,證明nas服務沒有問題,於是進行數據同步,數據同步用rsync命令。
rsync -avp [email protected]::nas_6 /mnt/guidang/ --password-file=/root/rsync_pass --bwlimit=100000
數據同步完,通知研發進行掛載切換。研發同事在測試時,發現文件屬性中的uid及gid與原來的不一致,有些擔心,於是又小完善了一下NFS服務。
編輯nfs服務配置文件
[root@c7110 ~]# vi /etc/exports
內容如下:
/opt/nfs-test *(no_all_squash,anonuid=600,anongid=600)
重新載入nfs配置:
[root@c7110 ~]# exportfs -r
『拾』 Linux實用工具-nfs
nfs伺服器建立
本文介紹Linux環境下nfs服務的搭建過程。
nfs服務的作用是讓其他機器可以通過網路把將本地的nfs目錄掛載,然後通過訪問掛載目錄訪問本地機器。在嵌入式開發中經常會將運行的開發板上的整個文件系統,做為本地的一個主目錄,然後開發板啟動的時候通過nfs服務,將本地的這個目錄掛載上去,作為根文件系統。
這里分別介紹在Ubuntu和CenterOS上面nfs服務的配置過程。
編輯/etc/exports,在其中增加要共享的目錄
如
其中 /home/quietheart/nfs,10.1.14.0/24代表共享給哪個子網,rw是可讀寫許可權
然後
建立好了nfs之後,如果板子裡面的內核支持網路和nfs,需要板子和你的機器各有一個網線和網口,兩者在同一個網段,配置好了就能互訪。也可以把機器和板子用一根網線鏈接(板子有獨立的網口),這樣不需要網關,就能使板子掛載機器的nfs系統了,但是機器也不能夠上網了。
添加類似如下一行:
在配置NFS之前先查看「rpm -q nfs-utils portmap「兩個軟體包是否安裝,默認都是安裝的。
這里,'<your nfs directory>'是你本地的nfs目錄,可以隨意設置。具體含義參見"info exports".
這一步有時候可以不用做。
具體在:"系統"->"管理"->"安全級別和防火牆"
至此nfs服務搭建完畢.
這里說一下測試nfs是否好用的方法:
在其它機器上運行:
如果成功則完畢。
無。
通過以上可知,在Linux上面配置nfs服務的過程大致一樣。