練習 - 將資料磁碟新增至 VM
您的法律事務所正在擴增案量,而您負責建立新 Linux Web 伺服器以儲存來自客戶、其他法律事務所與執法機關等各種來源的重要文件。 Web 伺服器可讓您上傳文件並將文件儲存於磁碟。
提示
此練習使用 Linux 作為範例,但建立 VM 及新增磁碟的基本程序也適用於 Windows。 主要的差異在於分割與格式化磁碟。 在 Windows 上,您可以透過「遠端桌面」與 VM 連線,並使用內建的磁碟管理工具,或是部署類似於這裡所使用之 Bash 指令碼的 PowerShell 指令碼。
您的目標是建立 Linux VM,並連結名為 uploadDataDisk1 的新虛擬硬碟 (VHD) 以儲存 /uploads
目錄。
設定 Azure CLI 預設值
Azure CLI 可讓您設定預設值,如此一來您每次在執行命令時,就不需要重複設定。
您可以指定預設的 Azure 位置或區域。 此位置是您放置 Azure VM 的位置。
在理想情況下,此位置會靠近您的客戶。 在此案例中,從 Azure 沙箱可取得的位置中選取最靠近您的區域。
免費的沙箱可讓您在 Azure 全球區域的一部分區域建立資源。 建立資源時,從下列清單中選取區域:
- westus2
- 美國中南部
- centralus
- eastus
- westeurope
- 東南亞
- japaneast
- brazilsouth
- australiasoutheast
- centralindia
執行
az configure
來設定您要使用的預設位置。 將 eastus 取代為您在上一個步驟中選擇的位置。az configure --defaults location=eastus
提示
您可以使用 [複製] 按鈕將命令複製到剪貼簿。 要貼上命令,請在 Cloud Shell 終端中,以滑鼠右鍵按一下新行,然後選取 [貼上],或使用 Shift+Insert 鍵盤快速鍵 (在 macOS 上為 ⌘+V)。
針對透過 Azure 沙箱為您建立的預先設定資源群組,設定預設的資源群組名稱:
[sandbox resource group] az configure --defaults group="<rgn>[sandbox Resource Group]</rgn>"
建立 Linux VM
在這裡,您會建立 Linux VM 來裝載您的 Web 伺服器。
執行此
az vm create
命令以建立 Ubuntu Linux VM。az vm create \ --name support-web-vm01 \ --image Canonical:UbuntuServer:16.04-LTS:latest \ --size Standard_DS1_v2 \ --admin-username azureuser \ --generate-ssh-keys
- VM 的名稱為 support-web-vm01。
- 其大小為 Standard_DS1_v2。
- 管理使用者名稱為 azureuser。 實際操作時,此名稱可以是任何您喜歡的名稱。
--generate-ssh-keys
引數會為您產生 SSH 金鑰組,可讓您透過 SSH 連線至 VM。
VM 需要幾分鐘的時間才能進行部署。 當 VM 準備就緒時,您會看到其相關資訊以 JSON 格式顯示。 以下是範例:
{ "fqdns": "", "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Compute/virtualMachines/support-web-vm01", "location": "eastus", "macAddress": "00-0D-3A-10-63-0A", "powerState": "VM running", "privateIpAddress": "10.0.0.4", "publicIpAddress": "104.211.38.211", "resourceGroup": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "zones": "" }
注意
在此課程中,您將使用此 VM 了解如何管理磁碟。 在實務上,您也可以安裝 Web 伺服器和其他軟體,然後執行
az vm open-port
以使您需要的連接埠提供給外界使用。
將空的資料磁碟新增至 VM
在這裡,您會建立空白的資料磁碟,並將其連結至您的 VM。 一開始,您的資料磁碟大小為 64 GB。 稍後,您會將此磁碟掛接至 VM 的 /uploads
目錄。
提示
為了方便學習,您將以個別步驟建立 VM 與資料磁碟。 在實務上,您可以將 --data-disk-sizes-gb
引數指定給 az vm create
命令,以便在建立 VM 時新增資料磁碟。
執行下列
az vm disk attach
命令,將空的磁碟新增至 VM。az vm disk attach \ --vm-name support-web-vm01 \ --name uploadDataDisk1 \ --size-gb 64 \ --sku Premium_LRS \ --new
此命令:
- 將磁碟命名為 uploadDataDisk1。
- 將其大小設定為 64 GB。
- 指定使用具有本機備援的進階版儲存體。
若要使用磁碟,您必須先將其分割與格式化。 之後再討論吧。
將磁碟初始化並格式化
空的資料磁碟必須經過初始化與格式化。 此流程與實體磁碟相同。
就一次性工作來說,您可以手動方式透過 SSH 與 VM 連線,然後執行所需的命令。 不過,若要讓程序更容易重複且較不易出錯,您可以在 Bash 指令碼或 PowerShell 指令碼中指定命令 (如果有)。
使用指令碼將流程自動化有額外的好處:您的指令碼可做為了解流程如何執行的文件。 其他人可以讀取您的指令碼,了解系統是如何設定的。 如果您需要變更程序,則可以直接修改指令碼,並在暫存 VM 上測試,然後再將變更內容部署至生產環境。
若要將本課程中的程序自動化,您可以使用自訂指令碼延伸模組。 「自訂指令碼延伸」是在 Azure VM 上下載並執行指令碼的便捷方式。 在您的 VM 啟動並執行之後,其就只是您可以用來設定系統的眾多方式之一。
您可以將指令碼儲存在 Azure 儲存體或公開位置,例如 GitHub。 您可以手動執行指令碼,或是將指令碼加入自動化部署的過程中。 在這裡,您會執行 Azure CLI 命令,以從 GitHub 下載預先製作的 Bash 指令碼,並在您的 VM 上執行。
為了方便學習,讓我們也在 VM 上執行數個命令,以驗證 VM 已依預期設定。
執行
az vm show
以取得您 VM 的公用 IP 位址,並將 IP 位址儲存為 Bash 變數。ipaddress=$(az vm show \ --name support-web-vm01 \ --show-details \ --query [publicIps] \ --output tsv)
執行下列
ssh
命令以使用您在先前的步驟中建立的ipaddress
變數資料,透過 SSH 連線在您的 VM 上執行lsblk
命令。 請回想,azureuser
是我們在建立該 VM 時所使用的管理使用者名稱。 如果您選擇了其他名稱,請使用該名稱。 出現提示時,輸入 yes。ssh azureuser@$ipaddress lsblk
此命令的輸出看起來應該如下所示。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 7G 0 disk └─sdb1 8:17 0 7G 0 part /mnt sr0 11:0 1 628K 0 rom sdc 8:32 0 64G 0 disk sda 8:0 0 30G 0 disk ├─sda14 8:14 0 4M 0 part ├─sda15 8:15 0 106M 0 part /boot/efi └─sda1 8:1 0 29.9G 0 part /
請注意,您建立的 64 GB 磁碟機 (
sdc
) 並未掛接。 磁碟機會以此方式列出,因為它尚未初始化。執行下列
az vm extension set
命令,以在您的 VM 上執行預先製作的 Bash 指令碼。警告
指令碼會修改
/etc/fstab
。 不當修改/etc/fstab
檔案會導致系統無法開機。 在您部署變更內容至生產環境前,請一律在暫存系統上測試組態變更。 若要了解如何正確修改此檔案,請參閱散發套件的文件。 在生產環境中,我們也建議您建立此檔案的備份,如此一來在有需要時便可還原設定。az vm extension set \ --vm-name support-web-vm01 \ --name customScript \ --publisher Microsoft.Azure.Extensions \ --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-add-and-size-disks-in-azure-virtual-machines/master/add-data-disk.sh"]}' \ --protected-settings '{"commandToExecute": "./add-data-disk.sh"}'
在命令執行時,您也可以視需要從另一個瀏覽器索引標籤檢查 Bash 指令碼。
總結來說,指令碼:
- 分割磁碟機
/dev/sdc
。 - 在磁碟機上建立 ext4 檔案系統。
- 建立我們用來作為掛接點的
/uploads
目錄。 - 將磁碟連結至掛接點。
- 更新
/etc/fstab
,如此在系統重新開機之後,磁碟機便會自動掛接。
- 分割磁碟機
若要驗證設定,請執行
ssh
命令,此命令與您之前透過 SSH 連線在 VM 上執行的lsblk
命令相同。ssh azureuser@$ipaddress lsblk
您應該會看到
sdc/sdc1
已如預期完成分割,且已掛接至/uploads
目錄。NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 7G 0 disk └─sdb1 8:17 0 7G 0 part /mnt sr0 11:0 1 628K 0 rom sdc 8:32 0 64G 0 disk └─sdc1 8:33 0 64G 0 part /uploads sda 8:0 0 30G 0 disk ├─sda14 8:14 0 4M 0 part ├─sda15 8:15 0 106M 0 part /boot/efi └─sda1 8:1 0 29.9G 0 part /
提示
有些 Linux 核心支援 TRIM 以捨棄磁碟上未使用的區塊。 如果您建立大型檔案後將其刪除,則此功能適用於 Azure 磁碟,並且可以省錢。 在 Azure 文件中了解如何啟用此功能。
摘要
現在,您已建立資料磁碟,並將它連結到您的 VM。 您已使用自訂指令碼延伸模組,在 VM 上執行預先製作的 Bash 指令碼,來使程序更具重複性。 此 Bash 指令碼會分割、格式化並掛接您的磁碟,以便寫入您的 Web 伺服器。
現在您 VM 上的磁碟已準備就緒,接著讓我們來深入探索您可以建立的各種磁碟類型。 您的主要決策是決定選擇標準或進階儲存體。