Aggiungi mappature dei dispositivi a blocchi all'istanza Amazon EC2
Per impostazione predefinita, un'istanza avviata include eventuali dispositivi di archiviazione specificati nella mappatura dei dispositivi a blocchi di un'AMI da cui l'istanza è stata avviata. Puoi specificare le modifiche alle mappatura dei dispositivi a blocchi di un'istanza quando la avvii; tali aggiornamenti sostituiscono la mappatura dei dispositivi a blocchi dell'AMI o si uniscono a essa.
Limitazioni
-
Per il volume root, puoi solo modificare: le dimensioni, il tipo e il contrassegno È possibile modificare il Delete on Termination (Elimina al termine).
-
Quando modifichi un volume EBS non puoi ridurne le dimensioni, pertanto devi specificare una snapshot le cui dimensioni siano uguali o maggiori di quelle della snapshot specificata nella mappatura dei dispositivi a blocchi dell'AMI.
Aggiornamento della mappatura dei dispositivi a blocchi all'avvio di un'istanza
Puoi aggiungere volumi EBS e volumi instance store a un'istanza al momento del suo avvio. Tieni presente che l'aggiornamento della mappatura dei dispositivi a blocchi di un'istanza non comporta una modifica permanente della mappatura dell'AMI da cui l'istanza è stata avviata.
- Console
-
Per aggiornare i volumi per un’istanza all’avvio
-
Segui la procedura di avvio di un’istanza, ma non avviare l’istanza finché non avrai completato i seguenti passaggi per aggiornare i volumi.
-
(Facoltativo) Per aggiungere un volume, scegli Configura archiviazione, Aggiungi nuovo volume. Seleziona la dimensione e il tipo di volume.
-
(Facoltativo) Per sopprimere un volume specificato dalla mappatura dei dispositivi a blocchi dell’AMI, scegli Configura archiviazione, Rimuovi.
-
(Facoltativo) Per modificare la configurazione di un volume EBS, nel riquadro Configura archiviazione, scegli Avanzato. Espandi le informazioni relative al volume e apporta le modifiche necessarie.
-
Nel pannello Summary (Riepilogo), verifica la configurazione dell'istanza, quindi scegli Launch instance (Avvia istanza). Per ulteriori informazioni, consulta Avviare un'istanza EC2 tramite la procedura guidata di avvio dell'istanza nella console.
- AWS CLI
-
Per aggiornare i volumi per un’istanza all’avvio
Utilizzare il comando run-instances con l’opzione --block-device-mappings.
--block-device-mappings file://mapping.json
Ad esempio, si supponga che un’AMI di mappatura dei dispositivi a blocchi specifichi ciò che segue:
-
/dev/xvda: volume root EBS
-
/dev/sdh: volume EBS creato da snap-1234567890abcdef0
-
/dev/sdj: volume EBS vuoto con una dimensione di 100
-
/dev/sdb: volume di archivio dell’istanza ephemeral0
Supponiamo che quanto segue sia l’istanza di mappatura dei dispositivi a blocchi in mapping.json.
[
{
"DeviceName": "/dev/xvda",
"Ebs": {
"VolumeSize": 100
}
},
{
"DeviceName": "/dev/sdj",
"NoDevice": ""
},
{
"DeviceName": "/dev/sdh",
"Ebs": {
"VolumeSize": 300
}
},
{
"DeviceName": "/dev/sdc",
"VirtualName": "ephemeral1"
}
]
L’istanza di mappatura dei dispositivi a blocchi esegue le seguenti operazioni:
-
Sostituisce la dimensione del volume root, /dev/xvda, aumentandola a 100 GiB.
-
Impedisce a /dev/sdj di collegarsi all’istanza.
-
Sostituisce la dimensione di /dev/sdh, aumentandola a 300 GiB. Nota che non è necessario specificare nuovamente l’ID snapshot.
-
Aggiunge un volume effimero, /dev/sdc. Se il tipo di istanza non supporta più volumi di archivio dell’istanza, questo non ha effetto. Se lil tipo dell’istanza supporta i volumi di archivio dell’istanza NVMe, questi vengono enumerati automaticamente, inclusi nell’istanza di mappatura dei dispositivi a blocchi e non possono essere sostituiti.
- PowerShell
-
Per aggiornare i volumi per un’istanza all’avvio
Utilizza il parametro -BlockDeviceMapping con il cmdlet New-EC2Instance con il parametro -BlockDeviceMapping.
-BlockDeviceMapping $bdm
Supponiamo che quanto segue sia l’istanza di mappatura dei dispositivi a blocchi in $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
L’istanza di mappatura dei dispositivi a blocchi esegue le seguenti operazioni:
-
Sostituisce la dimensione del volume root, /dev/xvda, aumentandola a 100 GiB.
-
Impedisce a /dev/sdj di collegarsi all’istanza.
-
Sostituisce la dimensione di /dev/sdh, aumentandola a 300 GiB. Nota che non è necessario specificare nuovamente l’ID snapshot.
-
Aggiunge un volume effimero, /dev/sdc. Se il tipo di istanza non supporta più volumi di archivio dell’istanza, questo non ha effetto. Se lil tipo dell’istanza supporta i volumi di archivio dell’istanza NVMe, questi vengono enumerati automaticamente, inclusi nell’istanza di mappatura dei dispositivi a blocchi e non possono essere sostituiti.
Aggiornamento della mappatura dei dispositivi a blocchi di un'istanza in esecuzione
Non è necessario arrestare l'istanza prima di cambiare questo attributo.
- AWS CLI
-
Per aggiornare la mappatura dei dispositivi a blocchi di un’istanza in esecuzione
Utilizza il comando modify-instance-attribute.
Aggiungere l’opzione --block-device-mappings:
--block-device-mappings file://mapping.json
In mapping.json, specifica gli aggiornamenti. Ad esempio, il seguente aggiornamento modifica il volume root in modo che persista.
[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": false
}
}
]
- PowerShell
-
Per aggiornare la mappatura dei dispositivi a blocchi di un’istanza in esecuzione
Utilizzare il cmdlet Edit-EC2InstanceAttribute.
Aggiungere l’opzione -BlockDeviceMapping:
-BlockDeviceMapping $bdm
In bdm, specifica gli aggiornamenti. Ad esempio, il seguente aggiornamento modifica il volume root in modo che persista.
$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
Visualizzazione dei volumi EBS nella mappatura dei dispositivi a blocchi di un'istanza
Puoi enumerare facilmente i volumi EBS mappati a un'istanza.
- Console
-
Per visualizzare i volumi EBS di un’istanza
-
Aprire la console Amazon EC2.
-
Nel riquadro di navigazione, seleziona Instances (Istanze).
-
Selezionare l’istanza ed esaminare i dettagli visualizzati nella scheda Storage (Archiviazione). Al minimo, le seguenti informazioni sono disponibili per il volume root (dove il termine dispositivo root equivale a volume root):
-
Tipo di dispositivo root (ad esempio, EBS)
-
Nome dispositivo root (ad esempio, /dev/xvda)
-
Dispositivi a blocchi (ad esempio, /dev/xvda, /dev/sdf e /dev/sdj)
Se l'istanza è stata avviata con volumi EBS aggiuntivi utilizzando una mappatura di dispositivi a blocchi, questi vengono visualizzati in Block devices (Dispositivi a blocchi). Qualsiasi volume dell'instance store non viene visualizzato in questa scheda.
-
Per visualizzare ulteriori informazioni su un volume EBS, scegliere il relativo ID volume per andare alla pagina del volume.
- AWS CLI
-
Per visualizzare i volumi EBS di un’istanza
Utilizzare il comando describe-instances.
aws ec2 describe-instances \
--instance-ids i-1234567890abcdef0 \
--query Reservations[*].Instances[0].BlockDeviceMappings
- PowerShell
-
Per visualizzare i volumi EBS di un’istanza
Utilizzare il cmdlet Get-EC2Instance.
(Get-EC2Instance -InstanceId i-0bac57d7472c89bac).Instances.BlockDeviceMappings
Il tipo di istanza determina il numero e il tipo di volumi dell'archivio dell'istanza disponibili. Se il numero di volumi instance store in una mappatura dei dispositivi a blocchi supera il numero disponibile di volumi instance store per un'istanza, i volumi vengono ignorati. Per visualizzare i volumi dell'archivio dell'istanza per l'istanza, esegui il comando lsblk (istanza Linux) o apri Windows Disk Management (istanza Windows). Per conoscere il numero di volumi instance store supportati da ogni tipo di istanza, consulta le specifiche del tipo di istanza Amazon EC2.
Quando visualizzi la mappatura dei dispositivi a blocchi della tua istanza, puoi vedere solo i volumi EBS e non i volumi instance store. Il metodo utilizzato per visualizzare i volumi dell'archivio istanza per l'istanza dipende dal tipo di volume.
Volumi di archivio istanza NVMe
È possibile utilizzare il pacchetto della riga di comando NVMe, nvme-cli, per eseguire query sui volumi dell'archivio istanza NVMe nella mappatura dei dispositivi a blocchi. Scarica e installa il pacchetto sull'instanza, quindi emetti il seguente comando.
[ec2-user ~]$ sudo nvme list
Di seguito è riportato un esempio di output per un'istanza. Il testo nella colonna Modello indica se il volume è un volume EBS o un volume dell'archivio istanza. In questo esempio, entrambi /dev/nvme1n1 e /dev/nvme2n1 sono volumi dell'archivio istanza.
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 ...
Puoi utilizzare Disk Management o PowerShell per elencare volumi NVMe dell’archivio dell’istanza ed EBS. Per ulteriori informazioni, consulta Mappare i dischi NVMe ai volumi nell'istanza Amazon EC2 Windows.
Volumi di archivio istanza HDD o SSD
È possibile utilizzare i metadati dell'istanza per effettuare query sui volumi dell'archivio istanza HDD o SSD nella mappatura dei dispositivi a blocchi. I volumi dell'instance store NVMe non sono inclusi nella mappatura dei dispositivi a blocchi.
L'URI di base di tutte le richieste dei metadati dell'istanza è http://169.254.169.254/latest/. Per ulteriori informazioni, consulta Utilizzo dei metadati dell'istanza per gestire l'istanza EC2.
Innanzitutto connettiti all'istanza in esecuzione, quindi da essa utilizza questa query per ottenere la relativa mappatura dei dispositivi a blocchi.
- 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/
La risposta include i nomi dei dispositivi a blocchi dell'istanza. Ad esempio, l'output di un'istanza m1.small supportata da archivio istanza somiglia a quello seguente.
ami
ephemeral0
root
swap
Il dispositivo ami è il volume root come visto dall’istanza. I volumi instance store sono denominati ephemeral[0-23]. Il dispositivo swap è destinato al file di paging. Se hai mappato anche i volumi EBS, questi appariranno come ebs1, ebs2 e così via.
Per ottenere i dettagli su un singolo dispositivo a blocchi nella mappatura dei dispositivi a blocchi, aggiungi il suo nome alla query precedente, come mostrato.
- 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
Innanzitutto connettiti all'istanza in esecuzione, quindi da essa utilizza questa query per ottenere la relativa mappatura dei dispositivi a blocchi.
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/
La risposta include i nomi dei dispositivi a blocchi dell'istanza. Ad esempio, l'output di un'istanza m1.small supportata da archivio istanza somiglia a quello seguente.
ami
ephemeral0
root
swap
Il dispositivo ami è il volume root come visto dall’istanza. I volumi instance store sono denominati ephemeral[0-23]. Il dispositivo swap è destinato al file di paging. Se hai mappato anche i volumi EBS, questi appariranno come ebs1, ebs2 e così via.
Per ottenere i dettagli su un singolo dispositivo a blocchi nella mappatura dei dispositivi a blocchi, aggiungi il suo nome alla query precedente, come mostrato.
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0