Contenu connexe Similaire à KVM+cgroup (20) Plus de (^-^) togakushi (15) KVM+cgroup1. Linux KVM
+
Control Groups
+
OMAKE
2013/01/31 #ssmjp @togakushi
2. もくじ
● KVM ってなぁに?
● cgroup ってなぁに?
● 本日のデモ
● おまけ
2
3. Linux KVM
● Linux Kernel-based Virtual Machine
– Linux の仮想化基盤
– エミュレーションのほとんどは QEMU で提供
– 1 ゲスト =1 プロセスで動作
3
4. Linux KVM
● Linux Kernel-based Virtual Machine
– Linux の仮想化基盤
– エミュレーションのほとんどは QEMU で提供
– 1 ゲスト =1 プロセスで動作
4
5. Control Groups(cgroup)
● Linux のリソースを管理 ( 制限とレポート ) す
る仕組み
– メモリや CPU などのリソース毎の Subsystem に
分けて管理
– 管理する単位 ( グループ ) でプロセスを登録 ( タス
ク)
– /proc と同様に仮想ファイルシステムを使用
● echo/cat/mkdir/rmdir で設定可能
5
6. Subsystems( 一部 )
● Blkio
– 物理ドライブ やブロックデバイスへの入出力を制限
● Cpuset
– CPU のリソースを制限
● Freezer
– タスクの一時停止/再開
● Memory
– メモリのリソースを制限
● net_cls
– パケットにタグを付ける ( トラフィックコントローラ ( tc) がパケットを
識別できるようにする )
6
7. libcgroup
● cgroup に対するアクセス手段 ( タスク作成・設定読み取り・設
定書き込み ) を提供するライブラリ群
– CentOS
● libcgroup: Tools and libraries to control and monitor control groups
– ubuntu
● cgroup-lite - Light-weight package to set up cgroups at system boot
● cgroup-bin - Tools to control and monitor control groups
● libcgroup1 - Library to control and monitor control groups
7
8. 提供されるコマンド群 ( 抜粋 )
● lssubsys
– 利用できるサブシステムの表示
● lscgroup
– タスクグループ名の一覧
● cgget
– パラメータの取得
● cgset
– パラメータの設定
8
9. 提供されるコマンド群 ( 抜粋 )
● cgcreate
– タスクグループの作成
● cgdelete
– タスクグループの削除
● cgexec
– タスクグループに割り当ててコマンド実行
● cgclassify
– すでに実行しているコマンドをタスクグループに追加
9
10. cgconfig.conf
● libcgroup の設定ファイル
– サブシステムのマウントポイント
– 作成するタスクグループ
– タスクに設定するパラメータ
10
11. cgrules.conf
● 実行されたコマンド ( プロセス ) を自動でタス
クグループに割り当てるルールを記述
– ユーザやグループ
– プロセス名
11
13. libvirt のタスクグループ
● /sys/fs/cgroup/<subsystem>/libvirt/qemu
– ディストリビューションによってマウントポイン
トは違う
● ...( 省略 ).../libvirt/qemu/<VM 名 >
– VM を起動させたら自動的に VM 名のサブグルー
プが作成され、 VM のプロセスが登録される
– 固定された名前が割り当てられるので、予め
cgconfig.conf で設定しておける
13
15. blkio で VM の書き込み制限
● 転送速度の制限
– blkio.throttle.write_bps_device
– blkio.throttle.read_bps_device
● IOPS の制限
– blkio.throttle.write_iops_device
– blkio.throttle.read_iops_device
15
16. cgconfig.conf に書く場合
● VM01 が sda を使用している
● 読み込み / 書き込みを 10MB/s に制限
group libvirt/qemu/VM01 {
blkio {
blkio.throttle.read_bps_device = "8:0 10000000";
blkio.throttle.write_bps_device = "8:0 10000000";
}
}
16
17. freezer で VM の一時停止
● freezer.state
– THAWED :動いてる
– FREEZING :止まっている
– Virsh からは動いている様にみえる
● 料金未払いのユーザの VM を止めるとか
● LVM スナップショットを作ってみるとか
17
18. LVM スナップショット
● 止めてスナップショット作ってすぐ動かす
# cgset -r freezer.state=FROZEN libvirt/qemu/${VM_NAME}
# lvcreate -s -L 1G -n ${SNAP_IMG} ${TARGET_IMG}
# cgset -r freezer.state=THAWED libvirt/qemu/${VM_NAME}
18
20. ディスクイメージのマウント
● パーティション情報が含まれている raw
– loopback→kpartx
– qemu-nbd
● raw 以外のディスクイメージ (qcow2 とか )
– guestfish
– qemu-nbd
20
21. qemu-nbd
● nbd にマッピング
% sudo qemu-nbd -c /dev/nbd0 <Disk-img>
% ls -l /dev/nbd0*
brw-rw---- 1 root disk 43, 0 Jan 31 08:17 /dev/nbd0
brw-rw---- 1 root disk 43, 1 Jan 31 08:17 /dev/nbd0p1
brw-rw---- 1 root disk 43, 2 Jan 31 08:17 /dev/nbd0p2
● そのままマウント可能
% sudo mount /dev/nbd0p1 /mnt
…
% sudo qemu-nbd -d /dev/nbd0
21
22. LVM 領域のマウント
● デバイスにマッピング (nbd / loop)
– マッピング完了時点で VG が見えるようになる
– 見えなければ vgscan
– VG の名前がカブてったら vgchange で変える
● Lvscan で LV が確認できる
– Inactive になっていたら vgchange で active に
– マウントできるようになる
22
23. 参考資料
● リソース管理ガイド
– https://access.redhat.com/knowledge/docs/ja-JP/R
ed_Hat_Enterprise_Linux/6/html/Resource_Manag
ement_Guide/
23