Назад | Перейти на главную страницу

Изменение размера раздела на виртуальном жестком диске (файл с таблицей разделов msdos)

У меня есть локальный файл на моем диске, который содержит таблицу разделов msdos и несколько разделов Linux. Я использую это как виртуальный необработанный диск с qemu.

klm@lato:~/images/disk$ parted arch-linux2 p
WARNING: You are not superuser.  Watch out for permissions.
Model:  (file)
Disk /home/klm/images/disk/arch-linux2: 4339MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
1      32,3kB  107MB   107MB   primary  ext2            boot
2      107MB   378MB   271MB   primary  linux-swap(v1)
3      378MB   4100MB  3722MB  primary  ext4
4      4100MB  4331MB  231MB   primary  ext4

Я хочу изменить размер раздела в этом файле, и GParted обычно очень прост в использовании для этого. Однако когда я бегу

$ gparted arch-linux2

Большинство моих разделов выдают предупреждение:

e2label: No such file or directory while trying to open 
/home/klm/images/disk/arch-linux2. 
Couldn't find valid filesystem superblock.

Почему gparted не может редактировать мои разделы внутри файла?

Ладно, на помощь приходят kpartx и символические ссылки!

Использовать KPartX для создания виртуальных блочных устройств для каждого раздела:

klm@lato:~/images/disk$ sudo kpartx -a arch-linux2
klm@lato:~/images/disk$ ls /dev/mapper/
control  cryptswap1  loop0p1  loop0p2  loop0p3  loop0p4

Теперь вы можете указать свой gparted на отдельные разделы:

klm@lato:~/images/disk$ sudo gparted /dev/mapper/loop0p1

Но это не сильно поможет, поскольку gparted нужна вся таблица разделов, чтобы изменить размер раздела на ней. Символические ссылки решают эту проблему:

klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p1 arch-linux2p1
klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p2 arch-linux2p2
klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p3 arch-linux2p3
klm@lato:~/images/disk$ ln -s /dev/mapper/loop0p4 arch-linux2p4

Это структура, которую хочет gparted:

klm@lato:~/images/disk$ ls -l
total 6275112
-rw-r--r-- 1 klm klm  4339007488 2011-07-22 15:47 arch-linux2
lrwxrwxrwx 1 klm klm          19 2011-08-04 15:23 arch-linux2p1 -> /dev/mapper/loop0p1
lrwxrwxrwx 1 klm klm          19 2011-08-04 15:23 arch-linux2p2 -> /dev/mapper/loop0p2
lrwxrwxrwx 1 klm klm          19 2011-08-04 15:23 arch-linux2p3 -> /dev/mapper/loop0p3
lrwxrwxrwx 1 klm klm          19 2011-08-04 15:23 arch-linux2p4 -> /dev/mapper/loop0p4

Теперь я запускаю gparted нормально и без предупреждений и могу изменять размер!

klm@lato:~/images/disk$ sudo gparted arch-linux2