Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

linux-nfs-server - 如何在 ubuntu 啟用 NFS Server

Youtube Tutorial - 如何在 ubuntu 啟用 NFS Server

NFS (Network File System)

NFS 的優點是在 linux 上佈署簡單, 傳輸速度(相對 FTP)快.

NFS 的缺點就是加密的部份, 因為單純只是使用 IP 而已, 相對 FTP 來說比較不安全.

(但如果搭配內網以及防火牆應該會安全很多 ☺️)

server 端

在這邊我是使用 ubuntu 18.04,

安裝 NFS Server

sudo apt install nfs-kernel-server

建立要分享的資料夾 ( NFS mount directory )

sudo mkdir -p /mnt/nfs_shared

因為目標是讓 client 端可以訪問 shared directory, 所以移除資料夾權限以及 gropus

sudo chown -R nobody:nogroup /mnt/nfs_shared/

接著再給它最大 777 權限,

如果不懂, 可參考之前的 chmod 介紹

sudo chmod 777 /mnt/nfs_shared/

nfs 權限以及 ip 定義在 /etc/exports

sudo vim /etc/exports

alt tag

如果要設定很多 ip 就多寫幾行

/mnt/nfs_shared  client_IP_1 (rw,sync,no_subtree_check)
/mnt/nfs_shared  client_IP_2 (rw,sync,no_subtree_check)

rw 設定讀寫權限.

ro 設定唯讀.

sync 資料同步寫入到記憶體與硬碟當中.

async 資料會先暫存於記憶體當中,而非直接寫入硬碟.

Export the NFS Share Directory

sudo exportfs -a
sudo systemctl restart nfs-kernel-server

設定 Firewall

這部份建議要做, 安全一點

sudo ufw allow from client_IP to any port nfs

確認防火牆狀態

sudo ufw enable
sudo ufw status

client 端

安裝 NFS Client

sudo apt install nfs-common

建立資料夾

sudo mkdir -p /mnt/nfs_client

將 server 端的 nfs_shared 資料夾掛載

sudo mount server_IP:/mnt/nfs_shared  /mnt/nfs_client

如果可以在資料夾裡面讀寫資料就是成功了哦 😄

client 端開機自動掛載

執行以下指令 sudo vim /etc/fstab

 # <file system>     <dir>       <type>   <options>   <dump>	<pass>
192.168.7.123:/mnt/nfs_shared /mnt/nfs_shared  nfs      defaults    0       0

192.168.7.123:/mnt/nfs_shared 前面代表 server 的 ip, 後面為 server share 的路徑

/mnt/nfs_shared 本機要掛載的位置

如果開機還是沒有自動掛載, 請手動掛載 sudo mount /mnt/nfs_shared

client 端如何刪除掛載資料夾

要先卸除掛載, 才能刪除

sudo umount nfs_client
sudo rm -rf nfs_client

查 ip 指令

ip addr
ifconfig

docker NFS Volumes

docker 也可以建立 NFS Volumes, 方法如下,

version: '3.5'
services:
  nginx:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - "nfs-data:/data"

volumes:
    nfs-data:
      driver: local
      driver_opts:
        type: nfs
        o: nfsvers=4,addr=ip,rw
        device: ":/path/to/dir"

docker 相關文章可參考 Docker 基本教學 - 從無到有 Docker-Beginners-Guide