読者です 読者をやめる 読者になる 読者になる

kopug memo

名古屋で働くとあるWebエンジニアの覚書。

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