Технологии виртуализации VMWare позволяет налету изменять размер дисков гостевых ОС — это факт.
Если для Windows процедура увеличения корневого раздела происходит в пару кликов, без перезагрузки, то изменение корневого (в частности) или смонтированного раздела Linux во время выполнения происходит не так просто. Модифицированная таблица разделов для «корня» не перечитывается ядром, даже после выполнения «partprobe», т.е. в любом случае придется делать перезагрузку.
В случае наличии у вас LVM все гораздо проще, но в моем случае все достаточно стандартно — система состоит из 3 разделов:
[root@ ~]# parted -l Model: VMware Virtual disk (scsi) Disk /dev/sda: 10.7GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 211MB 210MB primary ext3 boot 2 211MB 9664MB 9453MB primary ext4 3 9664MB 10.7GB 1074MB primary linux-swap(v1)
Рассмотрим один из возможных вариантов расширение корневой файловой системы Linux «по старинке», используя parted, fdisk и reboot.
- Заходим в VMWare Client и увеличиваем размер жесткого диска.
- Запускаем повторное сканирование шины SCSI.
for scsi_device in /sys/class/scsi_device/*; do echo 1 > $scsi_device/device/rescan; done
Как видно из синтаксиса ниже общий объем диска увеличился с 10.7GB до 15.0GiB. При этом размеры разделов остались без изменений.
[root@ ~]# parted -ms /dev/sda 'u GiB p' BYT; /dev/sda:15.0GiB:scsi:512:512:msdos:VMware Virtual disk; 1:0.00GiB:0.20GiB:0.20GiB:ext3::boot; 2:0.20GiB:9.00GiB:8.80GiB:ext4::; 3:9.00GiB:10.0GiB:1.00GiB:linux-swap(v1)::;
Мне необходимо увеличить раздел с порядковым номером «2».
- Для начала отключаем swap:
swapoff -a
- Заходим в parted и удаляем 2 и 3 разделы:
GNU Parted 2.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) rm 3 (parted) rm 2 Error: Partition /dev/sda2 is being used. You must unmount it before you modify it with Parted.
Parted не дает возможность вносить изменения в смонтированный раздел, потому переходим в FDISK. Порядок команд следующий:
u переключается на секторах р печатаем таблица разделов и запоминаем стартовый сектор 2 раздела d удаляем раздел №2 n создать новый раздел: p создать основной раздел 2 создания разделов №2 2048 начало в секторе 411648 (выставляем согласно исходному значению) +12G раздел должен включать 12GiB t изменение типа раздела 2 выберите раздел №2 80 Linux раздел Аналогично, на свободном месте в конце раздела делаем swap, с типом раздела "82" р снова печатаем таблицу разделов Если все верно w записи таблицы разделов на диск и выход
[root@ ~]# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): u Changing display/entry units to sectors Command (m for help): d Selected partition 2 Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First sector (63-54525951, default 63): 411648 Last sector, +sectors or +size{K,M,G} (2048-54525951, default 54525951): +12G Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 80 Changed system type of partition 2 to 80 (Linux swap / Solaris) К сожалению исходного листинга данной машины не осталось, но вывод должен быть примерно такой, swap на данном этапе отсуствует: Command (m for help): p Disk /dev/sda: 16.1 GB, 16106127360 bytes 255 heads, 63 sectors/track, 1958 cylinders, total 31457280 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000bceec Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 411648 31005449 15296901 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. root@ubuntu:~# partprobe Warning: WARNING: partition(s) 1 on /dev/sda could not be modified, probably because it/they is/are in use. As a result, the old partition(s) will remain in use until after reboot. You should reboot now before making further changes.
- fdisk записал таблицу разделов, но ядро по-прежнему использует старую таблицу разделов, так что мы должны перезагрузиться.
- После перезагрузки делаем:
resize2fs /dev/sda2
- Проверяем, что все сделанное нами возымело необходимый эффект
[root@ ~]# df -H Filesystem Size Used Avail Use% Mounted on /dev/sda2 14G 1.2G 12G 10% / tmpfs 985M 0 985M 0% /dev/shm /dev/sda1 204M 100M 94M 52% /boot
Как видно размер корневого раздела был увеличен, что нам и требовалось.
- Если мы делали swap, не забываем проверить и его:
# swapon -a # swapon -s Filename Type Size Used Priority /dev/sda3 partition 2096116 0 -1