分享方式:


在 Azure 實驗室服務中使用外部檔案儲存體

重要

Azure 實驗室服務將於 2027 年 6 月 28 日淘汰。 如需詳細資訊,請參閱淘汰指南

本文涵蓋使用 Azure 實驗室服務時,外部檔案儲存體的一些選項。 Azure 檔案提供在雲端中完全受控、並且可透過 SMB 2.1 和 SMB 3.0 通訊協定來存取的檔案共用。 Azure 檔案共用可以在虛擬網路內公開或私下連線。 您也可以將共用設定為使用實驗室使用者的 Active Directory 認證來連線到檔案共用。 如果您是在 Linux 電腦上,也可以使用 Azure NetApp Files 搭配 NFS 磁碟區搭配 Azure 實驗室服務的外部檔案儲存體。

要使用的解決方案

下表列出每個外部存儲解決方案的重要考慮。

解決方案 重要須知
Azure 檔案與公用端點共用
  • 每個人都具有讀取/寫入權限。
  • 不需要虛擬網路對等互連。
  • 可供所有 VM 存取,而不只是實驗室 VM。
  • 如果您使用 Linux,實驗室使用者將可存取儲存體帳戶金鑰。
Azure 檔案與私人端點共用
  • 每個人都具有讀取/寫入權限。
  • 需要虛擬網路對等互連。
  • 只能存取相同網路 (或對等互連網路) 上的 VM 作為儲存體帳戶。
  • 如果您使用 Linux,實驗室使用者將可存取儲存體帳戶金鑰。
Azure NetApp Files 搭配 NFS 磁碟區
  • 可針對磁碟區設定讀取或讀取/寫入存取權。
  • 許可權是使用學生 VM 的 IP 位址來設定。
  • 需要虛擬網路對等互連。
  • 您可能需要註冊才能使用 Azure NetApp Files 服務。
  • 僅限 Linux。

使用外部儲存體的成本不包含在使用 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。

  1. 建立 Azure 儲存體帳戶。 在 [連線方法] 頁面上,選擇 [公用端點] 或 [私人端點]

  2. 如果使用私人方法,請建立私人端點,以從虛擬網路存取檔案共用。

  3. 建立 Azure 檔案共用。 如果使用公用端點,則檔案共用可透過儲存體帳戶的公用主機名稱連線。 如果使用私人端點,則檔案共用可透過私人 IP 位址連線。

  4. 在範本 VM 中掛接 Azure 檔案共用:

  5. 發佈範本 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 共用:

  1. 按照設定 Azure NetApp Files 及 NFS 磁碟區中的步驟,建立 Azure NetApp Files 容量集區和一或多個 NFS 磁碟區。

    如需服務等級的相關資訊,請參閱 Azure NetApp Files 的服務等級

  2. 在 Azure 實驗室服務中連線到您的虛擬網路

  3. 建立實驗室

  4. 在範本 VM 上,安裝使用 NFS 檔案共用所需的元件。

    • Ubuntu:

      sudo apt update
      sudo apt install nfs-common
      
  5. 在範本 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"
    
  6. 如果所有實驗室使用者共用相同 Azure NetApp Files 磁碟區的存取權,則您可以在範本電腦上執行 mount_fileshare.sh 指令碼,然後再發佈。 如果實驗室使用者各取得自己的磁碟區,請儲存指令碼,以便每個實驗室使用者稍後執行。

  7. 發佈範本 VM。

  8. 為檔案共用設定原則

    匯出原則可讓單一 VM 或多個 VM 能夠存取磁碟區。 您可以授與唯讀或讀取/寫入存取權。

  9. 實驗室使用者必須啟動其 VM 並執行指令碼,才能掛接檔案共用。 他們只需要執行腳本一次。

    使用命令:./mount_fileshare.sh myvolumename

下一步