web-dev-qa-db-ja.com

ディスクイメージのサイズを変更する

Ubuntuディスクイメージのサイズを大きくしようとすると問題が発生します。少なくとも次の手順を実行する必要があることを知っています。

$ # 1. resize the image using qemu-img
$ qemu-img resize linux-x86.img +12G
$ # this step succeeded
$ # 2. mount, chroot
$ Sudo mount -o loop,offset=32256 linux-x86.img /mnt
$ Sudo mount --bind /proc /mnt/proc
$ Sudo mount --bind /dev /mnt/dev
$ cd /mnt
$ Sudo chroot .

これで、chroot内で次の手順が実行されます。

$ df -h
df: cannot read table of mounted file systems: No such file or directory
$ # fix this error 
$ cp /proc/mounts /etc/mtab
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/loop0            496M  458M   13M  98% /
udev                  2.0G  4.0K  2.0G   1% /dev

画像のサイズをさらに12 GBに増やしたにもかかわらず、使用可能なスペースはわずか13Mであることがわかります。

Fdiskを起動しようとしましたが、パーティションテーブルが空でした:

$ fdisk /dev/loop0
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0xa95b4787.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.


The number of cylinders for this disk is set to 1631.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/loop0: 13.4 GB, 13421609472 bytes
255 heads, 63 sectors/track, 1631 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa95b4787

      Device Boot      Start         End      Blocks   Id  System

Command (m for help): 

情報用の/ etc/mtabは次のとおりです。

/dev/loop0 / ext2 rw,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2010936k,nr_inodes=502734,mode=755 0 0

また、「uname -a」の出力は次のとおりです。

Linux ubuntu 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz GenuineIntel GNU/Linux

誰でも助けてくれますか?

1

さて、サイズ変更のディスク部分を取得しました。あなたがしなかったのは、ファイルシステムのサイズ変更とは別のステップである、パーティションのサイズ変更でした。 fdiskがパーティションを見つけられないのは、「ディスク」全体にアクセスできないためです。基本的に、fdisk/dev/sd?1、またはfdisk/dev/sd ?、または、場合によってはfdisk linux-x86.imgが必要でした。同様にchrootする前にこれを行う必要があります。

パーティションとファイルシステムのサイズ変更を1つのステップにまとめるのに役立つ何か...

$ Sudo udisksctl loop-setup -f linux-x86.img
Mapped file linux-x86.img as /dev/loop0.
$ Sudo gparted /dev/loop0

パーティションの開始バイトを見つけてそのオフセットをマウントする代わりに、/ dev/loop0p1などをマウントすることもできます。

2
user7455651