linux下的nfs
Ⅰ linuxnfs掛載新建文件時間和本地新建不一致
1、NFS(NetworkFileSystem)是喊局一種網路文件共享協議,與本地文件系統有所不同,因此掛載nfs後創建的文件的時間可能與本地創建的文件的時間有譽滲廳所不同。
2、通常情況下,nfs的文件時間與客戶端慶隱的本地時間相差幾分鍾,但也可能會略有出入。
Ⅱ 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服務
舉例,有台機器叫AAA,想把自己機器根下的一個叫abc的目錄極其裡面的所有文件都共享給一台叫BBB的機器。
在這里AAA就可看成是伺服器,BBB為客戶端,方法如下:
(在AAA上先配置)
1.
vi /etc/exports
(用vi編輯器打開共享資源,在裡面填寫共享的屬性,linux下nfs的共享資源路徑為etc下的exports)
打開編輯器後,裡面可能什麼都沒有,需要自己填寫,然後保存即可,在這里填寫
2.
/abc BBB(ro)
之後按Esc停止文字錄入,然後按Shift+;鍵,在出來的冒號後輸入wq,表示保存退出!
(這個的格式是這樣的:先給出要共享的路徑,然後空格,後面寫共享給誰,可以是IP地址或主機名。再後面的括弧里表示以什麼方式來共享,ro是客戶端只能讀,如果想讓客戶端可以改,可設為rw,即可讀寫)
Ⅳ linux配置nfs步驟
NFS的配置過程很簡單。在伺服器端中編輯 /etc/exports 文件,添加如下內容: /home/nfs-share 192.168.1.122 (rw,sync)
第一項是要共享的目錄,後者為共享的配置參數一般為: (rw,sync,no_root_squash,no_all_squash,no_subtree_check)
然後開啟NFS和portmap服務:
/etc/init.d/nfs start //用service nfs start也可以 /etc/init.d/portmap start //用service portmap stasrt也可以
在centos6.5中portmap已經改為rpcbind 在客戶端,用mount –t nfs 192.168.123:/home/nfs-share /home/remote_file掛載伺服器端的共享目錄到本地的/home/remote-file掛載點,然後我們就可以在客戶端上應用到遠程主機上的/home/nfs-share目錄了。想要系統在開機時自動掛載,修改/etc/fstab文件,把NFS伺服器的共享目錄添加進去就可以了,這個不用多說。
如何知道遠程主機上的共享目錄情況呢?使用showmount命令,這個命令需要root許可權。它有三個選項(記住這三個選項代表的含義: showmount –a IP 顯示指定NFS伺服器的客戶端以及伺服器端在客戶端的掛載點 showmount –d IP 顯示指定NFS伺服器在客戶端的掛載點 showmount –e IP 顯示指定NFS伺服器上的共享目錄列表(或者叫輸出列表) 我們輸入命令showmount –a 192.168.1.123:
圖片客戶端中出現的mount clntudp_create: RPC: Program not registered錯誤是怎麼回事?噢,我剛才重啟了一下伺服器端,重啟後NFS服務沒有開啟。 我們開啟伺服器端的NFS服務,再從客戶端上查看一下NFS伺服器的情況:
Showmount –a顯示出NFS伺服器192.168.1.123的共享目錄被客戶端192.168.122掛載到/home中;
在showmount -e IP,出現clnt_create: RPC: Port mapper failure - Timed out報錯
解決方案:
被訪問的NFS伺服器上的防火牆沒有添加規則,向iptables裡面添加以下查看的所有埠即可(目前解決的方法,當然你也可以關閉防火牆,不過這樣是比較不安全的,如果你的nfs作用不大,建議你另選別的應用來替代吧!畢竟開那麼多的埠,比較不安全呀!)
通過#rpcinfo -p 10.10.209.148
[root@rh01 /]# rpcinfo -p 10.10.209.148program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 52943 status100024 1 tcp 37706 status100011 1 udp 875 rquotad100011 2 udp 875 rquotad100011 1 tcp 875 rquotad100011 2 tcp 875 rquotad100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 2 tcp 2049 nfs_acl100227 3 tcp 2049 nfs_acl100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 2 udp 2049 nfs_acl100227 3 udp 2049 nfs_acl100021 1 udp 37438 nlockmgr100021 3 udp 37438 nlockmgr100021 4 udp 37438 nlockmgr100021 1 tcp 46331 nlockmgr100021 3 tcp 46331 nlockmgr100021 4 tcp 46331 nlockmgr100005 1 udp 57177 mountd100005 1 tcp 43147 mountd100005 2 udp 49154 mountd100005 2 tcp 54810 mountd100005 3 udp 55707 mountd100005 3 tcp 58309 mountd
[root@rh01 /]#
剛才在重啟NFS服務的時候,細心的話可以注意到,我們在輸入命令/etc/init.d/nfs start開啟nfs服務時,系統還自作主張地開啟了NFS quotas等其它3個服務。
怎麼回事?我們只輸入了一條啟動NFS服務的命令,它怎麼額外的啟動了3個服務?後面的啟動portmap服務又是怎麼回事? 我們首先要了解一點:NFS文件系統要提供服務單靠本身的NFS服務是不夠的,還需要調用其它服務,這個其它服務就是RPC(remote procere call,遠程過程調用)服務和portmap服務。由於NFS服務本身不提供文件傳輸功能,我們要遠程使用NFS文件系統就需要RPC服務的支持;而portmap服務用來為RPC服務進行動態埠分配和映射,所以portmap服務也是NFS服務所必須的。
我們查看一下服務的啟動情況:
所遇錯誤:
/etc/init.d/nfs-kernel-server: 沒有那個文件或目錄
解決方案:
沒有配置、安裝NFS
Linux 下配置NFS服務
1、安裝
2、配置
3、客戶端
所遇問題:centos6.5
portmap: 未被識別的服務
解決方案:
由於在6系列裡面,portmap已經改名了 ,6系列需要使用 service rpcbind start啟動[root@unix-big-bang ~]# service portmap start
portmap: 未被識別的服務
[root@unix-big-bang ~]# service rpcbind status
rpcbind (pid 1312) is running...
[root@unix-big-bang ~]#
好文共賞:
linux nfs文件共享
◆一、概念
NFS是網路文件系統(Network File System)的簡稱,是分布式計算機系統的一個組成部分,可實現在異構網路上共享和裝配遠程文件系統。
NFS由SUN公司開發,目前已成為文件服務的一種標准(RFC1904,RFC1813)。其最大的功能就是可以通過網路,讓不同 操作系統 的計算機可以共享數據,所以也可以看作是一個文件伺服器。NFS是除了SAMBA之外Windows與Linux及Unix與Linux之間通信的方法。
理想條件下的NFS 網路拓撲結構
1、設置Linux系統之間的文件共享(Linux與Windows中間文件共享採用SAMBA服務);
2、NFS只是一種文件系統,本身沒有傳輸功能,是基於RPC協議實現的,才能達到兩個Linux系統之間的文件目錄共享;
3、NFS為C/S 架構 ;
◆二、伺服器配置
1、配置文件
主要配置文件為:/etc/exports
格式為: 共享目錄 可mount主機IP(參數1,參數2,……)
如:/var/nfs 172.20. . (rw,sync,no_rootl_squash)
說明:必須注意nfs/目錄的訪問許可權,必須設置成777許可權;父目錄/var許可權無要求,普通的755即可;
2、啟動相關服務
然後依次啟動相關服務:portmap,nfslock,nfs
service portmap start
service nfslock start
service nfs start
關閉順序相反。
3、檢查共享目錄
隨後可以採用showmount –e查看一下,看看共享的目錄情況:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
OK,到此為止,NFS伺服器搭建完畢;
◆三、客戶端配置
1、確保portmap運行
客戶端必須確保RPC協議相應的portmap正常運行,否則mount將失敗;
2、掛載/var/nfs目錄(本地掛載點為/mnt/nfs)
mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs
成功mount以後,即可同本地目錄一樣隨意操作;
◆四、其它相關命令
1、當修改了/etc/exports文件後,可以不用重新啟動nfs服務,直接採用exports –rv 即可重新導出共享目錄;
該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的信息輸出到屏幕上。
具體例子:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
[root@ns var]# exportfs –au #全部卸載
[root@ns var]# showmount -e
Export list for ns.osserver:
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20. . :/var/nfs
[root@ns var]#
2、showmout命令對於NFS的操作和查錯有很大的幫助,所以我們先來看一下showmount的用法
showmout
-a :這個參數是一般在NFS SERVER上使用,是用來顯示已經mount上本機nfs目錄的cline機器。
-e :顯示指定的NFS SERVER上export出來的目錄。
例如:
[root@localhost ~]# showmount -e 172.20.16.139
Export list for 172.20.16.139 :/root/share 172.20.16.137
[root@ns var]# showmount -a
All mount points on localhost.localdomain: :/root/share,172.20. . :/root/share,172.20.16. :/root/share,172.20.16.139:/nfsshare,172.20.16.139:/root/share172.20.16.137: 172.20.16.137:,172.20. . 172.20.16.137:,172.20.16. 172.20.16.137:/root/share172.20.16.139: 172.20.16.139:,172.20. . 172.20.16.139:,172.20.16. 172.20.16.139:,172.20.16.139172.20.16.139:DEFAULT
◆五、常見問題解答
1、提示:mount to NFS server 餄.20.67.203' failed: server is down.
解決方案:可能是NFS伺服器的防火牆有問題;
2、提示:mount: RPC: Timed out
解決方案:由於RPC協議沒運行;啟動portmap服務;
也有可能是防火牆問題;Server/Client均有可能。
Ⅳ LINUX怎麼掛載NFS
在linux客戶端掛接(mount)NFS磁碟共享之前,必須先配置好NFS服務端。x0dx0a1、Solaris系統NFS服務端配置方法如下:x0dx0a(1)修改 /etc/dfs/dfstab, 增加共享目錄x0dx0ashare -F nfs -o rw /export/home/sunkyx0dx0a(2)啟動nfs服務x0dx0a# /etc/init.d/nfs.server startx0dx0a(3)NFS服務啟動以後,也可以使用下面的命令增加新的共享x0dx0a# share /export/home/sunky1x0dx0a# share /export/home/sunky2x0dx0a註:/export/home/sunky和/export/home/sunky1是准備共享的目錄x0dx0ax0dx0a2、linux系統NFS服務端配置方法如下:x0dx0a(1)修改 /etc/exports,增加共享目錄x0dx0a/export/home/sunky 10.140.133.23(rw)x0dx0a/export/home/sunky1 *(rw)x0dx0a/export/home/sunky2 linux-client(rw)x0dx0a註:/export/home/目錄下的sunky、sunky1、sunky2是准備共享的目錄,10.140.133.23、*、 linux-client是被允許掛接此共享linux客戶機的IP地址或主機名。如果要使用主機名linux-client必須在服務端主機 /etc/hosts文件里增加linux-client主機ip定義。格式如下:x0dx0a10.140.133.23 linux-clientx0dx0a(2)啟動與停止NFS服務x0dx0a/etc/rc.d/init.d/portmap start (在REDHAT中PORTMAP是默認啟動的)x0dx0a/etc/rc.d/init.d/nfs start 啟動NFS服務x0dx0a/etc/rc.d/init.d/nfs stop 停止NFS服務x0dx0a註:若修改/etc/export文件增加新的共享,應先停止NFS服務,再啟動NFS服務方能使新增加的共享起作用。使用命令exportfs -rv也可以達到同樣的效果。x0dx0a3、linux客戶端掛接(mount)其他linux系統或UNIX系統的NFS共享x0dx0a# mkdir _p /mnt/nfsx0dx0a註:建立一個目錄用來作掛接點(mount point)x0dx0a#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfsx0dx0a註:這里我們假設10.140.133.9是NFS服務端的主機IP地址,當然這里也可以使用主機名,但必須在本機/etc/hosts文件里增加服務端ip定義。/export/home/sunky為服務端共享的目錄。x0dx0a如此就可以在linux客戶端通過/mnt/nfs來訪問其它linux系統或UNIX系統以NFS方式共享出來的文件了。以上操作在 redhat as server 3、redflag server4.1、suse server 9以及Solaris 7、Solaris 8、Solaris 9 for x86&sparc環境下測試通過。x0dx0a許可權問題:x0dx0a假設 server 端的使用者 jack, user id 為 1818, gid 為 1818, client 端也有一個使用者 jack,但是 uid 及 gid 是 1818。client 端的 jack 希望能完全讀寫 server 端的 /home/jack 這個目錄。server 端的 /etc/exports 是x0dx0a這樣寫的:x0dx0a /home/jack *(rw,all_squash,anonuid=1818,anongid=1818)x0dx0a這個的設定檔的意思是,所有 client 端的使用者存取 server 端 /home/jack 這x0dx0a目錄時,都會 map 成 server 端的 jack (uid,gid=1818)。我 mount 的結果是x0dx0a1. client 端的 root 可以完全存取該目錄, 包括讀、寫、殺??等x0dx0a2. client 端的 jack (uid,gid=1818) 我可以做:x0dx0a rm -rf server_jack/*x0dx0a cp something server_jack/x0dx0a mkdir server_jack/a
Ⅵ Linux NFS掛載,實現異地文件備份
最近做了一個文件的異地備份,採用網路掛載的方式,效果比之前用sync拷貝要方便的多。
也比之前簡單的多,其實也就是幾件事情。
首先是,需要備份的伺服器和備份的伺服器都裝上nfs。
yum install nfs-utils
有的可能還需要單獨安裝一下rpcbind
那就
yum install rpcbind
接著在被掛載伺服器編寫配置文件
vim /etc/exports
/root/work 192.168.0.3(rw,no_root_squash,no_all_squash,async)
/root/work 192.168.0.16(rw,no_root_squash,no_all_squash,async)
如像這樣,授權了本地的/root/work 目錄可以被兩個伺服器訪問,許可權是讀寫(rw)
這一部分就完成了。
接下來是需要備份的伺服器:
安裝玩nfs以後,在/mnt目錄下建一個目錄(通常都是在這個目錄下,別問為什麼?問就是通用習慣。)
cd /mnt
mkdir backserver
這就完成了目錄創建
接著也是最重要的一步
mount -t nfs 192.168.0.18:root/work/backup /mnt/backserver/
這條命令的意思是掛載192.168.0.18:root/work/backup目錄到本機的/mnt/backserver/
-t 是指定掛載類型,nfs,就是網路文件系統的簡稱。
這樣之後,本機的/mnt/backserver/存的文件實際上是存在192.168.0.18:root/work/backup目錄下的。
接下來就是一個見的文件拷貝命令。
rsync -avz /usr/local/nginx /usr/local/tomcat /mnt/backserver/09back
就把文件備份到192.168.0.18:root/work/backup目錄下了。
實現自動備份就更簡單了,直接把剛才的命令寫入shell腳本
保存為backup.sh
然後加入系統定時計劃
crontab -e
30 3 * * * sh /root/work/work/backup.sh
意思是每天三點執行一次腳本,就完成了自動異地備份。
整個過程還是很簡答的,其中涉及一個cs的模式。
需要知道:
1,是客戶端掛載到服務端。
2,服務端需要授予客戶端訪問許可權。
Ⅶ Linux中nfs協議是干什麼用的
NFS是NetworkFileSystem的簡寫,即網路文件系統.
網路文件系統是FreeBSD支持的文件系統中的一種,也被稱為NFS.NFS允許一個系統在網路上與它人共享目錄和文件。通過使用NFS,用戶和程序可以象訪問本地文件一樣訪問遠端系統上的文件。
以下是NFS最顯而易見的好處:
1.本地工作站使用更少的磁碟空間,因為通常的數據可以存放在一台機器上而且可以通過網路訪問到。
2.用戶不必在每個網路上機器里頭都有一個home目錄。Home目錄可以被放在NFS伺服器上並且在網路上處處可用。
3.諸如軟碟機,CDROM,和Zip®之類的存儲設備可以在網路上面被別的機器使用。這可以減少整個網路上的可移動介質設備的數量。
NFS至少有兩個主要部分:一台伺服器和一台(或者更多)客戶機。客戶機遠程訪問存放在伺服器上的數據。為了正常工作,一些進程需要被配置並運行。
NFS有很多實際應用。下面是比較常見的一些:
1.多個機器共享一台CDROM或者其他設備。這對於在多台機器中安裝軟體來說更加便宜跟方便。
2.在大型網路中,配置一台中心NFS伺服器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網路以便用戶不管在哪台工作站上登錄,總能得到相同的home目錄。
3.幾台機器可以有通用的/usr/ports/distfiles目錄。這樣的話,當您需要在幾台機器上安裝port時,您可以無需在每台設備上下載而快速訪問源碼。
註:NFS由Sunmicrosystems公司開發。是一種網路操作系統,並且是unix操作系統的協議。
Ⅷ linux中的NFS是干什麼的
NFS(Network File System)即網路文件系統,是FreeBSD支持的文件系統中的一侍備薯種,它允許網路中的計算機之間通過TCP/IP網路共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS伺服器上的文件,就像訪老者問本地文滾旁件一樣。
Ⅸ linux安裝nfs之後沒有/proc/net/roc/nfs文件
Linux伺服器間共享文件的方式有很多種(ftp、smba、nfs)這里給介紹以下,Linux下nfs文件共享方式和實現的方法。
1、首先要開啟portmap和nfs服務。
service portmap start
service nfs start
2、查看服務是否開啟。
netstat -ntpl
3、修改 /etc/exports
vi /etc/exports
#/home/temp *(rw,sync,no_root_squash,all_squash)
/home/temp *(ro,sync,no_root_squash,all_squash) (/home/temp 表示要被共享的目錄)
/mnt/inst *(ro,sync) (* 表示任意地址)
下面是一些NFS共享的常用參數:
rw: 可讀寫的許可權;
ro: 只讀的許可權;
no_root_squash: 登入到NFS主機的用戶如果是ROOT用戶,他就擁有ROOT的許可權root_squash:
在登入 NFS 主機使用目錄的使用者如果是 root 時,那麼這個使用者的許可權
將被壓縮成為匿名使用者,通常咐賣他的 UID 與 GID 都會變成 nobody 那個身份;
all_squash: 不管登陸NFS主機的用戶是什麼都會被重新衡隱逗設定為nobody.
anonuid: 將登入NFS主機的用戶都設定成指定的user id,此ID必須存在於/etc/passwd中。
anongid: 同 anonuid ,但是變成 group ID 就是了!
sync: 資料同步寫入存儲器中。
async: 資料會攜辯先暫時存放在內存中,不會直接寫入硬碟。
insecure 允許從這台機器過來的非授權訪問。
4、exportfs -a (到處所以共享的目錄)
exportfs -rv (相當於重啟NFS)
5、showmount -e 127.0.0.1 (查被共享的目錄)
Export list for 127.0.0.1:
/mnt/inst *
/home/temp *
6、在客戶端輸入所需要的共享文件。
mount -t nfs 192.168.111.1:/mnt/inst /mnt (mount伺服器上的共享目錄)
7、在客戶端使用mount命令,就可以看到剛才被mount的文件了。