# Dell EMC Unity VSA - Part4: 建立 NAS 存儲服務 ###### tags: `dellemc` `unity` 使用 Unisphere CLI 組態 UnityVSA 的 NAS 服務,包含 NFS 及 SMB/CIFS 檔案共享 [toc] # 設定 NFS 檔案共用 Unity 儲存設備可以提供 CIFS/NFS 檔案共用的功能。兩者檔案共用的設定流程大致相同。 使用 Unispere GUI 界面設定 NAS 檔案共用服務時,總覺得 UI 設計的有點不夠人性化,有可能是我還沒掌握住其中的關鍵要領吧!勉強地研究並跟同事請教指導後,若要提供 CIFS/NFS 協定的 NAS 檔案共用服務,請透過以下程序逐步完成: ```mermaid graph TD; 建立NAS服務器-->建立NAS服務界面; 建立NAS服務界面-->建立NFS服務器; 建立NFS服務器-->建立NFS檔案系統; 建立NFS檔案系統-->建立NFS檔案分享; ``` :::warning - 這部份的設定在 GUI 操作界面,並沒有按照流程順序呈現,而是以 **檔案系統** - **CIFS/NFS 檔案分享** - **NAS 服務** 的順序顯示,所以在測試過程中,一直搞不懂之間的關聯。而且 NAS 服務與檔案系統及分享本身就存在著一對一對應的關聯性,為何不在 UI 設定界面中一氣呵成?! ![](https://i.imgur.com/oAnYR7s.png) - Unity 也提供**多協定檔案共用(Multiprotocol File Sharing)** 功能,可同時提供 SMB/NFS 檔案分享。但此方式有設定條件,且一般應用也不普遍,就暫時不研究討論了! ::: ## 管理 NAS 服務器 ### 建立 NAS 服務器 [](pp.107) NAS 服務器在存儲系統上屬於軟體元件,專門用於管理 SMB/NFS 協定進行數據傳輸的操作。**必須設定一組 NAS 服務器才能接續建立網路檔案共用存儲**。有了 NAS 服務器才能支援 SMB/NFS 網路檔案共用。**NAS 服務器在每組 SP 上運行**(UnityVSA 僅有一組 SPA),透過設定的界面與網路主機進行通訊,透過之後建立的檔案系統,提供主機存取檔案系統以達網路共用檔案的目的。 建立 NAS 服務器時**預設啟用 NFSv3 協定**。使用以下命令建立 NAS 服務器。 ```bash nas_name="NasServer_1" ## NAS 服務器需指定 SP Owner nas_spOwner='spa' pool_name='vPool_02' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server create -name "${nas_name}" -poolName "${pool_name}" -sp ${nas_spOwner} ID = nas_1 Operation completed successfully. ``` 使用以下命令檢視建立的 NAS 服務器。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server show 1: ID = nas_1 Name = NasServer_1 NetBIOS name = SP = spa Storage pool = pool_2 Interface = NFS enabled = yes NFSv3 enabled = yes NFSv4 enabled = no CIFS enabled = no Multiprotocol sharing enabled = no Unix directory service = none Health state = OK (5) ``` 從 Unisphere UI 界面 **STORAGE** > **File** > **NAS Servers** 檢視 NAS 服務器。 ![](https://i.imgur.com/9nXKpGK.png) ### 調整 NAS 服務器設定 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server -name "${nas_name}" set -enablePacketReflect yes ID = nas_1 Operation completed successfully. ``` :::info -enablePacketReflect: 啟用進出封包使用同一界面,預設值為 `yes`。但在測試時發現並未啟用。 ::: ### 顯示 NAS 服務器狀態 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server show -detail 1: ID = nas_1 Name = NasServer_1 NetBIOS name = SP = spa Storage pool = pool_2 Interface = NFS enabled = yes NFSv3 enabled = yes NFSv4 enabled = no CIFS enabled = no Workgroup = Windows domain = Multiprotocol sharing enabled = no Unix directory service = none Auto user mapping enabled = Default Unix user = Default Windows username = Extended Unix credentials enabled = no Credentials cache retention = 15m Username translation = Packet Reflect enabled = yes Health state = OK (5) Health details = "The component is operating normally. No action is required." Type = 64 Replication type = none Synchronous replication type = none Replication destination = no Backup only = no Migration Destination = no Preferred production interfaces overridden = Preferred production IPv4 interface = auto Preferred production IPv6 interface = auto Preferred backup and DR test IPv4 interface = auto Preferred backup and DR test IPv6 interface = auto Source preferred production IPv4 interface = Source preferred production IPv6 interface = File space used = 2458501120 (2.2G) Data Reduction space saved = 0 Data Reduction percent = 0% Data Reduction ratio = 1.00:1 ``` ## 管理 NAS 界面 [](pp.125) NAS 界面表示 NAS 服務器所配置的網路界面。 ### 建立 NAS 界面 使用以下命令建立 NAS 使用界面。 ```bash nas_id='nas_1' nas_name="NasServer_1" nas_ifPort='spa_eth1' nas_ifIp='10.7.155.88' nas_ifNetmask='255.255.255.0' nas_ifGateway='10.7.155.254' nas_ifRole='production' ## Default production | backup uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/if create -serverName "${nas_name}" -port ${nas_ifPort} -addr ${nas_ifIp} -netmask ${nas_ifNetmask} -gateway ${nas_ifGateway} -role ${nas_ifRole} ID = if_4 Operation completed successfully. ``` ### 檢視 NAS 界面 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/if show -detail 1: ID = if_4 NAS server = nas_1 Port = spa_eth1 VLAN ID = IP address = 10.7.155.88 Subnet mask = 255.255.255.0 Gateway = 10.7.155.254 MAC address = 00:50:56:B3:21:AA SP = spa Preferred = yes Health state = OK (5) Health details = "The component is operating normally. No action is required." Role = production Replication sync = Source IP address = Source VLAN ID = Source subnet mask = Source gateway = ``` Unisphere UI 界面 **STORAGE** > **File** > **NAS Servers**,選擇 NAS 服務器編輯檢視。 - General ![](https://i.imgur.com/9hz3WyP.png) - Network > Interfaces & Routes ![](https://i.imgur.com/HXSmUwH.png) - Network > Routers to External Services ![](https://i.imgur.com/W0VTyQa.png) ### 刪除 NAS 界面 ```bash nas_if='if_6' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/if -id ${nas_if} delete ``` :::warning 刪除該界面有可能會中斷正連接使用中的主機系統。 ::: :::info - NAS 服務器所使用的 NAS 界面,在 Unisphere UI 界面需編輯 NAS 服務器內容時顯示。 - 以命令 `/net/if show` 可顯示所有配置的界面資訊。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/if show 1: ID = mgmt_ipv4 Type = mgmt NAS server = Port = VLAN ID = IP address = 10.7.155.85 Subnet mask = 255.255.255.0 Gateway = 10.7.155.254 IPv4 mode = static IPv4 address = 10.7.155.85 IPv4 subnet mask = 255.255.255.0 IPv4 gateway = 10.7.155.254 IPv6 mode = IPv6 address = IPv6 gateway = SP = Preferred = 2: ID = if_4 Type = file NAS server = nas_1 Port = spa_eth1 VLAN ID = IP address = 10.7.155.88 Subnet mask = 255.255.255.0 Gateway = 10.7.155.254 IPv4 mode = IPv4 address = 10.7.155.88 IPv4 subnet mask = 255.255.255.0 IPv4 gateway = 10.7.155.254 IPv6 mode = IPv6 address = IPv6 gateway = SP = spa Preferred = yes 3: ID = if_2 Type = replication NAS server = Port = spa_eth1 VLAN ID = IP address = 10.7.155.86 Subnet mask = 255.255.255.0 Gateway = 10.7.155.254 IPv4 mode = IPv4 address = 10.7.155.86 IPv4 subnet mask = 255.255.255.0 IPv4 gateway = 10.7.155.254 IPv6 mode = IPv6 address = IPv6 gateway = SP = spa Preferred = yes 5: ID = if_3 Type = iscsi NAS server = Port = spa_eth0 VLAN ID = IP address = 10.7.155.87 Subnet mask = 255.255.255.0 Gateway = 10.7.155.254 IPv4 mode = IPv4 address = 10.7.155.87 IPv4 subnet mask = 255.255.255.0 IPv4 gateway = 10.7.155.254 IPv6 mode = IPv6 address = IPv6 gateway = SP = spa Preferred = ``` ::: ## 管理 NFS 服務器 [](pp.144) 由於建立 NAS 服務器時預設已經啟用 NFSv3,所以 NFS 服務器已經自動建立完成。 ### 建立 NFS 服務器 每個 NAS 服務器僅能建立一組 NFS 服務器。對於 CIFS 服務器亦然! 若要在 NAS 服務器 `${nas_name}` 建立 NFS 服務器(支援 MFSv3 & NFSv4),可參考以下命令。 ```bash nfsv3_enabled='yes' nfsv4_enabled='yes' nfs_secure='no' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/nfs create -serverName ${nas_name} -v3 ${nfsv3_enabled} -v4 ${nfsv4_enabled} -secure ${nfs_secure} ``` ### 檢視 NFS 服務器 使用以下命令顯示 NFS 服務器狀態。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/nfs show -detail 1: ID = nfs_1 NAS server = nas_1 NFSv3 enabled = yes NFSv4 enabled = no Hostname = Secure NFS enabled = no Kerberos Domain Controller type = Service principal name = Extended Unix credentials enabled = no Credentials cache retention = 15m ``` ### 更改 NFS 服務器設定 由於預設啟用 NFSv3,若想同時支持 NFSv4 協定,可以變更設定。 ```bash nfs_id='nfs_1' nfsv4_enabled='yes' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/nfs -id ${nfs_id} set -v4 ${nfsv4_enabled} ID = nfs_1 Operation completed successfully. ``` ![](https://i.imgur.com/W375EN7.png) ## 管理檔案系統 檔案系統(File System)是存儲系統上為主機提供基於檔案存儲資源的邏輯容器。在 NAS 服務器上需要配置檔案系統,負責維護及管理檔案系統,並建立網路分享,網路上的主機根據支援的協定進行存儲共享存取。 ### 建立 NFS 檔案系統 [](pp.322) 建立檔案系統的目的,在於決定要使用 CIFS/NFS 協定進行資料存放區的分享。這裡的目標為提供 NFS 檔案共享,所以需要建立 NFS 檔案系統,會與後續建立的 NFS 網路共享相關聯使用。 :::info **檔案系統建立條件** - 至少有一組存儲池 - 至少有一組 NAS 服務器 目前簡單的理解,就是在指定的存儲空間中劃分一塊空間並建立網路共享的檔案系統,透過與指定的 NAS 服務器相關聯,提供 NAS 服務器配置的網路共享協定服務。 ::: 根據以下需求建立 NFS 檔案系統。 | | | | --- | --- | | 名稱 | NFS_FS01 | | 描述 | NFS File System 01 for Test | | 類型 | NFS | | 大小 | 50GB | | Thin | yes | | NAS Server | NasServer_1(id: nas_1)| | 存儲池 | vPool_02(pool_2) | 可使用以下命令完成。 ```bash filesystem_name="NFS_FS01" filesystem_descr='NFS File System 01 for Test' ## nfs, cifs, multiprotocol filesystem_type='nfs' filesystem_size='50G' filesystem_thin='yes' filesystem_dataReduction='no' filesystem_advencedDedup='no' ## forbideenSmb(Default), allowedAll, forbiddenAll filesystem_folderRenamePolicy='forbideenSmb' ## mandatory(Default), advisory filesystem_lockingPolicy='mandatory' ## startHighThenAuto(default), auto, highest, lowest filesystem_fastvpPolicy='auto' filesystem_replDest='' ## Default NULL. nfs, cifs filesystem_eventProrocols='nfs' nas_name='NasServer_1' nas_id='nas_1' pool_id='pool_2' pool_name='vPool_02' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs create -name "${filesystem_name}" -descr "${filesystem_descr}" -serverName "${nas_name}" -poolName "${pool_name}" -size ${filesystem_size} -thin ${filesystem_thin} -type ${filesystem_type} -fastvpPolicy ${filesystem_fastvpPolicy} ID = res_4 Operation completed successfully. ``` ### 顯示 NFS 檔案系統 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs show 1: ID = res_4 Name = NFS_FS01 Description = NFS File System 01 for Test Health state = OK (5) File system = fs_1 Server = nas_1 Storage pool ID = pool_2 Storage pool = vPool_02 Format = UFS64 Protocol = nfs Access policy = unix Folder rename policy = forbiddenSmb Locking policy = mandatory Size = 53687091200 (50.0G) Size used = 1620312064 (1.5G) Maximum size = 54975581388800 (50.0T) Protection size used = 0 ``` Unisphere UI 界面 **STORAGE** > **File** > **File Systems** 檢視檔案系統。 ![](https://i.imgur.com/aPKxALx.png) ## 管理 NFS 網路共享 NFS 網路共享一般提供 Linux/UNIX 主機存取檔案系統存儲。NFS 網路共享(NFS Share)則與 NFS 檔案系統(NFS File System)相關聯。 ### 建立 NFS 分享 [](pp.348) #### 路徑配置 - 建立 NFS 分享服務之前,一定要先[**建立 NFS 檔案系統**](#建立-NFS-檔案系統)。 - **Local Path** 表示提供存取分享檔案系統的**相對路徑名稱**,預設為檔案系統的根目錄 **`/`**,指定的 Local Path 必須要存在,否則建立分享服務時會產生錯誤。 - 第一次建立是以**檔案系統的根目錄**為預設目錄。 - **每一個 NFS 分享都必須要有唯一的 Local Path**。以下圖為例,**`/NFS_FS01/`** 已經屬於另一個 NFS 分享的 Local Path,所以在使用同一個檔案系統建立新的 NFS 分享時會發生 **NFS Local Path already in use** 錯誤。 ![](https://i.imgur.com/094YX11.png) - 要解決上述錯誤,請**先使用有讀寫權限的掛載分享檔案系統根目錄,建立新的目錄作為 NFS 分享使用的 Local Path**。 ![](https://i.imgur.com/WbQdE4o.png) - **Export Path** 是主機使用 NFS 分享時要連接的路徑(或掛載的目錄)。在配置時會與 **Share Name** 同步。 #### 主機存取權限(Host Access) - 預設存取權限(Default Access)。可提供指定存取主機進行配置時採用的預設權限,或是未指定主機的預設存取權限。 - Read-Only(ro) - Read/Write(rw) - Read-Only, allow root(roroot) - Read/Write, allow root(root) 具有 <font color=red>**root 最高讀寫存取權限**</font>,可作為配置網路檔案分享初始化資料使用。<font color=red>**極度不安全,應小心使用**</font> - No Access(na) ![](https://i.imgur.com/DS1aami.png) - **進階主機管理(Advanced host management)** 指定主機存取權限列表時,可以採用 **`/remote/host`** 物件,就是在 **ACCESS** > **Hosts** 和 **ACCESS** > **VMware** > **ESXi Hosts** 所加入的主機物件。或是使用 **`/remote/host show`** 取得相關物件。 ![](https://i.imgur.com/CRy8GNR.png) - 若不使用進階主機管理方式指定主機,可採用主機列表。這部份與建立存取主機時使用的方式相同。多筆紀錄則用 **`','`** 區隔。 - 主機名稱(Hostname) - IP 位址(IP Address),可為 IPv4 或 IPv6。 - 子網路(Subnet)。可用 `192.168.1.0/255.255.255.0` 或 `192.168.1.0/24` 格式。 - 網域(Domain)。可用 `*.example.com` 包含 `one.example.com` 及 `two.example.com`。但不包含 `one.two.example.com`。因為 **`.`** 不包含在通用字元使用中。 - 網路群組(Netgroups)。在群組名稱前加上 `@` 作為識別,**需搭配 NIS 服務**。 - **注意**,管理主機列表僅能選擇上述兩者之一使用,且已採用其中一種方式配置管理主機,就是主機列表已經存在時,就**只能沿用無法變更**(除非清除)。 根據需求及上述說明,採用以下命令完成任務。 ```bash nfs_name='unity_nfs' nfs_descr='NFS Share for Test' nfs_path='/' ## na(Default), ro, rw, roroot, root nfs_defAccess='na' ## yes(Default) -> /remote/host show to check host_id nfs_advHostMgmtEnabled='no' ## nfs_roHosts='10.7.1.0/24' nfs_rwHosts='10.7.1.75' nfs_roRootHosts='' nfs_rootHosts='10.7.1.42' nfs_naHosts='' ## Securuty level: sys(Default), krb5, krb5i, krb5p (low -> high) nfs_minSecurity='sys' nfs_allowSuid='yes' ## yes(Default), no nfs_anonUid='4294967294' nfs_anonGid='4294967294' filesystem_name='NFS_FS01' filesystem_id='res_4' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/nfs create -name "${nfs_name}" -descr "${nfs_descr}" -fsName "${filesystem_name}" -path "${nfs_path}" -defAccess ${nfs_defAccess} -advHostMgmtEnabled ${nfs_advHostMgmtEnabled} -roHosts "${nfs_roHosts}" -rwHosts "${nfs_rwHosts}" -rootHosts "${nfs_rootHosts}" ID = NFSShare_3 Operation completed successfully. ``` ### 顯示 NFS 分享 可使用 NFS 分享 ID 和名稱或是關聯檔案系統的 ID 和名稱檢視資訊。 ```bash nfs_name='unity_nfs' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/nfs -name ${nfs_name} show -detail 1: ID = NFSShare_3 Name = unity_nfs Description = NFS Share for Test File system = res_4 Local path = / Export path = 10.7.155.88:/unity_nfs Role = production Default access = na Minimum security = sys Advanced host mgmt = no No access hosts = Read-only hosts = 10.7.1.0/255.255.255.0 Read/write hosts = 10.7.1.75 Read-only root hosts = Root hosts = 10.7.1.42 Creation time = 2022-10-28 06:13:33 Last modified time = 2022-11-01 06:30:40 Allow SUID = yes Anonymous UID = 4294967294 Anonymous GID = 4294967294 ``` ![](https://i.imgur.com/hMN4TYf.png) ### 變更 NFS 分享 主機存取列表為**覆蓋選項**,變更時請指定**完整列表**。 使用以下命令變更 NFS 分享項目: - 增加無法存取主機(No Access): 10.7.1.100, 10.7.1.101 - 增加一組最高存取權限主機(Read/Write, allow root): 10.7.1.40 - 變更預設存取權限為唯讀(Read-Only, ro) ```bash nfs_name='unity_nfs' nfs_naHosts='10.7.1.100,10.7.1.101' nfs_rootHosts='10.7.1.42,10.7.1.40' nfs_defAccess='ro' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/nfs -name ${nfs_name} set -naHosts ${nfs_naHosts} -rootHosts ${nfs_rootHosts} -defAccess ${nfs_defAccess} ID = NFSShare_3 Operation completed successfully. ``` ![](https://i.imgur.com/ZXPngEN.png) :::info - 在進行 NFS 空間掛載前,已經透過具備 root 權限建立以下檔案及目錄。 - `README`: 所有人皆可讀,僅 root 有讀寫權限。 - `README_ROOT_Only`: 僅 root 有讀寫權限。 - `richard`目錄: 所有人皆可進入及讀的權限,僅 root 和 UID/GID=1000 有讀寫權限。 - 測試環境的主機並沒有 NIS 或 LDAP。各主機的帳號自行管理。 - `richard@10.7.1.40` 的 UID/GID=1000。 - `robot31@10.7.150.176` 的 UID/GID=1000。 - `shared_for_everyone`目錄: 所有人都有讀寫權限,且會關聯其建立檔案或目錄的擁有者(Sticky Bits)。就像 `/tmp` 目錄一樣。 ```bash drwxr-xr-x. 2 root root 8192 11月 1 09:19 Downloads drwxr-xr-x. 2 root root 8192 10月 28 08:19 lost+found -rw-r--r--. 1 root root 19 11月 1 08:41 README -rw-r-----. 1 root root 19 11月 1 08:42 README_ROOT_Only drwxr-xr-x. 2 richard richard 152 11月 1 09:03 richard drwxrwxrwt. 2 root root 152 11月 1 11:11 shared_for_everyone ``` - 使用 Unity NFS 檔案共享空間,應該也是要透過 root 管理權限,先將掛載的空間好好"整理"一下。 ::: ## 掛載分享測試 **測試主機** - Fedora: 10.7.1.40 - CentOS: 10.7.1.75 - PhotonOS: 10.7.150.176 ### 確認 NFS 服務主機 使用以下命令顯示 NFS 服務主機提供的掛載資訊。 ```bash showmount -e nfs-serverName or IP ``` :::info 若發現沒有 **`showmount`** 命令,可能是缺少 **`nfs-utils`**。只要透過作業系統進行安裝即可。 以下是 VMware Photon OS 的安裝方式。 ```bash tdnf install nfs-utils ``` ::: 檢視掛載資訊。 ```bash showmount -e 10.7.155.88 Export list for 10.7.155.88: /NFS_FS01/Downloads 10.7.150.176/255.255.255.255 /myDownloads 10.7.150.176/255.255.255.255 /NFS_FS01 10.7.1.0/255.255.255.0,10.7.1.75/255.255.255.255,10.7.1.42/255.255.255.255,10.7.1.40/255.255.255.255 /unity_nfs 10.7.1.0/255.255.255.0,10.7.1.75/255.255.255.255,10.7.1.42/255.255.255.255,10.7.1.40/255.255.255.255 ``` 並從 Unisphere GUI 界面對照一下所取得的相關掛載資訊。 ![](https://i.imgur.com/uEDWjpl.png) :::info - **NFS_FS01** 是檔案系統名稱。 - **unity_nfs** 和 **myDownloads** 是分享名稱。前面加上 **:/** 作為分享(的相對)路徑,也就是 **Export Path**。 - **`:/unity_nfs`** 就是表示 **`/NFS_FS01/`**。 - **`:/myDownloads`** 就是表示 **`/NFS_FS01/Downloads/`**。 - **/NFS_FS01(/)** 和 **/NFS_FS01/Downloads(/)** 應該屬於檔案系統的絕對路徑,為了便利使用,採用相對路徑 **Export Path** 使用就可以了! - **:/unity_nfs** 預設存取政策是 **Read-Only(ro)**。所以**一般主機皆可以掛載空間,但僅提供唯讀權限**,在主機存取列表的主機,就按照指定的存取權限進行管控。 - **:/myDownloads** 預設存取政策是 **No Access(na)**。所以**一般主機無法掛載空間**,僅能根據主機存取列表中的主機及權限提供分享。 ::: ### 掛載 NFS 服務檔案系統 接著就用測試主機來掛載 Unity 分享的 NFS 存儲空間吧! ```bash mount [-t nfs] nfs-serverName or IP:/exportPath /mountpoint ``` #### 存取主機及權限 ##### unity_nfs (/NFS_FS01/) | Host | Host Access List | Default Acess | Result | | --- | --- | --- | --- | | 10.7.1.40 | Read/Write, allow root | Read-Only | [OK] R/W, allow root | | 10.7.1.75 | Read/Write | Read-Only | [OK] Read/Write | | 10.7.150.176 | X | Read-Only | [OK] Read-Only | ##### myDownloads (/NFS_FS01/Downloads) | Host | Host Access List | Default Acess | Result | | --- | --- | --- | --- | | 10.7.1.40 | X | No Access | [No] No Access | | 10.7.1.75 | X | No Access | [No] No Access | | 10.7.150.176 | Read/Write | No Access | [YES] Read/Write | ##### 10.7.1.40 - **unity_nfs** 共享空間**成功掛載**,因為該主機的存取權限為 **Read/Write, allow Root**,允該主機的**一般使用者讀寫**,也<font color=red>**包含 root 讀寫權限**</font>。 ```bash $ sudo mount 10.7.155.88:/unity_nfs /mnt/unity ``` - 檢視系統中掛載的相關資訊。 ```bash $ mount | grep '/mnt/unity' $ 10.7.155.88:/unity_nfs on /mnt/unity type nfs4 (rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.7.1.40,local_lock=none,addr=10.7.155.88) ``` - 掛載 **myDownloads** 共享空間失敗,該主機並不存在於存取清單中,而採用預設存取權限 **No Access**,所以**掛載失敗**。 ```bash $ sudo mount 10.7.155.88:/NFS_FS01/Downloads /mnt/downloads > mount.nfs: access denied by server while mounting 10.7.155.88:/myDownloads ``` :::info 這裡掛載格式使用絕對路徑 **`/NFS_FS01/Downloads`**,而不使用相對路徑 Export Path **`/myDownloads`**,也是可以的。 ::: - 切換目錄至 **`/mnt/unity`**,產生以下錯誤訊息。目錄 **`Downloads`** 其實是對應檔案分享 **/NFS_FS01/Downloads** 的 **Local Path**,而 10.7.1.40 該主機對於此目錄空間並無存取權限。 ``` $ cd /mnt/unity ls: cannot access 'Downloads': Operation not permitted $ cd /mnt/unity/Downloads -bash: cd: Downloads: Operation not permitted ``` ##### 10.7.1.75 - 掛載狀態與 10.7.1.40 相同。 - **unity_nfs** 掛載成功,且有讀寫權限,但沒有 root 讀寫權限。 - **myDownloads** 掛載失敗。 ##### 10.7.150.176 - 掛載 **unity_nfs** 成功,但僅有唯讀權限。 - 掛載 **myDownloads** 成功,具有讀寫權限,但沒有 root 讀寫權限。 ### 簡易權限測試 :::danger 以下進入燒腦模式!一般存儲設備管理者不會這樣的。 ::: - 進入掛載點 **`/mnt/unity`**,並使用 **`ls -l`** 檢視目錄中檔案資訊。 - 具有 **unity_nfs** 存取權限但不具 **Downloads** 存取權限的主機(10.7.1.40, 10.7.1.75),無法進入該目錄 **`/mnt/unity/Downloads`**。 - 同時具有 **unity_nfs** 和 **Downloads** 存取權限的主機(10.7.150.176),可以進入該目錄 **`/mnt/unity/Downloads`**。但對於 **unity_nfs** 檔案分享,該主機採用預設存取權限 **Read-Only**。 - 具有 **Downloads** 存取權限(Read/Write),可直接進入掛載點 **`/mnt/downloads`**,但因為沒有 **allow root** 權限,即便在該主機是以 `root` 登入使用也沒有辦法建立檔案。 ![](https://i.imgur.com/RcGQC8X.png) - 根據既有的檔案權限進行讀寫的權限測試。 ![](https://i.imgur.com/KbWEdht.jpg) - 進入共用目錄 **`shared_for_everyone`**,分別使用該系統上一般使用者及 `root` 建立對應的檔案,並確認檔案擁有者相關資訊。 - **10.7.1.40** 具有 **unity_nfs** 完整的讀寫權限,並包含 `root`。 - **10.7.1.75** 具有 **unity_nfs** 的讀寫權限,但不包含 `root`。所以透過 `root` 寫入檔案,其擁有者及群組會對應至 **`Anonymous UID/GID=4294967294`**。 - 由於 **`UID/GID=1000`** 在 10.7.1.40 和 10.7.1.75 系統上,分別屬於 `richard` 和 `robot31` 使用者,所以會在各系統的檔案會顯示不同的使用者名稱。 - 別忘了 **10.7.150.176** 對於 **unity_nfs** 只有 Read-Only 存取權限,所以無法建立檔案。 - **10.7.150.176** 主機並不存在 `UID/GID=1000` 的使用者,所以無法轉換名稱顯示。 ![](https://i.imgur.com/L2czyxp.png) :::info **結論** - Unity 上管理權限所標示出 **allow root**,就是一般 NFS 服務設定的 **no_root_squash**。 - Unity 上管理權限未標示出 **allow root**,就是一般 NFS 服務設定的 **root_squash**。使用 root 登入使用,會被**壓縮**成 Anonymous 使用者。 ::: # 設定 SMB/CIFS 檔案共用 根據 NFS 檔案共用的組態經驗,大致建立流程若下: ```mermaid graph TD; 建立NAS服務器-->建立NAS界面; 建立NAS界面-->建立SMB/CIFS服務器; 建立SMB/CIFS服務器-->建立SMB/CIFS檔案系統; 建立SMB/CIFS檔案系統-->建立SMB/CIFS檔案分享; ``` ## 配置 SMB/CIFS 服務一刀流 :::warning 每個 NAS 服務器僅能建立一組 SMB/CIFS 服務器。 ::: 使用以下參數組態及命令,可以**一氣呵成**地完成 SMB/CIFS 檔案共用服務的配置任務。 ```bash ## Create NAS Server nas_name="NasServer_CIFS" nas_spOwner='spa' nas_enablePackerReflect='yes' pool_id='pool_2' pool_name='vPool_02' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server create -name "${nas_name}" -poolName "${pool_name}" -sp ${nas_spOwner} -enablePacketReflect ${nas_enablePackerReflect} ## Create NAS Interface nas_ifPort='spa_eth2' nas_ifIp='10.7.155.89' nas_ifNetmask='255.255.255.0' nas_ifGateway='10.7.155.254' nas_ifRole='production' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/if create -serverName "${nas_name}" -port ${nas_ifPort} -addr ${nas_ifIp} -netmask ${nas_ifNetmask} -gateway ${nas_ifGateway} -role ${nas_ifRole} ## Create SMB/CIFS Server smb_name='CIFSserver1' smb_workgroup='unity' smb_netbiosname='CIFSserver1' smb_adminPasswd='VMware1!' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/cifs create -serverName "${nas_name}" -name "${smb_name}" -netbiosName "${smb_netbiosname}" -workgroup ${smb_workgroup} -adminPasswd ${smb_adminPasswd} ## Create File System for SMB/CIFS filesystem_name="CIFS_FS01" filesystem_descr='SMB File System 01 for Test' ## nfs, cifs, multiprotocol filesystem_type='cifs' filesystem_size='50G' filesystem_thin='yes' #filesystem_cifsSyncWrites='no' #filesystem_cifsOpLocks='yes' #filesystem_cifsNotifyOnWrite='no' #filesystem_cifsNotifyOnAccess='no' #filesystem_cifsNotifyDirDepth='512' filesystem_fastvpPolicy='auto' filesystem_eventProrocols='cifs' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs create -name "${filesystem_name}" -descr "${filesystem_descr}" -serverName "${nas_name}" -poolName "${pool_name}" -size ${filesystem_size} -thin ${filesystem_thin} -type ${filesystem_type} -fastvpPolicy ${filesystem_fastvpPolicy} ## Create SMB/CIFS Share smb_share_name='CIFSshare' smb_share_descr='CIFS Share for Test' smb_share_path='/' smb_share_continousAvailability='yes' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/cifs create -name "${smb_share_name}" -descr "${smb_share_descr}" -fsName "${filesystem_name}" -path "${smb_share_path}" -enableContinuousAvailability ${smb_share_continousAvailability} ``` :::warning 建立 NAS 服務器時會預設建立 NFS 服務器,後續若要單獨提供 SMB/CIFS 服務,**可能**要將預設建立的 NFS 服務器移除。(待確認) - 使用 Unisphere GUI 界面將預設建立的 NFS 服務取消勾選。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin\_new\_pass} /net/nas/nfs -id nfs_3 delete ``` ::: ## 檢視 SMB/CIFS 服務 ### NAS 服務器 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server -name "${nas_name}" show -detail 1: ID = nas_3 Name = NasServer_CIFS NetBIOS name = CIFSSERVER1 SP = spa Storage pool = pool_2 Interface = if_8 NFS enabled = no NFSv3 enabled = no NFSv4 enabled = no CIFS enabled = yes Workgroup = UNITY Windows domain = Multiprotocol sharing enabled = no Unix directory service = none Auto user mapping enabled = Default Unix user = Default Windows username = Extended Unix credentials enabled = no Credentials cache retention = 15m Username translation = Packet Reflect enabled = yes Health state = OK (5) Health details = "The component is operating normally. No action is required." Type = 64 Replication type = none Synchronous replication type = none Replication destination = no Backup only = no Migration Destination = no Preferred production interfaces overridden = Preferred production IPv4 interface = auto Preferred production IPv6 interface = auto Preferred backup and DR test IPv4 interface = auto Preferred backup and DR test IPv6 interface = auto Source preferred production IPv4 interface = Source preferred production IPv6 interface = File space used = 6499909632 (6.0G) Data Reduction space saved = 0 Data Reduction percent = 0% Data Reduction ratio = 1.00:1 ``` ![](https://i.imgur.com/y6D81o5.png) ![](https://i.imgur.com/UJunDnH.png) ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/cifs -serverName "${nas_name}" show -detail 1: ID = cifs_1 NAS server = nas_3 Name = Description = NetBIOS name = CIFSSERVER1 Windows domain = Last used organizational unit = Workgroup = UNITY ``` ![](https://i.imgur.com/zrvHU5p.png) :::info 在 Windows 環境應該沒有區分大小寫,所以這裡設定結果大致都會使用**大寫**。 ::: ### NAS 界面 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/if -serverName "${nas_name}" show -detail 1: ID = if_8 NAS server = nas_3 Port = spa_eth2 VLAN ID = IP address = 10.7.155.89 Subnet mask = 255.255.255.0 Gateway = 10.7.155.254 MAC address = 00:50:56:B3:74:D5 SP = spa Preferred = yes Health state = OK (5) Health details = "The component is operating normally. No action is required." Role = production Replication sync = Source IP address = Source VLAN ID = Source subnet mask = Source gateway = ``` ![](https://i.imgur.com/OXbaIL0.png) ![](https://i.imgur.com/wpcyzIr.png) ### SMB/CIFS 檔案系統 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs -serverName "${nas_name}" show -detail 1: ID = res_5 Name = CIFS_FS01 Description = SMB File System 01 for Test Health state = OK (5) Health details = "The component is operating normally. No action is required." File system = fs_2 Server = nas_3 Storage pool ID = pool_2 Storage pool = vPool_02 Format = UFS64 Protocol = cifs Access policy = windows Folder rename policy = forbiddenSmb Locking policy = mandatory Size = 53687091200 (50.0G) Size used = 1622458368 (1.5G) Maximum size = 54975581388800 (50.0T) Thin provisioning enabled = yes Data Reduction enabled = no Data Reduction space saved = 0 Data Reduction percent = 0% Data Reduction ratio = 1.00:1 Advanced deduplication enabled = no Current allocation = 283156480 (270.0M) Preallocated = 2401198080 (2.2G) Total Pool Space Used = 4041252864 (3.7G) Minimum size allocated = Protection size used = 0 Snapshot count = 0 Protection schedule = Protection schedule paused = FLR mode = Disabled FLR has protected files = FLR clock time = FLR max retention date = FLR min retention period = FLR default retention period = FLR max retention period = FLR auto lock enabled = FLR auto delete enabled = FLR policy interval = Error threshold = 95% Warning threshold = 75% Info threshold = 0% CIFS synchronous write = no CIFS oplocks = yes CIFS notify on write = no CIFS notify on access = no CIFS directory depth = 512 Replication type = none Synchronous replication type = none Replication destination = no Migration destination = no FAST VP policy = Auto-tier FAST VP distribution = Extreme Performance: 63%, Performance: 0%, Capacity: 37% Creation time = 2022-11-02 09:16:01 Last modified time = 2022-11-02 09:16:01 Pool full policy = Fail Writes Event publishing protocols = ``` ![](https://i.imgur.com/j0k3p8u.png) ![](https://i.imgur.com/sjmmnaO.png) ![image alt][reference] ![](https://i.imgur.com/ZbQy7Ns.png) ### SMB/CIFS 檔案共享 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/cifs -fsName "${filesystem_name}" show -detail 1: ID = SMBShare_1 Name = CIFSshare Description = CIFS Share for Test File system = res_5 Local path = / Export path = \\CIFSSERVER1\CIFSshare, \\10.7.155.89\CIFSshare Availability enabled = yes Encryption enabled = no Creation time = 2022-11-02 09:33:22 Last modified time = 2022-11-02 09:33:22 Umask = 022 ABE enabled = no BranchCache enabled = no DFS enabled = no Offline availability = none ``` ![](https://i.imgur.com/jDZVbtE.png) ![](https://i.imgur.com/TVKMBbb.png) ### 簡易連線測試 進行到這裡,我們先測試一下 SMB/CIFS 檔案分享服務的連線狀態。因為是簡易測試這裡就先用 Linux 系統上的 `smbclient` 命令就可以了。 ```bash $ smbclient -W unity -U administrator -L //10.7.155.89 Password for [UNITY\administrator]: Sharename Type Comment --------- ---- ------- CIFSshare Disk CIFS Share for Test C$ Disk Root Service CHECK$ Disk Virus Checking Service IPC$ IPC IPC Service SMB1 disabled -- no workgroup available ``` 看起來沒有問題,可以看到分享的目錄資訊。接著先用 `mount` 命令掛載測試並檢視掛載資訊。 ```bash $ sudo mount -t cifs -o username=administrator //10.7.155.89/CIFSshare /mnt/unity 🔐 Password for administrator@//10.7.155.89/CIFSshare: ******** $ mount | grep '/mnt/unity' //10.7.155.89/CIFSshare on /mnt/unity type cifs (rw,relatime,vers=3.1.1,cache=strict,username=administrator,uid=0,noforceuid,gid=0,noforcegid,addr=10.7.155.89,file_mode=0755,dir_mode=0755,soft,persistenthandles,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=5) ``` 所以大致上在 Linux 上要使用 SMB/CIFS 檔案大致就這樣吧! ## 使用 Standalone 目前建立的 SMB/CIFS 服務器是獨立型(Standalone),並沒有加入 AD 網域。 若要管理使用者權限,可以參考官方文件 [[Dell EMC Unity/VNX: How to connect to Standalone CIFS Server using MMC Computer Management]](https://www.dell.com/support/kbdoc/zh-tw/000022486/dell-emc-unity-vnx-how-to-connect-to-standalone-cifs-server-using-mmc-computer-management-user-correctable),以下重點說明。 - 找出 CIFS 服務器的 NetBIOS 名稱 **CIFSSERVER1**。 - 使用 `uemcli` 命令。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server -name "${nas_name}" show 1: ID = nas_3 Name = NasServer_CIFS NetBIOS name = CIFSSERVER1 SP = spa Storage pool = pool_2 ``` - 使用 Unisphere GUI 界面。 ![](https://i.imgur.com/nE5ied1.png) - 在 Windows 系統上的檔案 **`c:\Windows\system32\Drivers\etc\hosts`**,建立對應資訊。 ``` # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 10.7.155.89 CIFSSERVER1 ``` - 開啟 Windows 系統的命令列視窗,輸入以下命令。 ```shell $cifs_ip='10.7.155.89' $cifs_name='CIFSSERVER1' runas /netonly /user:$cifs_ip\administrator "mmc compmgmt.msc -a /computer=$cifs_ip" runas /netonly /user:$cifs_name\administrator "mmc compmgmt.msc -a /computer=$cifs_name" ``` ![](https://i.imgur.com/B9RzNJT.png) :::warning 在 Windows 系統上執行相關作業,請務必確認使用**系統管理員**身份。 ::: 命令成功執行後,會開啟電腦管理的控制台,分別用 IP 和主機名稱顯示,選擇其一使用。請在**本機使用者和群組** > **使用者** 建立使用者。 - IP 位址顯示 ![](https://i.imgur.com/IhvHwHU.png) - 主機名稱顯示 ![](https://i.imgur.com/24F2Agc.png) 使用 **`smbuser`** 並透過 **`smbclient`** 簡易掛載測試。 ```bash $ sudo mount -t cifs -o username=smbuser,password=VMware1! //10.7.155.89/CIFSshare /mnt/unity $ /mnt/unity mount | grep '/mnt/unity' //10.7.155.89/CIFSshare on /mnt/unity type cifs (rw,relatime,vers=3.1.1,cache=strict,username=smbuser,uid=0,noforceuid,gid=0,noforcegid,addr=10.7.155.89,file_mode=0755,dir_mode=0755,soft,persistenthandles,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=5) ``` 從電腦管理界面 **共用資料夾** > **工作階段**,可以檢視 Linux 作業系統(Dora)是透過使用者 **`smbuser`** 連線使用 SMB/CIFS 網路空間。 ![](https://i.imgur.com/irgZUgm.png) 接著 Windows 作業系統同樣透過使用者 **`smbuser`** 掛載空間作為磁碟機 **`Z:`** 使用。使用命令 **`net use`** 可檢視網路連線資訊。 ![](https://i.imgur.com/z81Qq6M.png) 同樣地從 **工作階段**,可以發現 Windows 作業系統(DESKTOP-FRNCH3H)的連線資訊。 ![](https://i.imgur.com/K3tzyMa.png) 在 **共用資料夾** > **共用**,可檢視目前 **CIFSSERVER1** 所共用的檔案分享資訊。 ![](https://i.imgur.com/WoaZXKb.png) 在 **共用資料夾** > **開啟檔案**,可檢視目前共享檔案的開啟資訊。 ![](https://i.imgur.com/tLA56t6.png) ### 權限管理 因為我對於 Windows 系統不是很清楚,所以這裡就簡單地設置測試檔案及目錄,分別將權限區分為 **`smbuser`** 和 **`administrator`** 進行測試,詳細的配置還請參考 Windows 管理說明。 - 目錄 `Administrator`: 僅供 `administrator` 進入及讀寫權限。 - 檔案 `README_ADMIN.txt`: 僅供 `administrator` 讀寫。 - 其他目錄及檔案,使用者 `smbuser` 和 `administrator` 皆有讀寫權限。 ![](https://i.imgur.com/J5zdTpj.png) ![](https://i.imgur.com/o22nRxR.png) 從 Linux 作業系統檢視也是相同的狀態。 <img width=360 src='https://i.imgur.com/Qn1kDtG.png'><br> 就先這樣吧,太多了! ## 加入 AD 網域 使用 SMB/CIFS 檔案共享,建議的方式就是**加入 AD 網域**。 :::info - 因為**每個 NAS 服務器僅能建立一組 SMB/CIFS 服務器**,為了測試加入 AD 網域就必須要建立另一個 SMB/CIFS 檔案分享空間。 - 若原有的 DNS 無法解析 AD 網域,可以**針對 NAS 服務器配置 DNS 服務器**。 - NAS 服務器使用的 **NAS 界面 IP 位址不能重複使用**。 ::: :::warning 建立 NAS 服務器時預設就會同時啟用 NFS 服務器,在前次建立 **`NasServer_CIFS`** 時,特別將預設的 NFS 服務器進行刪除。但本次建立 **`NAS_CIFS_AD`** 時,就故意省略此動作,發現 NAS 服務器同時存在 **NFSv3** 和 **SMB** 協定。系統上並沒有出現任何錯誤告警,且此種狀態也並不是 **Multiprotocol**。 ![](https://i.imgur.com/WGLVCbr.png) ::: ### 建立 NAS-SMB 共用服務 重複使用先前使用的命令模式,只要調整編修幾個參數就可以輕鬆完成**加入 AD 網域的 SMB 服務**。 ```bash ## Create NAS Server nas_name="NAS_CIFS_AD" nas_spOwner='spa' nas_enablePackerReflect='yes' pool_id='pool_2' pool_name='vPool_02' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/server create -name "${nas_name}" -poolName "${pool_name}" -sp ${nas_spOwner} -enablePacketReflect ${nas_enablePackerReflect} ## Create DNS for NAS nas_dns_domain='sysagelab.com' nas_dns_ip='10.7.150.201' nas_id='nas_4' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/dns -server ${nas_id} set -name "${nas_dns_domain}" -nameServer ${nas_dns_ip} ## Create NAS Interface nas_ifPort='spa_eth3' nas_ifIp='10.7.155.90' nas_ifNetmask='255.255.255.0' nas_ifGateway='10.7.155.254' nas_ifRole='production' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/if create -serverName "${nas_name}" -port ${nas_ifPort} -addr ${nas_ifIp} -netmask ${nas_ifNetmask} -gateway ${nas_ifGateway} -role ${nas_ifRole} ## Create CIFS Server to join AD Domain ## 加入 AD 網域所需調整參數 smb_ad_name='CIFS_AD' smb_ad_descr='Join to the AD Domain' smb_ad_domain='sysagelab.com' smb_ad_username='administrator' smb_ad_password='P@ssw0rd' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/cifs create -serverName "${nas_name}" -name "${smb_ad_name}" -description "${smb_ad_descr}" -domain "${smb_ad_domain}" -username ${smb_ad_username} -passwd ${smb_ad_password} ## Create File System for SMB/CIFS filesystem_name="CIFS_AD_FS01" filesystem_descr='SMB File System 01 for AD Domain' filesystem_type='cifs' filesystem_size='50G' filesystem_thin='yes' filesystem_fastvpPolicy='auto' filesystem_eventProrocols='cifs' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs create -name "${filesystem_name}" -descr "${filesystem_descr}" -serverName "${nas_name}" -poolName "${pool_name}" -size ${filesystem_size} -thin ${filesystem_thin} -type ${filesystem_type} -fastvpPolicy ${filesystem_fastvpPolicy} ## Create SMB/CIFS Share smb_share_ad_name='CIFS_AD_Share' smb_share_ad_descr='CIFS Share for AD Domain' smb_share_ad_path='/' smb_share_ad_continousAvailability='yes' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/cifs create -name "${smb_share_ad_name}" -descr "${smb_share_ad_descr}" -fsName "${filesystem_name}" -path "${smb_share_ad_path}" -enableContinuousAvailability ${smb_share_ad_continousAvailability} ``` ### 狀態確認 透過以下命令可以檢視 `Standalone` 和 `Join-to-AD-Domain` SMB/CIFS 服務器的配置差異。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/cifs show -detail 1: ID = cifs_2 NAS server = nas_3 Name = Description = NetBIOS name = CIFSSERVER1 Windows domain = Last used organizational unit = Workgroup = UNITY 2: ID = cifs_3 NAS server = nas_4 Name = cifs_ad Description = Join to the AD Domain NetBIOS name = CIFS_AD Windows domain = sysagelab.com Last used organizational unit = ou=Computers,ou=EMC NAS servers Workgroup = ``` 從 Unisphere GUI 界面也顯示組態內容。 ![](https://i.imgur.com/Ry8yYiT.png) ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/cifs -name ${smb_share_ad_name} show ✭ ✱ 1: ID = SMBShare_5 Name = CIFS_AD_Share Description = CIFS Share for AD Domain File system = res_7 Local path = / Export path = \\cifs_ad.sysagelab.com\CIFS_AD_Share, \\10.7.155.90\CIFS_AD_Share ``` ![](https://i.imgur.com/auYgGW0.png) 連線至 AD 網域控制器檢視相關資訊。開啟 **AD Users and Computers** 會發現在 **EMC NAS servers** > **Computers** 下建立相關資訊。 ![](https://i.imgur.com/LbLYmC9.png) 另外我們在 AD 網域控制器上新增一個使用者 **`unityvsa`**,用來測試是否可以透過 AD 網域驗證使用者進行掛載空間。 透過使用者 **`unityvsa`** 在 Linux 和 Winodws 作業系統測試掛載 **`\\CIFS_AD\CIFS_AD_Share`**。同時使用 **`mmc compmgmt.msc -a /computer=CIFS_AD`** 在 AD 網域控制器開啟電腦管理,可以檢視 **CIFS_AD** 的分享狀態,這個技巧前面也已經使用過了。 ![](https://i.imgur.com/xtyvkzi.png) 根據上述的連線資訊,可整合 AD 網域控制器作為 SMB/CIFS 檔案共用的身份驗證及權限控管。其他詳細部份就不再討論了! :::warning **清除** 若想要迅速刪除 SMB/CIFS 服務資訊,只要依序完成下列 3 個步驟就可以了。 ```bash ## delete CIFS Shares uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs/cifs -name "${smb_share_name}" delete ## delete CIFS File system uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /stor/prov/fs -name "${filesystem_name}" delete -deleteSnapshots yes ## delete CIFS Server uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/nas/cifs -name ${smb_name} delete ``` ::: UnityVSA 大致上的基礎應用及組態已經學習及測試完畢,其他進階和管理功能等有遇到再說了! :::danger 其實,以上使用 **`uemcli`** 的方式,應該可以降低上述功能的組態難度,只要確認實際要應用佈署的架構、空間及功能,透過編輯參數的方式,就能輕鬆完成任務。 但是上面提供的命令列卻有一個**大問題: 並沒有編寫對於輸出資訊的判讀**,所以也還是只有半自動。但對於是初學者的我來說,應該也夠用了。至於太進階的設定及問題,就交給專家吧! ::: # 參考 - Dell Unity 資訊中心:產品文件和資訊 [[中文]](https://www.dell.com/support/kbdoc/zh-tw/000126652/dell-emc-unity-%E8%B3%87%E8%A8%8A-%E4%B8%AD%E5%BF%83-%E7%94%A2%E5%93%81-%E6%96%87%E4%BB%B6-%E5%92%8C-%E8%B3%87%E8%A8%8A), [[英文]](https://www.dell.com/support/kbdoc/zh-tw/000126652/dell-emc-unity-info-hub-product-documents-and-information?lang=en)