Udostępnij za pośrednictwem


Nie można zmienić rozmiaru partycji MBR dla dysku danych większego niż 2 TB na maszynie wirtualnej z systemem Linux

Dotyczy: ✔️ maszyny wirtualne z systemem Linux

Ten artykuł zawiera rozwiązanie problemu polegającego na tym, że nie można zmienić rozmiaru partycji głównego rekordu rozruchowego (MBR) dla dysku danych większego niż 2 TB na maszynie wirtualnej Azure Linux.

Ważne

Ten artykuł dotyczy obsługiwanych dystrybucji systemu Linux.

Symptomy

Po uruchomieniu polecenia w celu zmiany rozmiaru fdisk partycji MBR zostanie wyświetlony następujący komunikat ostrzegawczy:

Rozmiar tego dysku wynosi 8,8 TB. Format tabeli partycji SYSTEMU DOS nie może być używany na dyskach dla woluminów większych niż 2 TB dla sektorów 512 bajtów. Użyj formatu tabeli partycji parted(1) i GUID (GPT).

Oto przykład polecenia:

sudo fdisk /dev/sdd

Oto przykład danych wyjściowych polecenia:

WARNING: The size of this disk is 8.8 TB (8796093022208 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).
The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): n
Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-4294967295, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4294967294, default 4294967294):
Using default value 4294967294
Partition 1 of type Linux and of size 2 TiB is set   <--- HERE
Command (m for help): p
Disk /dev/sdd: 8796.1 GB, 8796093022208 bytes, 17179869184 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x7024d1b6
    Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048  4294967294  2147482623+  83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Aby sprawdzić nowy rozmiar, wykonaj następujące kroki:

  1. Poinformuj system operacyjny o zmianie tabeli partycji, uruchamiając następujące polecenie:

    sudo partprobe /dev/sdd
    
  2. Sprawdź nowy rozmiar partycji /dev/sdd1 , uruchamiając następujące polecenie:

    sudo lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,RO,MOUNTPOINT
    

    Dane wyjściowe polecenia pokazują, że rozmiar partycji został zmieniony tylko na 2 TB. Oto przykład danych wyjściowych polecenia:

    NAME              TYPE FSTYPE      LABEL  SIZE RO MOUNTPOINT
    sda               disk                     32G  0
    ├─sda1            part vfat               500M  0 /boot/efi
    ├─sda2            part xfs                500M  0 /boot
    ├─sda3            part xfs                 31G  0 /
    └─sda4            part                      2M  0
    sdb               disk                    256G  0
    └─sdb1            part ext4               256G  0 /mnt
    sdd               disk                      8T  0
    └─sdd1            part ext4                 2T  0 /appext4
    

Przyczyna

MbR, który zawiera informacje o granicach partycji i typie partycji (system plików), ma limit adresowania 2^32 sektorów. Ograniczenie adresów 32-bitowych w strukturze danych partycji MBR ogranicza rozmiar dysku i partycji.

W przypadku sektorów 512 bajtów ograniczenie dotyczące partycji MBR wynosi 2 TB. W przypadku nowszych urządzeń 4Kn każdy sektor logiczny wynosi 2^32 x 4096 bajtów lub 16 TB.

Rozwiązanie

Ponieważ tabela partycji GUID (GPT) nie ma ograniczeń dotyczących sektora, zalecamy użycie GPT dla dysku danych o rozmiarze 2 TB lub większym.

Poniżej przedstawiono dwie metody używania GPT na dyskach danych:

Zmiana typu partycji z MBR na GPT

Ważne

  • Utwórz migawkę dysku danych przed wprowadzeniem jakiejkolwiek zmiany.
  • Tę zmianę można wprowadzić tylko na dysku danych, a nie na dysku z systemem operacyjnym. W przypadku wprowadzenia jej na dysku z systemem operacyjnym, uniemożliwi to rozruch.
  • W przypadku oprogramowania Red Hat nie można przekonwertować etykiety MSDOS na GPT bez utraty danych.

Krok 1. Identyfikowanie bieżącego typu tabeli partycji

Użyj jednego z poniższych narzędzi, aby sprawdzić, czy bieżący dysk danych to MBR lub GPT.

sudo fdisk -l /dev/sdd | grep -i type
Disk label type: dos

Krok 2. Ponowne utworzenie partycji

Uwaga 16.

W tej sekcji użyto gdisk narzędzia do ponownego utworzenia partycji jako przykładu.

  1. gdisk Zainstaluj narzędzie, jeśli nie jest zainstalowane na maszynie wirtualnej z systemem Linux:

    sudo yum install gdisk -y
    
  2. Sprawdź bieżący rozmiar dysku danych:

    sudo gdisk -l /dev/sdd | grep Disk | grep sectors
    
    Disk /dev/sdd: 17179869184 sectors, 8.0 TiB
    
  3. Zatrzymaj aplikację uruchomioną na maszynie wirtualnej i odinstaluj system plików:

    sudo systemctl stop myapp.service
    sudo umount /appext4
    

    Uwaga 16.

    • Oba myapp.service i /appext4 są przykładowymi wpisami. Zastąp je odpowiednio.
    • Jeśli musisz zwiększyć rozmiar dysku danych, możesz to zrobić teraz za pośrednictwem konta platformy Azure. Zmiana rozmiaru dysku w witrynie Azure Portal wymaga przestoju. Aby uzyskać więcej informacji, zobacz Rozwijanie dysku zarządzanego platformy Azure.
  4. Utwórz ponownie numer partycji 1 przy użyciu gdisk polecenia :

    sudo gdisk /dev/sdd
    
    GPT fdisk (gdisk) version 0.8.10
    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 dont want to convert your MBR partitions
    to GPT format!
    ***************************************************************
    Command (? for help): p                                                --> PRINT PARTITION TABLE
    Disk /dev/sdd: 17179869184 sectors, 8.0 TiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 8A3DAD49-6916-4BC5-836B-2F90C5161C05
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 17179869150
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 12884903870 sectors (6.0 TiB)
    Number  Start (sector)    End (sector)  Size       Code  Name
        1            2048      4294967294   2.0 TiB     8300  Linux filesystem
    Command (? for help): d                                                --> DELETE PARTITION TABLE
    Using 1
    Command (? for help): n                                                --> CREATE NEW PARTITION TABLE
    Partition number (1-128, default 1):                                   --> PARTITION 1
    First sector (34-17179869150, default = 2048) or {+-}size{KMGTP}: 2048 --> SAME 1th SECTOR AS THE ORIGINAL PARTITION
    Last sector (2048-17179869150, default = 17179869150) or {+-}size{KMGTP}: --> HIT ENTER TO USE THE WHOLE SPACE, IN THIS CASE 8 TB
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300):
    Changed type of partition to 'Linux filesystem'
    Command (? for help): p                                                --> PRINT PARTITION TABLE
    Disk /dev/sdd: 17179869184 sectors, 8.0 TiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 8A3DAD49-6916-4BC5-836B-2F90C5161C05
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 17179869150
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)
    Number  Start (sector)    End (sector)  Size       Code  Name
        1            2048     17179869150   8.0 TiB     8300  Linux filesystem
    Command (? for help): w                                                  --> APPLY CHANGES
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    Do you want to proceed? (Y/N): Y                                          --> "Y" TO APPLY
    OK; writing new GUID partition table (GPT) to /dev/sdd.
    Warning: The kernel is still using the old partition table.
    The new table will be used at the next reboot.
    The operation has completed successfully.
    
  5. Sprawdź, czy styl partycji został zmieniony na GPT:

    sudo gdisk -l /dev/sdd | grep -A4 '^Partition table scan:'
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present    
    
  6. Sprawdź rozmiar partycji, uruchamiając następujące polecenie:

    sudo lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,RO,MOUNTPOINT
    
    NAME              TYPE FSTYPE      LABEL  SIZE RO MOUNTPOINT
    sda               disk                     32G  0
    ├─sda1            part vfat               500M  0 /boot/efi
    ├─sda2            part xfs                500M  0 /boot
    ├─sda3            part xfs                 31G  0 /
    └─sda4            part                      2M  0
    sdb               disk                    256G  0
    └─sdb1            part ext4               256G  0 /mnt
    sdd               disk                      8T  0
    └─sdd1            part ext4                 2T  0 /appext4
    
  7. Odinstalowywanie systemu plików, który został zainstalowany automatycznie i napraw go:

    sudo umount /appext4
    sudo fsck.ext4 -fy /dev/sdd1
    
    e2fsck 1.42.9 (28-Dec-2013)
    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
    /dev/sdd1: 6728/134217728 files (0.2% non-contiguous), 8849024/536870655 blocks
    
  8. Ponownie odinstaluj system plików:

    sudo mount /appext4
    
  9. Zmień rozmiar systemu plików:

    Jeśli system plików to ext4, uruchom następujące polecenie:

    sudo resize2fs /dev/sdd1
    
    resize2fs 1.42.9 (28-Dec-2013)
    Filesystem at /dev/sdd1 is mounted on /appext4; on-line resizing required
    old_desc_blocks = 256, new_desc_blocks = 1024
    The filesystem on /dev/sdd1 is now 2147483387 blocks long.
    

    Jeśli system plików to XFS, uruchom następujące polecenie:

    sudo xfsgrowfs /dev/sdd1
    
  10. Sprawdź nowy rozmiar:

    sudo lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,RO,MOUNTPOINT
    
    NAME              TYPE FSTYPE      LABEL  SIZE RO MOUNTPOINT
    sda               disk                     32G  0
    ├─sda1            part vfat               500M  0 /boot/efi
    ├─sda2            part xfs                500M  0 /boot
    ├─sda3            part xfs                 31G  0 /
    └─sda4            part                      2M  0
    sdb               disk                    256G  0
    └─sdb1            part ext4               256G  0 /mnt
    sdc               disk                      1T  0
    └─sdc1            part LVM2_member          1T  0
      └─vgtest1-lvol1 lvm  ext4               500G  0
    sdd               disk                      8T  0
    └─sdd1            part ext4                 8T  0 /appext4
    sde               disk                      1T  0
    

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.