2012年10月20日土曜日

kvm

イメージ作成(20Gの例)
qemu-img create -f qcow2 vm00.img 20G
qemu-img create -f raw vm00.img 20G
dd if=/dev/zero of=template.img bs=1G count=20
dd if=/dev/zero of=template.img bs=1G count=0 seek=20 (スパース)
ddが実容量必要だけどパフォーマンスがいい
dd>raw>qcow2

起動する
シェルスクリプトにした
(-bootをc dでHDDとCDを切り替え)
#!/bin/sh
qemu-system-x86_64 -hda vm00.img -m 1024 \
-monitor telnet::4444,server,nowait -vnc :0 -daemonize -k ja \
-net nic,model=e1000,macaddr=12:34:56:ab:cd:ef -net tap,ifname=tap0 \
-cdrom /mnt/oscar/iso/slackware64-13.37-install-dvd.iso -boot c -localtime

xmlを作る qemuの引数をこんな感じでテキストに(実際には一行で)
/usr/local/bin/qemu-system-x86_64
-enable-kvm
-m 1024
-hda /root/vm00.img
-cdrom /mnt/oscar/iso/slackware64-13.37-install-dvd.iso
-vnc :0
-net nic,model=e1000,macaddr=12:34:56:ab:cd:ef
-net tap,ifname=tap0
-boot c
-k ja

出力
virsh domxml-from-native qemu-argv vm00.arg > vm00.xml

nameを書き換え 登録
virsh define xmlファイル

SlackBuilds.orgとsbopkg

slackwareでインストールをある程度自動化できる。
配布サイトSlackBuilds.orgのデータをsbopkgで使うイメージ。
FreeBSDのportsっぽい。
http://www.sbopkg.org/downloads.phpからパッケージをダウンロード、インストール。

同期 sbopkg -r
検索 sbopkg -s パッケージ
追加 sbopkg -i インストールするパッケージ

slackwareでLVMをRAID1化

HDDを追加
元のHDDと同じサイズでパーティションを作る。
IDはfdにして、bootパーティションはaでbootフラグを。
追加HDDをRAID化 (liloの場合はmetadataを旧バージョンにしないといけない)
mdadm --create /dev/md0 --auto=yes --level=raid1 --raid-devices=2 missing /dev/sdb1 \ --metadata=0.90
mdadm --create /dev/md1 --auto=yes --level=raid1 --raid-devices=2 missing /dev/sdb2 \ --metadata=0.90
mount /dev/VG01/root /mnt
echo 'DEVICE /dev/sd[a-z]*' > /mnt/etc/mdadm.conf
mdadm --detail --scan >> /mnt/etc/mdadm.conf
echo 'MAILADDR root' >> /mnt/etc/mdadm.conf

bootは普通のディスクなのでコピー
mkfs.ext4 /dev/md0
mount /dev/md0 /mnt/
cp -av /boot/* /mnt/

LVMはやり方が違う はじめにスナップショット領域を削除
lvremove /dev/VG01/snap

PV作って
pvcreate /dev/md1

既存のVGに追加
vgextend VG01 /dev/md1

内容を移動
pvmove /dev/sda2 /dev/md1

元のPVをVGから削除
vgreduce VG01 /dev/sda2

RAIDが正常動作していないとliloを更新できなかったのでCDでブートしてRAID1化
CDでブート
vgchange -ay VG01
mdadm --add /dev/md0 /dev/sda1
mdadm --add /dev/md1 /dev/sda2

進行具合は
watch cat /proc/mdstats
で見れる。

RAIDにできたらマウントしてchroot
mount /dev/VG01/root /mnt
mount /dev/md0 /mnt/boot
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
chroot /mnt
initrdを作り直す
LVM化したときのものをmd1にして-Rを付ける
mkinitrd -c -m ext4 -f ext4 -h /dev/mapper/VG01-swap -r /dev/mapper/VG01-root -C /dev/md1 -R -L

liloを修正
boot = /dev/md0
raid-extra-boot = /dev/sda,/dev/sdb

liloを更新
lilo

fstabを修正
/dev/sda1 -> /dev/md0











mdadmのRAIDを解除

確認
cat /proc/mdstat

停止
mdadm --misc --stop /dev/md0
mdadm --misc --stop /dev/md1

メタデータ削除
mdadm --misc --zero-superblock /dev/sdb1
mdadm --misc --zero-superblock /dev/sdb2

無理やり開始させる例
mdadm --assemble /dev/md1 /dev/sd[a-b]2
mdadm --assemble /dev/md2 /dev/sd[c-d]1

eth*を固定する

/etc/udev/rules.d/70-persistent-net.rulesで設定。

パッケージを作る

普通にビルド
make DESTDIR=/仮インストール先ディレクトリ install
makepkg ../パッケージ.tgz
質問はyでいいようだ。

カーネルのconfig

Device Drivers ---> Character devices --->
Enhanced Real Time Clock Support (legacy PC RTC driver)
<*> Generic /dev/rtc emulation
[ ] Extended RTC operation

File systems --->
< > GFS2 file system support

人物

ヤズダーニ
イランのレスリング選手
足痛めてるのにもう一回出てきた魂の人

小林千鶴
Jsportsのフィギュアで実況をしている。
とても柔らかい口調の女性。

藤森美恵子
Jsportsのフィギュアの解説。

slackwareをlvmでインストール

250GのHDDでやった
CDでブート

fdiskは
/dev/sda1 83 Linux 1G
/dev/sda2 8e Linux LVM 残り

PVを作る
pvcreate /dev/sda2

VGを作る
vgcreate -s 32m VG01 /dev/sda2
32mってのはPEのサイズ。
1つのLVが持てるPEは最大65536個なので32mで最大2Tになる。 LV(パーティションに近いか)を作る

LVを作る
lvcreate -L 225G -n root VG01
lvcreate -L 2G -n swap VG01
lvcreate -s -L 4G -n snap /dev/VG01/root
このままだとインストーラがswapを見つけられないので
mkswap /dev/mapper/VG01-swap
setupでいつもどおりにインストール。
インストールが終わっても再起動せずに
chroot /mnt
mkinitrd -c -m ext4 -f ext4 -h /dev/mapper/VG01-swap -r /dev/mapper/VG01-root -C /dev/sda2 -L -R
(-hはハイバネーションの設定)

/boot/lilo.confも修正
append = "hogehoge resume=/dev/mapper/VG01-swap"
timeout = 100
initrd = /boot/initrd.gz