Во-первых, я новичок в Linux, но мне было поручено автоматизировать процесс изменения размера раздела в RHEL 6.5. Сервер находится в VMWare как виртуальная машина, и мы пытаемся организовать действие, при котором существующий файл VMDK расширяется, а размеры разделов на этом VMDK автоматически изменяются.
В качестве тестового примера VMDK отображается в системе как / dev / sdb. Размер, скажем, 5 ГБ. Теперь у меня есть 2 раздела: / dev / sdb1, / dev / sdb2, sdb1 занимает 1 ГБ, а sdb2 занимает 5 ГБ.
Если кто-то теперь увеличивает размер VMDK с 5 ГБ до 10 ГБ и указывает, что дополнительное пространство должно идти в / dev / sdb1, как я могу это сделать? До сих пор мне удалось создать процесс, при котором размер последнего раздела можно без проблем изменять (например, / dev / sdb2), но никакие предыдущие не могут из-за номеров начальных и конечных блоков.
Мой процесс выглядит следующим образом:
1) Увеличьте размер VMDK 2) Запустите echo "1"> / sys / class / scsi_device / 0: 0: 0: 0 / device / rescan, чтобы подобрать диск с измененным размером 3) Используя fdisk, удалите раздел и создайте его заново.
Это отлично работает, если модифицируемый раздел является последним, но если он первый или второй, то раздел просто воссоздается таким, каким он был. Есть ли какой-нибудь инструмент, который может сделать это разумно?
Это результат работы fdisk в моей среде:
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
67 heads, 62 sectors/track, 5048 cylinders
Units = cylinders of 4154 * 512 = 2126848 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf3405e93
Device Boot Start End Blocks Id System
/dev/sdb1 1 510 1059239 83 Linux
/dev/sdb2 511 2524 4183078 83 Linux
Как видите, sdb1 занимает 1 ГБ, а SDB2 - 4 ГБ, но на диске «свободно» около 5 ГБ. Теперь, как мне изменить это так, чтобы sdb1 занимал оставшееся место? Если я удалю sdb1 и создаю его заново, он создаст тот же раздел. Я могу легко создать новый раздел, чтобы занять это пространство, или даже изменить sdb2, чтобы он занимал оставшееся пространство (просто удалите sdb2 и воссоздайте его с помощью fdisk), но вопрос в том, как мне изменить sdb1, чтобы занять это пространство?
Надеюсь, мой вопрос ясен, и заранее спасибо
Вы можете переместить второй раздел sdb2 в конец «диска», а затем воссоздать первый, к тому времени у вас будет возможность воссоздать первый с «полным» размером.
Однако, в зависимости от вашей файловой системы, вам не нужно удалять ее, а нужно "только" размонтировать, а затем выполнить resize2fs
(по крайней мере, для ext2 / 3/4) после выполнения вышеуказанного движения.
Сам ход может быть выполнен с parted
.
Чтобы узнать, как это сделать: перейдите по следующим ссылкам:
Parted руководство пользователя gnu.org и linuxquestions.org
Что-то вроде этого может сработать (вам нужно изменить свои числа:
parted move 2 -125 -0
parted resize 1 0.063 -125
Однако после версии 2.4. parted
не содержит move
больше, поэтому вам может понадобиться другой инструмент (или он переименован в другую функцию, которую я не нашел)
Руководство по Qoute с gnu.org
Обратите внимание, что после версии 2.4 были удалены следующие команды: check, cp, mkfs, mkpartfs, move, resize.
Я чувствую вашу боль, я тоже относительно новичок в Linux, поэтому я понимаю вашу боль. LVM - это то, что нужно, их можно легко расширить. Если вы зарегистрированы в Red Hat, вы можете установить графический интерфейс (yum -y install system-config-lvm). После установки в строке CMD запустите 'system-config-lvm', это запустит графический интерфейс, и оттуда вы сможете просматривать различные диски / разделы и вносить изменения или в командной строке вам нужно будет пройти три шага обработать. Поэтому я просто использую графический интерфейс, быстрый и простой. Надеюсь это поможет