操作場景
當創建文件存儲后,您需要使用邊緣虛擬機來掛載該文件存儲,以實現多個邊緣虛擬機共享使用文件存儲的目的。
- 同一文件存儲不能同時支持 NFS 協議和 SMB 協議。
- 邊緣裸金屬服務器操作與邊緣虛擬機一致,但裸金屬服務器使用的是 underlay 的 VPC 網絡掛載文件存儲。
前提條件
- 在需要操作的地域創建虛擬私有云 VPC。
- 已創建該 VPC 下的邊緣虛擬機,并根據操作系統類型,安裝相應的 NFS 客戶端。
- 已創建該 VPC 下的文件存儲,協議類型為 NFS,并獲取到文件存儲的掛載點名稱。
- 如果需要跨 VPC 訪問文件存儲,需要配置對等連接以確保 VPC 網絡互通。
操作步驟
- 以 root 用戶登錄彈性邊緣虛擬機。
- 安裝 NFS 客戶端。
- 查看系統是否安裝 NFS 軟件包。
說明CentOS、Red Hat、Oracle Enterprise Linux、SUSE、Euler OS、Fedora或OpenSUSE系統下,執行如下命令:
rpm -qa|grep nfs
Debian或Ubuntu系統下,執行如下命令:
dpkg -l nfs-common
- 不同操作系統回顯會有所不同,如果回顯如下類似信息,說明已經成功安裝 NFS 軟件包。
說明CentOS、Red Hat、Euler OS、Fedora 或 Oracle Enterprise Linux 系統下,回顯如下類似信息:
libnfsidmap
nfs-utils
SUSE 或 OpenSUSE 系統下,回顯如下類似信息:
nfsidmap
nfs-client
Debian 或 Ubuntu 系統下,回顯如下類似信息:
nfs-common
- 如果查看到未安裝,根據不同的操作系統,執行不同命令。
注意執行以下命令前要求邊緣虛擬機已連接到互聯網,否則安裝 NFS 客戶端失敗。
說明CentOS、Red Hat、Euler OS、Fedora 或 Oracle Enterprise Linux 系統下,執行如下命令:
sudo yum -y install nfs-utils
Debian 或 Ubuntu 系統下,執行如下命令:
sudo apt-get install nfs-common
SUSE 或 OpenSUSE 系統下,執行如下命令:
zypper install nfs-client
- 執行如下命令,創建用于掛載文件存儲的本地路徑。
mkdir 本地路徑
說明如果本地路徑已掛載其他磁盤等資源,為被占用狀態時,需要新建其它目錄進行掛載(nfs 客戶端不會對重復掛載進行攔截,當重復掛載時會表現為最后一次成功掛載的信息)。
- 執行如下命令,將文件存儲掛載到與文件存儲所屬 VPC 相同的邊緣虛擬機上。
mount -t nfs -o vers=3,timeo=600,noresvport,nolock 掛載地址 本地路徑
- 參數說明
| 參數 | 說明 |
|---|---|
| vers | 文件存儲版本,支持 NFSv3 和 NFSv4。如果您的業務場景不包含多臺實例同時編輯同一個文件,建議您選擇 NFSv3,達到最優性能。 |
| timeo | NFS 客戶端重傳請求前的等待時間(單位為 0.1 秒)。建議值:600。 |
| noresvport | 指定 NFS 客戶端向 NFS 服務端重新發起建立連接時使用新的 TCP 端口。強烈建議使用 noresvport 參數,這可以保障網絡發生故障恢復事件后文件存儲服務不會中斷。 |
| lock/nolock | 選擇是否使用 NLM 協議在服務器上鎖文件。當選擇 nolock 選項時,鎖對于同一主機的應用有效,對不同主機不受鎖的影響。建議值:nolock。如不加此參數,則默認為 lock,就會發生其他服務器無法對此文件存儲寫入的情況。ECX文件存儲暫不支持非本地鎖操作,需要顯式添加 nolock 參數防止客戶端調用非本地鎖而導致搶鎖失敗的寫入慢問題。 |
| proto | NFS 客戶端向服務器發起傳輸請求使用的協議,可以為 UDP 或者 TCP。 |
| 掛載地址 | 文件存儲的格式為:文件存儲 ip:/ 路徑,例如:192.168.0.10:/var/ecx/file-nvme-cv4lq0bkrj0lnj8u23n0。 |
| 本地路徑 | 邊緣虛擬機上用于掛載文件存儲的本地路徑,例如 “/local_path”。 |
注意請將上述命令中的 “掛載地址” 替換為實際的文件存儲 IP 地址及路徑,將 “本地路徑” 替換為在邊緣虛擬機上創建的具體本地路徑。
- 掛載文件存儲時,更多性能調優的掛載參數,可參考更多參數配置,各參數之間以逗號進行分隔。例如:
mount -t nfs -o vers=3,timeo=600,nolock,rsize=1048576,wsize=1048576,hard,retrans=3,tcp,noresvport,ro,async,noatime,nodiratime 掛載地址 本地路徑
- 更多參數
| 參數 | 說明 |
|---|---|
| rsize | 每次向服務器讀取文件的最大字節數。實際數據小于或等于此值。rsize 必須是 1024 倍數的正整數,小于 1024 時自動設為 4096,大于 1048576 時自動設為 1048576。默認時,服務器和客戶端進行協商后設置。建議設置為最大值 1048576。 |
| wsize | 每次向服務器寫入文件的最大字節數。實際數據小于或等于此值。wsize 必須是 1024 倍數的正整數,小于 1024 時自動設為 4096,大于 1048576 時自動設為 1048576。默認時,服務器和客戶端進行協商后設置。建議設置為最大值 1048576。 |
| soft/hard | 取值為 soft,即軟掛載方式掛載系統,如果 NFS 請求超時,則客戶端向調用程序返回錯誤;取值為 hard,即使用硬連接方式,如果 NFS 請求超時,則客戶端一直重新請求直至成功。默認為 hard。 |
| retrans | 客戶端返回錯誤前的重傳次數。建議值:1。 |
| tcp/udp | 不指定 mountproto 時,客戶端默認先嘗試使用 udp 協議掛載,如果 udp 網絡不通則會在卡頓幾秒后再嘗試 tcp 協議掛載。當前默認沒有放通安全組入方向 mount 協議的 udp 端口號,需要將 mount 掛載協議設置為 TCP 傳輸協議,即 mountproto=tcp。 |
| ro/rw | ro:表示采用只讀的方式掛載。rw:表示采用讀寫的方式掛載。默認為 rw。未寫明 ro/rw 時,則默認為采用 rw 讀寫的方式掛載。 |
| noresvport | 指定 NFS 客戶端向 NFS 服務端重新發起建立連接時使用新的 TCP 端口。強烈建議使用 noresvport 參數,這可以保障網絡發生故障恢復事件后文件存儲服務不會中斷。 |
| sync/async | sync 為同步寫入,表示將寫入文件的數據立即寫入服務端;async 為異步寫入,表示將數據先寫入緩存,再寫入服務端。同步寫入要求 NFS 服務器必須將每個數據都刷入服務端后,才可以返回成功,時延較高。建議設置為 async。 |
| noatime | 如果不需要記錄文件的訪問時間,可以設置該參數。避免頻繁訪問時,修改訪問時間帶來的開銷。 |
| nodiratime | 如果不需要記錄目錄的訪問時間,可以設置該參數。避免頻繁訪問時,修改訪問時間帶來的開銷。 |
說明沒有 “使用建議” 的參數推薦使用默認參數。
- 掛載完成后,執行如下命令,查看已掛載的文件存儲。
mount -l
如果回顯包含如下類似信息,說明掛載成功。
掛載地址 on /local_path type nfs (rw,vers=3,timeo=600,nolock,addr=)
- 掛載成功后,用戶可以在邊緣虛擬機上訪問文件存儲,執行讀取或寫入操作。