イメージを自作する(ubuntu)
こんにちは。
前回構築した環境で稼働させるイメージを作りたいと思います。
公式ドキュメントを参考にしています。
イメージの保存先:server2@/mnt/data/images
ゲストOS:Ubuntu 11.04
ホスト名:ubuntu
0.イメージ保存先の作成
server2$ mkfs -t ext4 /dev/sdc1 mke2fs 1.41.14 (22-Dec-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 19537920 inodes, 78142160 blocks 3907108 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=4294967296 2385 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 21 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. server2$ sudo mkdir /mnt/data server2$ sudo mount /dev/sdc1 /mnt/data
1.OSインストール&セットアップ
KVMでイメージを作成します。
server2$ cd /mnt/data server2$ sudo mkdir images server2$ cd images server2$ wget http://releases.ubuntu.com/natty/ubuntu-11.04-server-amd64.iso server2$ kvm-img create -f raw ubuntu.img 10G Formatting 'ubuntu.img', fmt=raw size=10737418240 server2$ sudo kvm -m 512 -cdrom ubuntu-11.04-server-amd64.iso -drive file=ubuntu.img,if=scsi,index=0 -boot d -net nic -net user -nographic -vnc :1
パーティションレイアウトは[/]のみのシングル構成にします。
server2$ sudo kvm -m 512 -drive file=ubuntu.img,if=scsi,index=0,boot=on -boot c -net nic -net user -nographic -vnc :1
OSインストール後,セットアップを行います。
ssh-server,cloud-initをインストールし、udevのルールを削除します。
ubuntu$ sudo apt-get update ubuntu$ sudo apt-get upgrade ubuntu$ sudo apt-get install openssh-server cloud-init ubuntu$ sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules ubuntu$ sudo shutdown -h -y now
server2$ cd /mnt/data/images server2$ sudo losetup -f ubuntu.img server2$ sudo losetup -a /dev/loop0: [0821]:2097154 (/mnt/data/images/ubuntu.img) sudo fdisk -cul /dev/loop0 ディスク /dev/loop0: 10.7 GB, 10737418240 バイト ヘッド 255, セクタ 63, シリンダ 1305, 合計 20971520 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00071e03 デバイス ブート 始点 終点 ブロック Id システム /dev/loop0p1 * <span class="deco" style="font-weight:bold;font-style:italic;">2048</span> 20969471 10483712 83 Linux ※開始セクタ番号を取得します server2$ sudo losetup -d /dev/loop0 イメージのオフセットを設定します。 先ほどメモした開始セクタ番号*512バイトブロックを設定します。 server2$ sudo losetup -f -o 1048576 ubuntu.img server2$ sudo losetup -a server2$ sudo dd if=/dev/loop0 of=ubuntu-server.img 20969472+0 記録始め 20969472+0 記録終わり 10736369664 バイト (11 GB) コピー終了, 103.035 s, 104 MB/s server2$ mkdir /mnt/data/images/ubuntu-server server2$ sudo mount -o loop /mnt/data/images/ubuntu-server.img /mnt/data/images/ubuntu-server server2$ sudo vi ubuntu-server/etc/fstab UUID=4f688ab3-6c4a-476f-9b1e-550b3e910936 / ext4 errors=remount-ro 0 1 ↓ UUID=uec-rootfs / ext4 defaults 0 0 server2$ cd /mnt/data/images/ubunt-server/boot server2$ sudo cp vmlinuz-2.6.38-8-server initrd.img-2.6.38-8-server /mnt/data/images server2$ cd /mnt/data/images server2$ sudo umount ubuntu-server server2$ sudo tune2fs -L uec-rootfs ubuntu-server.img
※イメージ登録の前に
今回イメージを作成する為に利用した[server2]にはeuca2oolsがインストールされていません。
uec-publish-image等を利用できないので、準備します。
server2$ sudo apt-get install euca2ools
--インストール後,以前server1で作成しておいたnovacreds.zipを取得して、設定
イメージの登録
作成したイメージを登録します。
※10/30今回はここまで
イメージ登録中にImageService(Glance)を稼働させていたserver1のディスクがパンクしてしまい失敗。
ImageService(Glance)稼働サーバを変更してからリトライしたいと思います。
server2$ sudo -i server2# uec-publish-image -t image --kernel-file vmlinuz-2.6.38-8-server --ramdisk-file initrd.img-2.6.38-8-server amd64 ubuntu-server.img bucket server2# euca-describe-images ※登録完了 IMAGE ami-00000006 bucket/ubuntu-server.img.manifest.xml untarring private x86_64 machine aki-00000004 ari-00000005 instance-store IMAGE ari-00000005 bucket/initrd.img-2.6.38-8-server.manifest.xml available private x86_64 ramdisk instance-store IMAGE aki-00000004 bucket/vmlinuz-2.6.38-8-server.manifest.xml available private x86_64 kernel instance-store IMAGE ami-00000003 demo/tty (ami-tty) available public x86_64 machine aki-00000001 ari-00000002 instance-store IMAGE ari-00000002 nova/tty-ramdisk (ari-tty) available public x86_64 ramdisk instance-store IMAGE aki-00000001 nova/tty-kernel (aki-tty) available public x86_64 kernel instance-store # euca-run-instances ami-6 ※起動に失敗 ApiError: Image must be available
※参考:原因調査
ImageServiceが稼動しているサーバ(server1)にログイン
server1$ sudo -i server1# glance index ※登録したはずのイメージはGlanceには登録されていない。 ID Name Disk Format Container Format Size ---------------- ------------------------------ -------------------- -------------------- -------------- 3 ami-tty ami ami 25165824 2 ari-tty ari ari 5882349 1 aki-tty aki aki 4404752 ※なんとfilesystem full # df -m Filesystem 1M-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/vg00--ubuntu-root 13139 12416 56 100% / none 3967 1 3967 1% /dev none 3975 0 3975 0% /dev/shm none 3975 1 3975 1% /var/run none 3975 0 3975 0% /var/lock