# 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 設定界面中一氣呵成?!

- 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 服務器。

### 調整 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

- Network > Interfaces & Routes

- Network > Routers to External Services

### 刪除 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.
```

## 管理檔案系統
檔案系統(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** 檢視檔案系統。

## 管理 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** 錯誤。

- 要解決上述錯誤,請**先使用有讀寫權限的掛載分享檔案系統根目錄,建立新的目錄作為 NFS 分享使用的 Local Path**。

- **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)

- **進階主機管理(Advanced host management)** 指定主機存取權限列表時,可以採用 **`/remote/host`** 物件,就是在 **ACCESS** > **Hosts** 和 **ACCESS** > **VMware** > **ESXi Hosts** 所加入的主機物件。或是使用 **`/remote/host show`** 取得相關物件。

- 若不使用進階主機管理方式指定主機,可採用主機列表。這部份與建立存取主機時使用的方式相同。多筆紀錄則用 **`','`** 區隔。
- 主機名稱(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
```

### 變更 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.
```

:::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 界面對照一下所取得的相關掛載資訊。

:::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` 登入使用也沒有辦法建立檔案。

- 根據既有的檔案權限進行讀寫的權限測試。

- 進入共用目錄 **`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` 的使用者,所以無法轉換名稱顯示。

:::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
```


```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
```

:::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 =
```


### 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 =
```


![image alt][reference]

### 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
```


### 簡易連線測試
進行到這裡,我們先測試一下 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 界面。

- 在 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"
```

:::warning
在 Windows 系統上執行相關作業,請務必確認使用**系統管理員**身份。
:::
命令成功執行後,會開啟電腦管理的控制台,分別用 IP 和主機名稱顯示,選擇其一使用。請在**本機使用者和群組** > **使用者** 建立使用者。
- IP 位址顯示

- 主機名稱顯示

使用 **`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 網路空間。

接著 Windows 作業系統同樣透過使用者 **`smbuser`** 掛載空間作為磁碟機 **`Z:`** 使用。使用命令 **`net use`** 可檢視網路連線資訊。

同樣地從 **工作階段**,可以發現 Windows 作業系統(DESKTOP-FRNCH3H)的連線資訊。

在 **共用資料夾** > **共用**,可檢視目前 **CIFSSERVER1** 所共用的檔案分享資訊。

在 **共用資料夾** > **開啟檔案**,可檢視目前共享檔案的開啟資訊。

### 權限管理
因為我對於 Windows 系統不是很清楚,所以這裡就簡單地設置測試檔案及目錄,分別將權限區分為 **`smbuser`** 和 **`administrator`** 進行測試,詳細的配置還請參考 Windows 管理說明。
- 目錄 `Administrator`: 僅供 `administrator` 進入及讀寫權限。
- 檔案 `README_ADMIN.txt`: 僅供 `administrator` 讀寫。
- 其他目錄及檔案,使用者 `smbuser` 和 `administrator` 皆有讀寫權限。


從 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**。

:::
### 建立 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 界面也顯示組態內容。

```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
```

連線至 AD 網域控制器檢視相關資訊。開啟 **AD Users and Computers** 會發現在 **EMC NAS servers** > **Computers** 下建立相關資訊。

另外我們在 AD 網域控制器上新增一個使用者 **`unityvsa`**,用來測試是否可以透過 AD 網域驗證使用者進行掛載空間。
透過使用者 **`unityvsa`** 在 Linux 和 Winodws 作業系統測試掛載 **`\\CIFS_AD\CIFS_AD_Share`**。同時使用 **`mmc compmgmt.msc -a /computer=CIFS_AD`** 在 AD 網域控制器開啟電腦管理,可以檢視 **CIFS_AD** 的分享狀態,這個技巧前面也已經使用過了。

根據上述的連線資訊,可整合 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)