1. 程式人生 > 其它 >Linux NFS掛載時候解決的記錄

Linux NFS掛載時候解決的記錄

前言:

NFS環境搭建時候遇到的問題記錄:

除錯jetson-nano時候,需要互相傳一些檔案,本來是想用scp傳輸就好了,覺得不是很方便,就使用了nfs網路檔案系統,在搭建環境使用過程中遇到一些問題,寫這篇文章用來記錄和分享,

搭建環境介紹

網路檔案系統,常被稱為NFS(Network File System),它是一種非常便 捷的在伺服器與客戶端通過網路共享檔案的方式。

開啟了NFS服務後,客戶端訪問伺服器共享的檔案時如同訪問本 地儲存器(磁碟/SD卡/NAND FLASH等)上的檔案一樣,,在嵌入式開發時,我們常常利用這個特性在主機上共享檔案,主要應用場景如下:

搭建環境主要包含連線網路、主機開啟NFS服務 以及從機掛載檔案系統三個步驟。
其中,我本次掛載裝置目錄資訊為:
服務主機共享目錄為:/home/jetson/Pictures,
從機的掛載目錄為:/home/lyn/jetson_nano/nfs_dir/。
主機IP:172.16.60.174 不過我在後續都以 jetson_nano

來映射了。

地一個任務是去互相ping掛載的對方,如果ping通再執行下一步。

使用此條命令執行掛載

sudo mount -t nfs jetson_nano:/home/jetson/Pictures  /home/lyn/jetson_nano/nfs_dir/

掛載遇到的問題

問題 1
mount.nfs: requested NFS version or transport protocol is not supported

主機沒有安裝NFS服務,需要使用如下命令安裝NFS服務端軟體:

安裝nfsserver

sudo apt install nfs-kernel-server 


問題 2


sudo mount -t nfs jetson_nano:/home/jetson/Pictures /home/lyn/jetson_nano/nfs_dir/ mount.nfs: access denied by server while mounting jetson_nano:/home/jetson/Pictures

配置nfs服務端
安裝 NFS 服務後,會新增一個 /etc/exports 檔案,在 /etc/exports 檔案末尾新增如下語句並儲存。
vi /etc/exports新增以下內容: /home/jetson/Pictures 172.16.0.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check) /home/jetson/Pictures *(insecure,rw,async,no_root_squash)


解釋一下該命令下詳細的資訊

/home/jetson/Pictures 172.16.0.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
/home/jetson/Pictures *(insecure,rw,async,no_root_squash)
  • /home/jetson/Pictures :要共享的開發主機目錄,注意使用空格與後面的配置隔開。

  • 172.16.0.0/24:配置誰可以訪問,其中的/24是掩碼,此處表示24個1,即11111111.11111111.11111111.00000000, 即掩碼是255.255.255.0。結合前面172.16.0.0表示此處配置IP為 172.16.*的主機均可以訪問該目錄,即區域網上的所有主機。
    若區域網是其它網段,請參考此處的配置,不能直接用星號表示,如欲配 置172.16.1.* 的區域網下所有機器都可以訪問,則配置為 172.16.1.0/24
    這個配置域也可以直接寫可訪問的主機名,如把“172.16.0.0/24”替換為從機名“jetson-client”,則僅該從機能訪問共享的目錄。(此處可以使用showmount -e 檢視)

  • rw: 表示客戶機的許可權,rw表示可讀寫,具體的許可權還受檔案系統的rwx及使用者身份影響。

  • sync:資料同步寫入到記憶體與硬碟中。

  • anonuid=1000:將客戶機上的使用者對映成指定的本地使用者ID的使用者,此處1000是主機使用者的uid,此處請根據具體的主機使用者uid進行配置。

  • anongid=1000: 將客戶機上的使用者對映成屬於指定的本地使用者組ID,此處1000是主機使用者組gid,此處請根據具體的主機使用者組gid進行配置。

  • no_subtree_check:不檢查子目錄許可權,預設配置。

本地使用者ID和本地使用者 組ID可以使用id命令檢視:

id


更新exports配置

sudo exportfs -arv


檢視NFS共享情況

showmount -e

開始掛載操作

這個時候就可以正常掛載NFS檔案系統了,只不過使用命令列掛載的操作屬於臨時掛載,裝置在重啟後需要重新掛載該NFS目錄才能訪問。

使用mount命令掛載NFS伺服器的共享目錄到從機/home/lyn/jetson_nano/nfs_dir/目錄下:

注意:需要把下面的jetson_nano設定為使用者實際網路環境下的NFS伺服器IP,我此處的jetson_nano在hosts進行了對映,實際IP是172.16.60.174

以下命令在從機上執行

sudo mount -t nfs jetson_nano:/home/jetson/Pictures  /home/lyn/jetson_nano/nfs_dir/
  • -t nfs:指定掛載的檔案系統格式為nfs。
  • jetson_nano:指定NFS伺服器的IP地址。
  • /home/jetson/Pictures:指定NFS伺服器的共享目錄。
  • /home/lyn/jetson_nano/nfs_dir/:本地掛載目錄,NFS伺服器的共享目錄對映到從機的 /home/lyn/jetson_nano/nfs_dir/

    若掛載成功,終端不會有輸出。

取消掛載

sudo umount   nfs_dir/

作者:良知猶存,白天努力工作,晚上原創公號號主。公眾號內容除了技術還有些人生感悟,一個認真輸出內容的職場老司機,也是一個技術之外豐富生活的人,攝影、音樂 and 籃球。關注我,與我一起同行。

                              ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

推薦閱讀

【1】jetson nano開發使用的基礎詳細分享

【2】Linux開發coredump檔案分析實戰分享

【3】CPU中的程式是怎麼執行起來的 必讀

【4】cartographer環境建立以及建圖測試

【5】設計模式之簡單工廠模式、工廠模式、抽象工廠模式的對比

本公眾號全部原創乾貨已整理成一個目錄,回覆[ 資源 ]即可獲得。