Wie konvertiere ich das Standard-MBR-Partitionierungsschema für meine EC2-Ubuntu-Instance in GPT?

Lesedauer: 7 Minute
0

Meine Amazon Elastic Compute Cloud (Amazon EC2) 16.04, 18.04 oder 20.04 Ubuntu-Instance hat ein maximales Kontingent für MBR-Partitionen von 2 Tebibyte (TiB). Um das Kontingent zu umgehen, möchte ich auf meinem Amazon Elastic Block Store (Amazon EBS)-Volume zu einem GPT-Partitionierungsschema konvertieren.

Kurzbeschreibung

Ubuntu-Versionen 22.04 und höher verwenden standardmäßig die GPT-Partitionierung. Du musst die GPT-Partitionierung jedoch für die Ubuntu-Versionen 16.04, 18.04 und 20.04 manuell einrichten.

Lösung

Wichtig: Bevor du die Instance anhältst und startest, gehe wie folgt vor:

Hinweis: Wenn du eine Instance anhältst und startest, ändert sich die öffentliche IP-Adresse der Instance. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an die Instance eine Elastic-IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden. Wenn du Amazon Route 53 verwendest, musst du möglicherweise die Route 53-DNS-Datensätze aktualisieren, wenn sich die öffentliche IP-Adresse ändert.

Gehe wie folgt vor, um das Standard-MBR-Partitionierungsschema der Ubuntu-Instance in GPT zu konvertieren:

  1. Öffne die Amazon-EC2-Konsole.

  2. Starte eine Instance von einem Amazon Machine Image (AMI) aus, auf dem Ubuntu ausgeführt wird.

  3. Starte eine zweite Instance von demselben Ubuntu-AMI mit einem 3-TB-Root-Volume in derselben Availability Zone.

  4. Halte die zweite Instance an.

  5. Trenne das Root-Volume /dev/xvda oder /dev/sda1 von der zweiten Instance. Füge dann das Root-Volume als /dev/sdf an die erste Instance an.

  6. Verwende SSH, um eine Verbindung zur ersten Instance herzustellen.

  7. Um die Root-Partition von dev/sdf anzuzeigen, führe den folgenden lsblk-Befehl aus:

    sudo lsblk

    Beispielausgabe:

    NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    (snip)
    xvdf    202:80    0   3T  0 disk
    └─xvdf1 202:81    0   2T  0 part
    (snip)

    Hinweis: Im vorherigen Beispiel ist die Root-Partition von /dev/sdf 2 Terabyte (TB) groß. Bei Nitro-Instance-Typen ähnelt der Blockgerätename /dev/nvme1n1.

  8. Um die Partitionstabelle von MBR in GPT zu konvertieren, verwende das gdisk-Tool, um den folgenden Befehl auszuführen:

    sudo gdisk /dev/xvdf

    Hinweis: Wenn du falsche Befehle in gdisk eingibst, drücke q oder Strg-C, um gdisk zu beenden und die Änderungen nicht zu speichern.
    Beispielausgabe:

    GPT fdisk (gdisk) version 1.0.1
    
    Partition table scan:
      MBR: MBR only
      BSD: not present
      APM: not present
      GPT: not present
    
    ***************************************************************
    Found invalid GPT and valid MBR; converting MBR to GPT format
    in memory. THIS OPERATION IS POTENTIALLY
        DESTRUCTIVE! Exit by
    typing 'q' if you don't want to convert your MBR partitions
    to GPT format!
  9. Um in den Expertenmodus zu wechseln und den Wert für die Sektorausrichtung festzulegen, gib bei den Prompts die folgenden Werte ein:

    Command (? for help): x                                            
    Expert command (? for help): l                                     
    Enter the sector alignment value (1-65536, default = 2048): 1      
    Expert command (? for help): m

    Hinweis: Drücke die Eingabetaste nach jedem Prompt. In der vorherigen Konfiguration wird der Wert für die Sektorausrichtung vom Standardwert 8 auf 1 geändert. Wenn du die 8-Byte (B)-Ausrichtung verwendest, treten möglicherweise Probleme beim Erstellen der GPT-Partition auf.

  10. Gib bei den Prompts die folgenden Werte ein, um eine GPT-Partition zu erstellen:

Command (? for help): n                                                                                                        
Partition number (2-128, default 2): 128                                                                                
First sector (34-6291455966, default = 4294967296) or {+-}size{KMGTP}: 34                     
Last sector (34-2047, default = 2047) or {+-}size{KMGTP}:                                              
Hex code or GUID (L to show codes, Enter = 8300): ef02                                                     

Hinweis: Drücke die Eingabetaste nach jedem Prompt. Wenn du beim Prompt Last sector (Letzter Sektor) die Eingabetaste drückst, erhältst du die Ausgabe Current type is 'Linux filesystem' (Der aktuelle Typ ist „Linux-Dateisystem“). Im vorherigen Beispiel ist ef02 die BIOS-Boot-Partitionsnummer.
Beispielausgabe:

Changed type of partition to 'BIOS boot partition'
  1. Gib bei den Prompts die folgenden Werte ein, um die Root-Partition zu löschen:
Command (? for help): d                                                                                                         
Partition number (1-128): 1

Hinweis: Drücke die Eingabetaste nach jedem Prompt. Gib bei den Prompts die folgenden Werte ein, um die Root-Partition auf 3 TiB neu zu erstellen:

Command (? for help): n                                                                                                         
Partition number (1-128, default 1): 1                                                                                     
First sector (2048-6291455966, default = 2048) or {+-}size{KMGTP}:                                  
Last sector (2048-6291455966, default = 6291455966) or {+-}size{KMGTP}:                       
Hex code or GUID (L to show codes, Enter = 8300):

Hinweis: Drücke die Eingabetaste nach jedem Prompt. Wenn du beim Prompt Last sector (Letzter Sektor) die Eingabetaste drückst, erhältst du die Ausgabe Current type is 'Linux filesystem' (Der aktuelle Typ ist „Linux-Dateisystem“). Um die Standardeinstellungen zu verwenden, gib für die Prompts First sector (Erster Sektor), Last sector (Letzter Sektor) und Hex-Code oder GUID die Eingabetaste ein.
Beispielausgabe:

Changed type of partition to 'Linux filesystem'
  1. Gib bei den Prompts die folgenden Werte ein, um die GPT-Partitionstabelle zu speichern:
Command (? for help): w                                                                                                        
Do you want to proceed? (Y/N): y

Wichtig: Diese Aktion überschreibt bestehende Partitionen.
Beispielausgabe:

OK; writing new GUID partition table (GPT) to /dev/xvdf.
The operation has completed successfully.
  1. Führe den folgenden lsblk-Befehl aus, um die neuen Volume-Informationen anzuzeigen:
sudo lsblk

Beispielausgabe:

NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdf    202:80   0   3T  0 disk
└─xvdf1 202:81   0   3T  0 part
  1. Um zu überprüfen, ob das Dateisystem des Geräts /dev/xvdf1 korrekt ist, verwende das fsck-Tool, um den folgenden Befehl auszuführen:
sudo e2fsck -f /dev/xvdf1

Hinweis: Um alle Fragen mit Ja zu beantworten, füge dem Befehl e2fsck einen -y-Switch hinzu. Weitere Informationen zum fsck-Tool findest du unter fsck.8.gz auf der Ubuntu-Website.
Beispielausgabe:

e2fsck 1.42.13 (17-May-2015)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
cloudimg-rootfs: 57524/262144000 files (0.0% non-contiguous), 16648272/536870655 blocks
  1. Um die Größe des Dateisystems auf 3 TiB zu ändern, führe den folgenden resize-Befehl aus:
sudo resize2fs /dev/xvdf1

Hinweis: Das Ändern der Größe des Dateisystems kann 10–20 Sekunden dauern.
Beispielausgabe:

resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on /dev/xvdf1 to 786431739 (4k) blocks.
The filesystem on /dev/xvdf1 is now 786431739 (4k) blocks long.
  1. Installiere Grub auf dem /dev/xvdf1-Gerät und verwende dann die folgenden Befehle, um Grub basierend auf der Ubuntu-Version zu konfigurieren:
    Ubuntu 16.04 oder 18.04:
sudo mount /dev/xvdf1 /mnt
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt /bin/bash
grub-install /dev/xvdf
grub-mkdevicemap
update-grub
exit
sudo umount -l /mnt/dev
sudo umount -l /mnt/sys
sudo umount -l /mnt/proc
sudo umount -l /mnt

Ubuntu 20.04:

sudo mount /dev/xvdf1 /mnt
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt /bin/bash
grub-install /dev/xvdf
grub-mkdevicemap
echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub
echo "GRUB_FORCE_PARTUUID=" >> /etc/default/grub.d/40-force-partuuid.cfg
update-grub
exit
sudo umount -l /mnt/dev
sudo umount -l /mnt/sys
sudo umount -l /mnt/proc
sudo umount -l /mnt-l /mnt/dev sudo umount -l /mnt/sys sudo umount -l /mnt/proc sudo umount -l /mnt`
  1. Trenne das /dev/xvdf-Volume von der Instance, die ausgeführt wird.
  2. Füge das /dev/xvdf-Volume als /dev/xvda oder /dev/sda1 wieder an die erste Instance an.
  3. Verwende SSH, um eine Verbindung zur ersten Instance herzustellen und starte dann die Instance.
  4. Um zu überprüfen, ob das Root-Volume auf der ursprünglichen Instance jetzt 3 TiB Speicherplatz hat, führe den Befehl lsblk aus:
sudo lsblk

Ähnliche Informationen

Amazon EBS-Volume-Beschränkungen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten