Storage Repositoryの構築

XenServerではルートファイルシステム以外は「Storage Repository」という論理ディスクにデータを格納している。これは仮想マシンのライブマイグレーションのための仕組みかと思うが、これが引っ越した先では上手く動いていない。次のサポートページを手がかりに再構築を試みようとした
Manually setting the default Storage Repository (SR)
Creating a new Storage Repository (SR) and making it the default
しかし、この資料にも書いてあるようにSRはパーティション単位に割り当てられる。しかし、引越し先にはもうパーティションの余裕はない。なんとかならないか。通常のファイルを論理ディスクとしてSRを再構成することが曲りなりにできたので、方法を落書きしておく。

論理ディスクのもとになるファイルを作成する。(実験用に取りあえず4GBのファイルを作る)

 dd if=/dev/zero of=test.img bs=1M count=1 seek=4000
読み込んだブロック数は 1+0
書き込んだブロック数は 1+0
# ls -l test.img
 -rw-r--r--  1 root root 4195352576  7月 16 08:17 test.img
# mkfs -t ext3 -F test.img
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
513024 inodes, 1024256 blocks
51212 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1052770304
32 block groups
32768 blocks per group, 32768 fragments per group
16032 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables:  done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.# mount -o loop /home/Xen/SR.img /mnt
#  mount -o loop test.img /mnt
# ls /mnt
lost+found
# umount /mnt

つぎに、このtest.imgを/dev/loop9を使ってXenに認識させる。新しいUUIDが生成される。

# losetup /dev/loop9 /home/Xen/test.img

#  sm create -v /dev/loop9
WARNING: All existing data in [/dev/loop9] will be overwritten
Do you wish to continue? (y or n)  y
Create operation succeeded
6d255720-fd22-1b77-5d5a-1e5367202327

xe host-sr-setコマンドは失敗する。

# xe host-sr-set -u root sr-id=6d255720-fd22-1b77-5d5a-1e5367202327 active=true

Could not connect to agent

従って、/etc/smtabにはエントリーが追加されない。
新しいUUIDを使ってアッタチは成功する。

# sm attach -v 6d255720-fd22-1b77-5d5a-1e5367202327 none
SRM -> 6d255720-fd22-1b77-5d5a-1e5367202327 (name [NULL])
	Physical Size: 4000(MB)
	Allocated Size: 2048(MB)
	Num VDIs: 0
6d255720-fd22-1b77-5d5a-1e5367202327

# sm info
SR ID: [6d255720-fd22-1b77-5d5a-1e5367202327]
	Name:	[NULL]
	Descr:	[DESCR]
	Device:	[/SR-6d255720-fd22-1b77-5d5a-1e5367202327/images]
	Host:	[127.0.0.1]
	Type:	[0]
	Shared:	[0]
	State:	[2]
	Phys_size:	[4000 MB]
	Alloc_size:	[2048 MB]

アタッチに成功するとルートにUUIDを使った長い名前のディレクトリが作られ、その下に論理ディスクをマウントする。

# ls /
EULA  SR-6d255720-fd22-1b77-5d5a-1e5367202327   bin  boot  dev  etc  foreign  home  initrd  lib  lost+found  media  mnt  opt  proc  root  sbin  selinux  srv  sys  tmp  usr  var  windows

実験的に/etc/rc5.d/S98smtab に/dev/loop9にファイルをlosetupさせるように追加して。マニュアルで/etc/smtabに新しいUUIDのエントリを追加すれば、一応、アタッチしてブートするようにはなるが、どうもスマートな方法とは言えない。また、Clientコンソールが使えない症状も改善されていない。

参考までに、実験用のファイルなどの後片付けのスクリプトをつけておく。

# sm detach -v 6d255720-fd22-1b77-5d5a-1e5367202327
WARNING: This operation is potentially very dangerous and can cause data loss
Do you wish to continue? (y or n)  y
SRM -> 6d255720-fd22-1b77-5d5a-1e5367202327 (name [NULL])
	Physical Size: 4000(MB)
	Allocated Size: 2048(MB)
	Num VDIs: 0
6d255720-fd22-1b77-5d5a-1e5367202327

# losetup -d /dev/loop9
# rm f /home/Xen/test.img