VMWare & Linux: Увеличиваем размер файловой системы

vosstanovlenie-dannih
Технологии виртуализации 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
Вы можете оставить комментарий ниже.