由于Linux系統對SMB協議的兼容程度較低,建議僅在需要跨操作系統共享數據的情況下使用Linux系統掛載SMB協議文件系統。本文主要介紹如何將SMB協議文件系統掛載至云服務器ECS(Linux)上并執行讀寫操作。
前提條件
在創建SMB協議文件系統的地域,已有可用的云服務器ECS(Linux)。具體操作,請參見創建ECS實例。
重要Linux系統推薦掛載使用NFS協議文件系統。由于Linux系統對SMB協議的兼容程度較低,建議僅在需要跨操作系統共享數據的情況下使用Linux系統掛載SMB協議文件系統。
由于Linux一些早期版本的SMB客戶端在某些場景有缺陷,如果您使用了非官方支持的Linux操作系統版本,阿里云不能保證該SMB協議文件系統的可靠性。
NAS SMB協議文件系統官方支持如下的Linux操作系統版本。如果沒有特別聲明,本文僅針對以下Linux操作系統版本:
操作系統類型
操作系統版本
CentOS
CentOS 7.6 64位:3.10.0-957.21.3.el7.x86_64及以上
Alibaba Cloud Linux
Alibaba Cloud Linux 2.1903 64位:4.19.43-13.2.al7.x86_64及以上
Alibaba Cloud Linux 3.2104 64位:5.10.23-4.al8.x86_64及以上
Debian
Debian 9.10 64位:4.9.0-9-amd64及以上
Ubuntu
Ubuntu 18.04 64位:4.15.0-52-generic及以上
OpenSUSE
OpenSUSE 42.3 64位:4.4.90-28-default及以上
SUSE Linux
Enterprise Server 12 SP2 64位:4.4.74-92.35-default及以上
CoreOS
CoreOS 2079.4.0 64位:4.19.43-coreos及以上
已創建SMB協議文件系統。具體操作,請參見通過控制臺創建通用型NAS文件系統。
已添加掛載點。具體操作,請參見添加掛載點。
網絡連通。
確保云服務器ECS(Linux)和SMB文件系統在同一個專有網絡VPC中。
檢查文件系統白名單,確保云服務器ECS(Linux)已經被授予訪問該SMB文件系統的權限。
確保端口445處于打開狀態,SMB文件系統將通過TCP端口445通信。
如果端口445未打開,請在目標ECS實例的安全組中添加關于端口445的安全組規則。具體操作,請參見添加安全組規則。
安裝CIFS客戶端
在Linux系統中掛載SMB協議文件系統時,需要先安裝CIFS客戶端。請您確保每臺Linux服務器執行一次配置即可,不需要在每次掛載時都執行。
連接ECS(Linux)實例。具體連接方式,請參見連接ECS實例。
安裝CIFS客戶端。
Ubuntu、Debian
通過apt-get軟件包管理工具進行安裝。
sudo apt-get update sudo apt-get install cifs-utils
RHEL、CentOS、Alibaba Cloud Linux
通過yum包管理器進行安裝。
sudo yum install cifs-utils
OpenSUSE、SLES12-SP2
通過zypper工具進行安裝。
sudo zypper install cifs-utils
CoreOS
通過以下方法進行安裝:
配置SELINUX。
sed -i 's/SELINUXTYPE=mcs/SELINUXTYPE=targeted/' /etc/selinux/config
在CoreOS操作系統上手動編譯CIFS客戶端工具。
您可以參照以下步驟啟動一個Fedora容器來編譯CIFS客戶端工具。或下載阿里云官方提供的名CoreOS版本的CIFS工具包,并拷貝至/tmp/或者/bin目錄。
在CoreOS上啟動一個Fedora容器自行編譯cifs-utils。
docker run -t -i -v /tmp:/cifs fedora /bin/bash
在docker環境內依次運行以下命令。
yum groupinstall -y "Development Tools" "Development Libraries"
yum install -y bzip2
curl https://download.samba.org/pub/linux-cifs/cifs-utils/cifs-utils-6.9.tar.bz2 --output cifs-utils-6.9.tar.bz2;
bunzip2 cifs-utils-6.9.tar.bz2 && tar xvf cifs-utils-6.9.tar
cd cifs-utils-6.9; ./configure && make
cp mount.cifs /cifs/
exit
掛載SMB協議文件系統
在Linux操作系統中,NAS SMB協議文件系統支持通過手動掛載和自動掛載兩種方式進行掛載。手動掛載適用于臨時掛載,每次服務器啟動或重啟后都需要重新掛載。自動掛載適用于持久掛載,每次服務器啟動或重啟后都無需重新掛載。為避免服務器重啟后,掛載信息丟失,導致無法查看已掛載的文件系統,建議您手動掛載成功后,配置自動掛載文件系統。
手動掛載文件系統
您需要使用文件系統的掛載點地址,將NAS SMB協議文件系統掛載至Linux ECS實例。
連接ECS(Linux)實例。具體連接方式,請參見連接ECS實例。
執行以下命令,掛載文件系統。
sudo mount -t cifs //file-system-id.region.nas.aliyuncs.com/myshare /mnt -o vers=2.1,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576
掛載命令格式為:
sudo mount -t cifs //<掛載點地址>/myshare <掛載目錄> -o <掛載選項>
參數
說明
文件系統類型
在Linux操作系統中掛載SMB協議文件系統,必須配置
-t cifs
參數。掛載點地址
添加文件系統掛載點時,自動生成的掛載點地址,請根據實際值替換。您可以在NAS控制臺,單擊目標文件系統,然后單擊掛載使用,將鼠標放置在掛載點地址列的圖標上獲取掛載點地址。
myshare
SMB文件系統的共享目錄名稱,不支持變更。
掛載目錄
您要掛載的目標路徑,例如:/mnt/sharepath。
掛載選項
通過添加
-o
參數指定掛載必選選項:vers:支持2.1及以上協議版本。
guest:只支持基于ntlm認證協議的客戶端掛載。
rsize:用來設置讀數據包的最大限制。一般需要設置成1048576(1 MB)。
wsize:用來設置寫數據包的最大限制,一般需要設置成1048576(1 MB)。
通過添加
-o
參數指定掛載可選選項:uid:掛載成功后,文件所屬的用戶。如果未設置uid,則默認uid=0。
gid:掛載成功后,文件所屬的用戶組。如果未設置gid,則默認gid=0。
dir_mode:向用戶授予指定目錄的讀取、寫入和執行權限。必須以0開頭,例如:0755、0644等。如果未設置dir_mode,則默認dir_mode=0755。
file_mode:向用戶授予普通文件的讀取、寫入和執行權限。必須以0開頭,例如:0755、0644等。如果未設置file_mode,則默認file_mode=0755。
mfsymlinks:支持symbol link功能。
cache:
cache=strict:設置SMB文件系統使用客戶端緩存。如果未設置cache,則默認cache=strict。
cache=none:設置SMB文件系統不使用客戶端緩存。
atime|relatime:如果您的業務對文件的訪問時間非極度敏感,請勿使用atime選項,默認采用relatime方式掛載。
說明授予云服務器(Linux)管理員擁有對SMB文件系統的絕對控制權限。
您可以使用
mount | grep cifs
命令查詢自己的掛載點信息。如果您使用非官方支持的Linux操作系統版本,強烈建議使用內核在3.10.0-514以上的版本。如果Linux kernel版本小于等于3.7,必須在掛載選項中設置cache=strict參數。您可以執行
uname -a
命令檢查當前內核版本。
執行
mount -l
命令,查看掛載結果。如果回顯包含如下類似信息,說明掛載成功。
掛載成功后,您可以執行
df -h
命令,查看當前文件系統的容量信息。如果掛載失敗,請進行錯誤排查。具體操作,請參見Linux掛載SMB協議文件系統失敗排查思路進行排查。
掛載成功后,您可以在ECS(Linux)上訪問NAS SMB協議文件系統,執行讀取或寫入操作。
您可以把NAS SMB協議文件系統當作一個普通的目錄來訪問和使用,示例如下:
(可選)自動掛載文件系統
您可以通過配置Linux ECS實例的/etc/fstab
文件,實現ECS重啟時自動掛載SMB協議文件系統。
在配置自動掛載前,請先確認手動掛載成功,避免ECS啟動失敗。
打開/etc/fstab配置文件,添加自動掛載配置。
//<掛載點地址>/myshare /mnt cifs vers=3,guest,uid=0,gid=0,dir_mode=0755,file_mode=0755,mfsymlinks,cache=strict,rsize=1048576,wsize=1048576 0 0
示例中主要參數說明,請參見SMB(Linux)掛載命令參數說明表。其余參數說明如下。
參數
說明
0(wsize值后第一項)
非零值表示文件系統應由dump備份。對于NAS文件系統而言,此值默認為0。
0(wsize值后第二項)
該值表示fsck在啟動時檢查文件系統的順序。對于NAS文件系統而言,此值默認為0,表示fsck不應在啟動時運行。
執行
reboot
命令,重啟云服務器ECS。重要重啟云服務器會中斷業務,建議您在業務低谷時期重啟云服務器。
驗證自動掛載配置成功。
說明在ECS重啟后的一分鐘內,執行
df -h
命令,確認掛載的NAS文件系統。
經典使用場景
不同的使用場景,可配置不同的掛載選項,實現文件系統最優性能。經典的使用場景及掛載選項配置如下所示:
云服務器ECS(Linux)共享訪問場景
在多個云服務器ECS(Linux)中需要共享訪問文件系統數據,但沒有用戶權限控制要求,被授權的云服務器ECS(Linux)管理員可以使用如下方法在各個云服務器ECS(Linux)上執行掛載。
mount -t cifs //file-system-id.region.nas.aliyuncs.com/myshare /mnt/sharepath -o vers=2.1,guest,mfsymlinks
重要參數說明如下:
file-system-id.region.nas.aliyuncs.com
:文件系統掛載點的掛載點地址,請根據實際值替換。您可以在NAS控制臺,單擊目標文件系統,然后單擊掛載使用,將鼠標放置在掛載點地址列的圖標上獲取掛載點地址。/mnt/sharepath
:待掛載文件系統的目標路徑,請根據實際值替換。
多用戶Home Directory場景
在多個云服務器ECS(Linux)中需要共享訪問文件系統數據時,如果有權限控制需求,可以通過掛載時指定uid、gid、dir_mode、file_mode參數實現。
云服務器ECS(Linux) WebServer共享訪問場景
在多個云服務器ECS(Linux)上安裝WebServer(如Apache),且SMB文件系統作為共享文件存儲。
SMB文件系統主要特點是共享訪問、橫向擴展、高可用,由于和本地硬盤實現機理不同,某些場景的小文件訪問性能上會稍微有一些差距。對于WebServer場景,如果想要達到極致性能,可以考慮只將需要共享的文件放在SMB文件系統上,而將不需要共享訪問的WebServer程序等放在本地硬盤。
WebServer應用通常網絡協議通訊負載較大,此場景需要開通WebServer加速功能,請您聯系阿里云NAS團隊申請開通。
云服務器ECS(Windows)和云服務器ECS(Linux)共享訪問場景
如果您需要同時從云服務器ECS(Windows)和云服務器ECS(Linux)訪問SMB文件系統的內容。則需要在云服務器ECS(Linux)掛載時一定使用客戶端緩存,即設置cache=strict或者默認方式掛載。
訪問控制
阿里云文件存儲NAS SMB協議文件系統支持基于AD域系統的用戶身份認證及文件系統級別的權限訪問控制。以域用戶身份連接并訪問SMB協議文件系統,可以實現對SMB協議文件系統中的文件及目錄級別的訪問控制。
關于如何實現以AD域系統的用戶身份認證及文件系統級別的權限訪問控制,請參見將SMB文件系統掛載點接入AD域和Linux客戶端以AD域用戶身份掛載并使用SMB文件系統。
相關文檔
如果您想對SMB協議文件系統中的數據進行備份,請參見通用型NAS備份。
您也可以開啟回收站功能,在誤刪除通用型NAS文件系統中的文件時,可以通過NAS回收站恢復這些文件及其UID、GID和ACL等元數據信息。更多信息,請參見回收站。
如果您是想在本地服務器或線下IDC中掛載訪問SMB協議文件系統,請參見本地數據中心訪問文件系統。
如果您需要跨VPC、跨地域或跨賬號掛載文件系統,您可以通過阿里云云企業網功能實現。具體操作,請參見通過云企業網實現同地域跨VPC掛載NAS或通過云企業網實現跨賬號跨地域掛載NAS。