Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ виртуальные машины Linux
В этой статье описывается решение проблемы, из-за которой на виртуальной машине Azure на Linux не удается изменить размер раздела главной загрузочной записи (MBR) для диска данных размером более 2 ТБ.
Внимание
Эта статья относится к поддерживаемым дистрибутивам Linux.
Симптомы
При выполнении команды для изменения размера секции MBR вы получите следующее fdisk
предупреждение:
Размер этого диска составляет 8,8 ТБ. Формат таблицы секций DOS нельзя использовать на дисках для томов размером более 2 ТБ для 512-байтовых секторов. Используйте формат таблицы секционированных разделов GUID (GPT) и parted(1) и GUID.
Ниже приведен пример команды:
sudo fdisk /dev/sdd
Ниже приведен пример выходных данных команды:
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.
Чтобы проверить новый размер, выполните следующие действия.
Сообщите операционной системе (ОС) об изменении таблицы секционирования, выполнив следующую команду:
sudo partprobe /dev/sdd
Проверьте новый размер секции
/dev/sdd1
, выполнив следующую команду:sudo lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,RO,MOUNTPOINT
Выходные данные команды показывают, что секция изменена только на 2 ТБ. Ниже приведен пример выходных данных команды:
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
Причина
MBR, содержащий границы секции и сведения о типе секции (файловой системы), имеет ограничение адресации 2^32 сектора. Ограничение 32-разрядного адреса в структуре данных секции MBR ограничивает размер диска и секции.
Для 512-байтовых секторов ограничение адреса для секции MBR составляет 2 ТБ. Для новых устройств 4Kn каждый логический сектор составляет 2^32 x 4096 байт или 16 ТБ.
Решение
Так как таблица секций GUID (GPT) не имеет ограничений на адрес сектора, рекомендуется использовать GPT для диска данных размером 2 ТБ или больше.
Ниже приведены два метода использования GPT на дисках данных:
Создайте полную резервную копию данных на диске и повторно создайте GPT.
Изменение типа секции с MBR на GPT
Внимание
- Перед внесением изменений сделайте моментальный снимок диска данных.
- Это изменение можно сделать только на диске данных, а не на диске ОС. Если это сделано на диске ОС, он в итоге не будет загружаться.
- Для Red Hat невозможно преобразовать метку MSDOS в GPT без потери данных.
Шаг 1. Определение текущего типа таблицы секционирования
Используйте один из следующих средств, чтобы проверить, является ли текущий диск данных MBR или GPT.
sudo fdisk -l /dev/sdd | grep -i type
Disk label type: dos
Шаг 2. Повторное создание раздела
Примечание.
В этом разделе используется gdisk
средство для повторного создания секции в качестве примера.
gdisk
Установите средство, если оно не установлено на виртуальной машине Linux:sudo yum install gdisk -y
Проверьте текущий размер диска данных:
sudo gdisk -l /dev/sdd | grep Disk | grep sectors
Disk /dev/sdd: 17179869184 sectors, 8.0 TiB
Остановите работу приложения на виртуальной машине и отключите файловую систему:
sudo systemctl stop myapp.service sudo umount /appext4
Примечание.
/appext4
Обаmyapp.service
и являются примерами записей. Замените их соответствующим образом.- Если вам нужно увеличить размер диска данных, его можно сделать с помощью учетной записи Azure. Для изменения размера диска в портал Azure требуется простой. Дополнительные сведения см. в статье "Развертывание управляемого диска Azure".
Повторно создайте номер секции 1 с помощью
gdisk
команды: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.
Убедитесь, что стиль секции изменен на GPT:
sudo gdisk -l /dev/sdd | grep -A4 '^Partition table scan:'
Partition table scan: MBR: protective BSD: not present APM: not present GPT: present
Проверьте размер секции, выполнив следующую команду:
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
Отключите файловую систему, подключенную автоматически и исправив ее:
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
Повторно подключите файловую систему:
sudo mount /appext4
Измените размер файловой системы:
Если файловая система имеется
ext4
, выполните следующую команду: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.
Если файловая система имеется
XFS
, выполните следующую команду:sudo xfsgrowfs /dev/sdd1
Проверьте новый размер:
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
Заявление об отказе от ответственности за сведения о продуктах сторонних производителей
В этой статье упомянуты программные продукты независимых производителей. Корпорация Microsoft не дает никаких гарантий, подразумеваемых и прочих, относительно производительности и надежности этих продуктов.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.