Xenのディスクイメージファイルサイズを増やす
開発環境はxenで構築しているんだけど(kvmに移行を考え中)、そこのディスク容量が少ないから何とかしてーと言われたので何とかした時のメモ
前提条件
※ イメージファイルはSparseじゃない
※ ゲストOSで LVMを利用している
DomainU(ゲストOS)を停止
# xm shutdown <name>
イメージファイルをバックアップ
# cd /var/lib/xen/images/ # mv <name>.img <name>.img.bak
空の20Gのイメージを作成し、結合(ここが重いけど我慢)
# dd if=/dev/zero bs=1M count=0 seek=20480 of=./20G.img # cat <name>.img.bak 20G.img > <name>.img # chmod 755 <name>.img
ループバックデバイスを設定
# losetup -f /dev/loop0 # losetup /dev/loop0 ./<name>.img # losetup -a /dev/loop0: [fd00]:61014051 (<name>.img)
マウントしたイメージファイルのoffsetを確認
# fdisk -lu /dev/loop0 Disk /dev/loop0: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors Units = セクタ数 of 1 * 512 = 512 bytes デバイス Boot Start End Blocks Id System /dev/loop0p1 * 63 208844 104391 83 Linux /dev/loop0p2 208845 20964824 10377990 8e Linux LVM
fdiskで対象のスライスを削除し、シリンダサイズを再設定
# fdisk /dev/loop0 このディスクのシリンダ数は 1305 に設定されています。 間違いではないのですが、1024 を超えているため、以下の場合 に問題を生じうる事を確認しましょう: 1) ブート時に実行するソフトウェア (例. バージョンが古い LILO) 2) 別の OS のブートやパーティション作成ソフト (例. DOS FDISK, OS/2 FDISK) コマンド (m でヘルプ): d 領域番号 (1-4): 2 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 2 最初 シリンダ (14-6527, default 14): Using default value 14 終点 シリンダ または +サイズ または +サイズM または +サイズK (14-1305, default 1305): Using default value 1305 コマンド (m でヘルプ): t 領域番号 (1-4): 2 16進数コード (L コマンドでコードリスト表示): 8e 領域のシステムタイプを 2 から 8e (Linux LVM) に変更しました コマンド (m でヘルプ): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 警告: 領域テーブルの再読込みがエラー 22 で失敗しました: 無効な引数です。 カーネルはまだ古いテーブルを使っています。 新しいテーブルは次回リブート時に使えるようになるでしょう。 ディスクを同期させます。
ループバックデバイスを削除
# losetup -d /dev/loop0
DomainU(ゲストOS)を起動
# xm create <name>
以下ゲストOS内で
# pvscan # pvresize /dev/xvda2 # pvscan # lvscan # lvresize -L +20G /dev/VolGroup00/LogVol00 # resize2fs /dev/VolGroup00/LogVol00 # df -h