將區塊型儲存設備映射新增至 Amazon EC2 執行個體 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將區塊型儲存設備映射新增至 Amazon EC2 執行個體

根據預設,您所啟動的執行個體包含啟動執行個體之 AMI 區塊型設備映射中指定的任何儲存設備。您可在啟動執行個體時指定變更執行個體的區塊型設備映射,這些更新將覆寫或合併 AMI 的區塊型設備映射。

限制
  • 如為根磁碟區,只能修改:磁碟區大小、磁碟區類型和 Delete on Termination (在終止時刪除) 旗標。

  • 修改 EBS 磁碟區時,您無法減少其大小。因此,您所指定的快照大小必須等於或大於 AMI 區塊型設備映射中的快照。

啟動執行個體時更新區塊型儲存裝置對應

您可在啟動執行個體時新增 EBS 磁碟區和執行個體存放磁碟區至執行個體。但請注意,更新執行個體的區塊型設備映射,不會永久變更啟動執行個體之 AMI 的區塊型設備映射。

Console
若要在啟動時更新執行個體的磁碟區
  1. 遵循程序來啟動執行個體,但在完成下列步驟以更新磁碟區之前,請勿啟動執行個體。

  2. (選用) 若要新增磁碟區,請選擇設定儲存體新增新的磁碟區。選取磁碟區大小和磁碟區類型。

  3. (選用) 若要隱藏由 AMI 的區塊型儲存設備映射指定的磁碟區,請選擇設定儲存體移除

  4. (選用) 若要修改 EBS 磁碟區的組態,請在設定儲存體窗格中選擇進階。展開磁碟區的資訊,並進行任何所需變更。

  5. Summary (摘要) 面板中,檢閱您的執行個體組態,然後選擇 Launch instance (啟動執行個體)。如需更多詳細資訊,請參閱 使用主控台中的啟動執行個體精靈,啟動 EC2 執行個體

AWS CLI
若要在啟動時更新執行個體的磁碟區

請使用 --block-device-mappings 選項並搭配 run-instances 命令。

--block-device-mappings file://mapping.json

例如,假設 AMI 區塊型儲存設備映射可指定下列內容:

  • /dev/xvda - EBS 根磁碟區

  • /dev/sdh - 從 snap-1234567890abcdef0 中建立的 EBS 磁碟區

  • /dev/sdj - 空白 EBS 磁碟區,大小為 100

  • /dev/sdb - 執行個體儲存體磁碟區 ephemeral0

假設以下是 mapping.json 中的執行個體區塊型儲存設備映射。

[ { "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 100 } }, { "DeviceName": "/dev/sdj", "NoDevice": "" }, { "DeviceName": "/dev/sdh", "Ebs": { "VolumeSize": 300 } }, { "DeviceName": "/dev/sdc", "VirtualName": "ephemeral1" } ]

執行個體區塊型儲存設備映射會執行下列動作:

  • 覆寫根磁碟區的大小,/dev/xvda,將其增加到 100 GiB。

  • 防止 /dev/sdj 連接至執行個體。

  • 覆寫 /dev/sdh 的大小,將其增加到 300 GiB。請注意,不需要再次指定快照 ID。

  • 新增暫時性磁碟區,/dev/sdc。如果執行個體類型不支援多重執行個體儲存體磁碟區,這將沒有效果。如果執行個體類型支援 NVMe 執行個體儲存體磁碟區,會自動列舉這些磁碟區並包含在執行個體區塊型儲存設備映射中,且無法覆寫。

PowerShell
若要在啟動時更新執行個體的磁碟區

搭配使用 -BlockDeviceMapping 參數與 New-EC2Instance cmdlet 以及 -BlockDeviceMapping 參數。

-BlockDeviceMapping $bdm

假設以下是 $bdm 中的執行個體區塊型儲存設備映射。

$bdm = @() $root = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping $root.DeviceName = "/dev/xvda" $ebs1 = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice $ebs1.VolumeSize = 100 $root.Ebs = $ebs1 $bdm += $root $sdj = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping $sdj.DeviceName = "/dev/sdj" $sdj.NoDevice = "" $bdm += $sdj $sdh = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping $sdh.DeviceName = "/dev/sdh" $ebs2 = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice $ebs2.VolumeSize = 300 $sdh.Ebs = $ebs2 $bdm += $sdh $sdc = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping $sdc.DeviceName = "/dev/sdc" $sdc.VirtualName = "ephemeral1" $bdm += $sdc

執行個體區塊型儲存設備映射會執行下列動作:

  • 覆寫根磁碟區的大小,/dev/xvda,將其增加到 100 GiB。

  • 防止 /dev/sdj 連接至執行個體。

  • 覆寫 /dev/sdh 的大小,將其增加到 300 GiB。請注意,不需要再次指定快照 ID。

  • 新增暫時性磁碟區,/dev/sdc。如果執行個體類型不支援多重執行個體儲存體磁碟區,這將沒有效果。如果執行個體類型支援 NVMe 執行個體儲存體磁碟區,會自動列舉這些磁碟區並包含在執行個體區塊型儲存設備映射中,且無法覆寫。

更新執行中執行個體的區塊型儲存裝置對應

您不需要為了變更屬性而停止執行個體。

AWS CLI
若要更新執行中執行個體的區塊型儲存設備映射

使用 modify-instance-attribute 命令。

新增 --block-device-mappings 選項:

--block-device-mappings file://mapping.json

mapping.json 中,指定更新。例如,下列更新會將根磁碟區變更為持續存在。

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]
PowerShell
若要更新執行中執行個體的區塊型儲存設備映射

使用 Edit-EC2InstanceAttribute cmdlet。

新增 -BlockDeviceMapping 選項:

-BlockDeviceMapping $bdm

bdm 中,指定更新。例如,下列更新會將根磁碟區變更為持續存在。

$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice $ebd.DeleteOnTermination = false $bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping $bdm.DeviceName = "/dev/sda1" $bdm.Ebs = $ebd

檢視執行個體區塊型儲存裝置對應的 EBS 磁碟區

您可輕鬆列舉映射至執行個體的 EBS 磁碟區。

Console
若要檢視執行個體的 EBS 磁碟區
  1. 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇執行個體

  3. 選取執行個體,並查看儲存體索引標籤中顯示的詳細資訊。根磁碟區至少具有以下資訊 (其中根裝置一詞等同於根磁碟區):

    • 根裝置類型 (例如: EBS)

    • Root device name (根裝置名稱) (例如:/dev/xvda)

    • 區塊型儲存設備 (例如:/dev/xvda/dev/sdf/dev/sdj)

    如果執行個體是使用區塊型儲存裝置對應的其他 EBS 磁碟區來啟動,則其會顯示在 Block devices (區塊型儲存裝置)。任何執行個體存放區的磁碟區都不會顯示在此索引標籤上。

  4. 若要顯示 EBS 磁碟區的其他資訊,請選擇其磁碟區 ID 以移至磁碟區頁面。

AWS CLI
若要檢視執行個體的 EBS 磁碟區

使用 describe-instances 命令。

aws ec2 describe-instances \ --instance-ids i-1234567890abcdef0 \ --query Reservations[*].Instances[0].BlockDeviceMappings
PowerShell
若要檢視執行個體的 EBS 磁碟區

使用 Get-EC2Instance cmdlet。

(Get-EC2Instance -InstanceId i-0bac57d7472c89bac).Instances.BlockDeviceMappings

檢視執行個體區塊型儲存裝置對應的執行個體存放區的磁碟區

執行個體類型會決定執行個體可用執行個體儲存體磁碟區的數量和類型。如果區塊型設備映射中的執行個體存放磁碟區的數量,超過執行個體可用的執行個體存放磁碟區,請忽略額外的磁碟區。若要檢視執行個體的執行個體儲存體磁碟區,請執行 lsblk命令 (Linux 執行個體) 或開啟 Windows Disk Management (Windows 執行個體)。若要了每個解執行個體類型支援多少執行個體儲存體磁碟區,請參閱 Amazon EC2 執行個體類型規格

檢視執行個體的區塊型設備映射時,您只會看見 EBS 磁碟區,而非執行個體存放磁碟區。您用來檢視執行個體的執行個體存放區磁碟區的方法取決於磁碟區類型。

NVMe 執行個體存放區磁碟區

您可以使用 NVMe 命令列套件 (nvme-cli) 來查詢區塊型設備映射中的 NVMe 執行個體存放區磁碟區。在您的執行個體上下載並安裝套件,然後執行下列命令。

[ec2-user ~]$ sudo nvme list

以下是執行個體的範例輸出。Model (模型) 欄中的文字指出磁碟區是 EBS 磁碟區還是執行個體存放區磁碟區。在本範例中,/dev/nvme1n1/dev/nvme2n1 是執行個體存放區磁碟區。

Node SN Model Namespace ---------------- -------------------- ---------------------------------------- --------- /dev/nvme0n1 vol06afc3f8715b7a597 Amazon Elastic Block Store 1 /dev/nvme1n1 AWS2C1436F5159EB6614 Amazon EC2 NVMe Instance Storage 1 /dev/nvme2n1 AWSB1F4FF0C0A6C281EA Amazon EC2 NVMe Instance Storage 1 ...

您可以使用磁碟管理或 PowerShell 同時列出 EBS 和執行個體儲存體 NVMe 磁碟區。如需更多詳細資訊,請參閱 將 Amazon EC2 Windows 執行個體上的 NVMe 磁碟映射至磁碟區

HDD 或 SSD 執行個體存放區磁碟區

您可以使用執行個體中繼資料來查詢區塊型設備映射中的 HDD 或 SSD 執行個體存放區磁碟區。不包含 NVMe 執行個體存放磁碟區。

執行個體中繼資料所有請求的基底 URI 為 http://169.254.169.254/latest/。如需更多詳細資訊,請參閱 使用執行個體中繼資料管理您的 EC2 執行個體

首先,連接至執行中的執行個體。從執行個體使用此查詢,取得其區塊型設備映射。

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/block-device-mapping/
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/

回應將包含執行個體的區塊型儲存設備名稱。例如,執行個體存放區支援的 m1.small 執行個體的輸出看起來如下。

ami ephemeral0 root swap

ami 設備是執行個體看到的根磁碟區。執行個體存放磁碟區將命名為 ephemeral[0-23]swap 設備用於分頁檔。如果您也映射了 EBS 磁碟區,其將顯示為 ebs1ebs2 等等。

若要取得區塊型設備映射中個別區塊型儲存設備的詳細資訊,請將其名稱附加到先前的查詢,如下所示。

IMDSv2
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
IMDSv1
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0

首先,連接至執行中的執行個體。從執行個體使用此查詢,取得其區塊型設備映射。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/

回應將包含執行個體的區塊型儲存設備名稱。例如,執行個體存放區支援的 m1.small 執行個體的輸出看起來如下。

ami ephemeral0 root swap

ami 設備是執行個體看到的根磁碟區。執行個體存放磁碟區將命名為 ephemeral[0-23]swap 設備用於分頁檔。如果您也映射了 EBS 磁碟區,其將顯示為 ebs1ebs2 等等。

若要取得區塊型設備映射中個別區塊型儲存設備的詳細資訊,請將其名稱附加到先前的查詢,如下所示。

PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0