在 Azure 實驗室服務中使用外部檔案儲存體
重要
Azure 實驗室服務將於 2027 年 6 月 28 日淘汰。 如需詳細資訊,請參閱淘汰指南。
本文涵蓋使用 Azure 實驗室服務時,外部檔案儲存體的一些選項。 Azure 檔案提供在雲端中完全受控、並且可透過 SMB 2.1 和 SMB 3.0 通訊協定來存取的檔案共用。 Azure 檔案共用可以在虛擬網路內公開或私下連線。 您也可以將共用設定為使用實驗室使用者的 Active Directory 認證來連線到檔案共用。 如果您是在 Linux 電腦上,也可以使用 Azure NetApp Files 搭配 NFS 磁碟區搭配 Azure 實驗室服務的外部檔案儲存體。
要使用的解決方案
下表列出每個外部存儲解決方案的重要考慮。
解決方案 | 重要須知 |
---|---|
Azure 檔案與公用端點共用 |
|
Azure 檔案與私人端點共用 |
|
Azure NetApp Files 搭配 NFS 磁碟區 |
|
使用外部儲存體的成本不包含在使用 Azure 實驗室服務的成本中。 如需有關定價的詳細資訊,請參閱 Azure 檔案定價和 Azure NetApp Files 定價。
Azure 檔案共用
Azure 檔案共用是使用公用或私人端點來存取。 您可以使用存儲帳戶金鑰作為密碼,將共用掛接至虛擬機。 透過這種方法,每個人都具有檔案共用的讀寫存取權。
依照預設,標準檔案共用可跨越最多 5 TiB。 如需如何建立跨越最多 100 TiB 檔案共用的詳細資訊,請參閱建立 Azure 檔案共用。
使用公用端點時的考量
- 儲存體帳戶的虛擬網路不需要連線到實驗室虛擬網路。 您可以在範本 VM 發佈之前,隨時建立檔案共用。
- 如果使用者具有儲存體帳戶金鑰,則可以從任何電腦存取檔案共用。
- Linux 實驗室使用者可以看到儲存體帳戶金鑰。 掛接 Azure 檔案共用的認證會儲存在 Linux VM 上的
{file-share-name}.cred
,並可供 sudo 讀取。 因為實驗室使用者預設會在 Azure 實驗室服務 VM 中獲得 sudo 存取權,所以他們可以讀取儲存體帳戶金鑰。 如果儲存體帳戶端點是公用的,實驗室使用者就可以存取其實驗室使用者 VM 外部的檔案共用。 請考慮在類別結束之後輪替儲存體帳戶金鑰,或使用私人檔案共用。
使用私人端點時的考量
- 這種方法需要檔案共用虛擬網路才能連線到實驗室。 若要啟用實驗室的進階網路功能,請參閱在 Azure 實驗室服務中使用虛擬網路插入與您的虛擬網路連線。 虛擬網路插入必須在實驗室計畫建立期間完成。
- 存取權限制為源自私人網路的流量,而且無法透過公用網際網路存取。 只有專用虛擬網路中的 VM、對等互連至私人網路的網路中 VM,或連線到私人網路 VPN 的電腦可以存取檔案共用。
- Linux 實驗室使用者可以看到儲存體帳戶金鑰。 掛接 Azure 檔案共用的認證會儲存在 Linux VM 上的
{file-share-name}.cred
,並可供 sudo 讀取。 因為實驗室使用者預設會在 Azure 實驗室服務 VM 中獲得 sudo 存取權,所以他們可以讀取儲存體帳戶金鑰。 請考慮在類別結束之後輪替儲存體帳戶金鑰。
將實驗室 VM 連線至 Azure 檔案共用
請遵循下列步驟來建立連線至 Azure 檔案共用的 VM。
建立 Azure 儲存體帳戶。 在 [連線方法] 頁面上,選擇 [公用端點] 或 [私人端點]。
如果使用私人方法,請建立私人端點,以從虛擬網路存取檔案共用。
建立 Azure 檔案共用。 如果使用公用端點,則檔案共用可透過儲存體帳戶的公用主機名稱連線。 如果使用私人端點,則檔案共用可透過私人 IP 位址連線。
在範本 VM 中掛接 Azure 檔案共用:
- Windows
- Linux。 若要避免在實驗室 VM 上出現掛接問題,請參閱搭配 Linux 使用 Azure 檔案一節。
發佈範本 VM。
重要
確定 Windows Defender 防火牆未封鎖透過連接埠 445 傳出的 SMB 連線。 根據預設,Azure VM 允許 SMB。
搭配 Linux 使用 Azure 檔案儲存體 (機器翻譯)
如果您使用預設指示掛接 Azure 檔案共用,在範本發佈之後,檔案共用似乎會在實驗室 VM 上消失。 下列修改過的指令碼可解決此問題。
針對具有公用端點的檔案共用:
#!/bin/bash
# Assign variables values for your storage account and file share
STORAGE_ACCOUNT_NAME=""
STORAGE_ACCOUNT_KEY=""
FILESHARE_NAME=""
# Do not use 'mnt' for mount directory.
# Using ‘mnt’ will cause issues on lab VMs.
MOUNT_DIRECTORY="prm-mnt"
sudo mkdir /$MOUNT_DIRECTORY/$FILESHARE_NAME
if [ ! -d "/etc/smbcredentials" ]; then
sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred" ]; then
sudo bash -c "echo ""username=$STORAGE_ACCOUNT_NAME"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
sudo bash -c "echo ""password=$STORAGE_ACCOUNT_KEY"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
fi
sudo chmod 600 /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred
sudo bash -c "echo ""//$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME cifs nofail,vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino"" >> /etc/fstab"
sudo mount -t cifs //$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME -o vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino
針對具有私人端點的檔案共用:
#!/bin/bash
# Assign variables values for your storage account and file share
STORAGE_ACCOUNT_NAME=""
STORAGE_ACCOUNT_IP=""
STORAGE_ACCOUNT_KEY=""
FILESHARE_NAME=""
# Do not use 'mnt' for mount directory.
# Using ‘mnt’ will cause issues on lab VMs.
MOUNT_DIRECTORY="prm-mnt"
sudo mkdir /$MOUNT_DIRECTORY/$FILESHARE_NAME
if [ ! -d "/etc/smbcredentials" ]; then
sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred" ]; then
sudo bash -c "echo ""username=$STORAGE_ACCOUNT_NAME"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
sudo bash -c "echo ""password=$STORAGE_ACCOUNT_KEY"" >> /etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred"
fi
sudo chmod 600 /etc/smbcredentials/$storage_account_name.cred
sudo bash -c "echo ""//$STORAGE_ACCOUNT_IP/$FILESHARE_NAME /$MOUNT_DIRECTORY/$fileshare_name cifs nofail,vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino"" >> /etc/fstab"
sudo mount -t cifs //$STORAGE_ACCOUNT_NAME.file.core.windows.net/$FILESHARE_NAME /$MOUNT_DIRECTORY/$FILESHARE_NAME -o vers=3.0,credentials=/etc/smbcredentials/$STORAGE_ACCOUNT_NAME.cred,dir_mode=0777,file_mode=0777,serverino
如果掛接 Azure 檔案共用至 /mnt
目錄的範本 VM 已發佈,則實驗室使用者可以:
- 移動指令以掛接
/mnt
至/etc/fstab
檔案頂端。 - 修改指令以掛接
/mnt/{file-share-name}
至不同的目錄,例如/prm-mnt/{file-share-name}
。
實驗室使用者應該執行 mount -a
以重新掛接目錄。
如需詳細資訊,請參閱搭配 Linux 使用 Azure 檔案。
Azure NetApp Files 搭配 NFS 磁碟區
Azure NetApp Files 服務是企業等級、高效能、計量檔案儲存體服務。
- 根據每個磁碟區設定存取原則
- 權限原則會針對每個磁碟區以 IP 為基礎
- 如果實驗室使用者需要其他實驗室使用者無法存取自己的磁碟區,則必須在發佈實驗室之後指派權限原則
- Azure 實驗室服務僅支援 Linux 型實驗室虛擬機,以連線到 Azure NetApp Files
- Azure NetApp Files 容量集區的虛擬網路必須連線到實驗室。 若要啟用實驗室的進階網路功能,請參閱在 Azure 實驗室服務中使用虛擬網路插入與您的虛擬網路連線。 虛擬網路插入必須在實驗室計畫建立期間完成。
若要在 Azure 實驗室服務中使用 Azure NetApp Files 共用:
按照設定 Azure NetApp Files 及 NFS 磁碟區中的步驟,建立 Azure NetApp Files 容量集區和一或多個 NFS 磁碟區。
如需服務等級的相關資訊,請參閱 Azure NetApp Files 的服務等級。
在範本 VM 上,安裝使用 NFS 檔案共用所需的元件。
Ubuntu:
sudo apt update sudo apt install nfs-common
在範本 VM 上,將下列指令碼儲存為
mount_fileshare.sh
以掛接 Azure NetApp Files 共用。為容量集區指派掛接目標 IP 位址的
capacity_pool_ipaddress
變數。 取得磁碟區的掛接指示,以尋找適當的值。 指令碼預期 Azure NetApp Files 磁碟區的路徑名稱。若要確保使用者可以執行指令碼,請執行
chmod u+x mount_fileshare.sh
。#!/bin/bash if [ $# -eq 0 ]; then echo "Must provide volume name." exit 1 fi VOLUME_NAME=$1 CAPACITY_POOL_IP_ADDR=0.0.0.0 # IP address of capacity pool # Do not use 'mnt' for mount directory. # Using ‘mnt’ might cause issues on lab VMs. MOUNT_DIRECTORY="prm-mnt" sudo mkdir -p /$MOUNT_DIRECTORY sudo mkdir /$MOUNT_DIRECTORY/$FOLDER_NAME sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=3,tcp $CAPACITY_POOL_IP_ADDR:/$VOLUME_NAME /$MOUNT_DIRECTORY/$VOLUME_NAME sudo bash -c "echo ""$CAPACITY_POOL_IP_ADDR:/$VOLUME_NAME /$MOUNT_DIRECTORY/$VOLUME_NAME nfs bg,rw,hard,noatime,nolock,rsize=65536,wsize=65536,vers=3,tcp,_netdev 0 0"" >> /etc/fstab"
如果所有實驗室使用者共用相同 Azure NetApp Files 磁碟區的存取權,則您可以在範本電腦上執行
mount_fileshare.sh
指令碼,然後再發佈。 如果實驗室使用者各取得自己的磁碟區,請儲存指令碼,以便每個實驗室使用者稍後執行。發佈範本 VM。
為檔案共用設定原則。
匯出原則可讓單一 VM 或多個 VM 能夠存取磁碟區。 您可以授與唯讀或讀取/寫入存取權。
實驗室使用者必須啟動其 VM 並執行指令碼,才能掛接檔案共用。 他們只需要執行腳本一次。
使用命令:
./mount_fileshare.sh myvolumename
。
下一步
- 瞭解如何建立教室訓練的實驗室
- 遵循快速入門:建立並連線至實驗室中的步驟以開始使用
- 建立及管理範本
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: