Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Linux KVM       +Control Groups       +    OMAKE         2013/01/31 #ssmjp @togakushi
もくじ●   KVM ってなぁに?●   cgroup ってなぁに?●   本日のデモ●   おまけ                     2
Linux KVM●   Linux Kernel-based Virtual Machine    –   Linux の仮想化基盤    –   エミュレーションのほとんどは QEMU で提供    –   1 ゲスト =1 プロセスで動作...
Linux KVM●   Linux Kernel-based Virtual Machine    –   Linux の仮想化基盤    –   エミュレーションのほとんどは QEMU で提供    –   1 ゲスト =1 プロセスで動作...
Control Groups(cgroup)●   Linux のリソースを管理 ( 制限とレポート ) す    る仕組み    –   メモリや CPU などのリソース毎の Subsystem に        分けて管理    –   管...
Subsystems( 一部 )●   Blkio    –   物理ドライブ やブロックデバイスへの入出力を制限●   Cpuset    –   CPU のリソースを制限●   Freezer    –   タスクの一時停止/再開●   M...
libcgroup●   cgroup に対するアクセス手段 ( タスク作成・設定読み取り・設    定書き込み ) を提供するライブラリ群    –   CentOS        ●   libcgroup: Tools and libra...
提供されるコマンド群 ( 抜粋 )●   lssubsys    –   利用できるサブシステムの表示●   lscgroup    –   タスクグループ名の一覧●   cgget    –   パラメータの取得●   cgset    – ...
提供されるコマンド群 ( 抜粋 )●   cgcreate    –   タスクグループの作成●   cgdelete    –   タスクグループの削除●   cgexec    –   タスクグループに割り当ててコマンド実行●   cgcl...
cgconfig.conf●   libcgroup の設定ファイル    –   サブシステムのマウントポイント    –   作成するタスクグループ    –   タスクに設定するパラメータ                         ...
cgrules.conf●   実行されたコマンド ( プロセス ) を自動でタス    クグループに割り当てるルールを記述    –   ユーザやグループ    –   プロセス名                               ...
libvirt+libcgroup●   KVM→1VM=1 プロセス●   cgroup→ プロセスで管理      2つとも入っていたら    自動的にタスクグループ作る!                             12
libvirt のタスクグループ●   /sys/fs/cgroup/<subsystem>/libvirt/qemu    –   ディストリビューションによってマウントポイン        トは違う●   ...( 省略 ).../libv...
本日のデモ        14
blkio で VM の書き込み制限●   転送速度の制限    –   blkio.throttle.write_bps_device    –   blkio.throttle.read_bps_device●   IOPS の制限    ...
cgconfig.conf に書く場合●   VM01 が sda を使用している●   読み込み / 書き込みを 10MB/s に制限    group libvirt/qemu/VM01 {      blkio {        blki...
freezer で VM の一時停止●   freezer.state    –   THAWED :動いてる    –   FREEZING :止まっている    –   Virsh からは動いている様にみえる●   料金未払いのユーザの V...
LVM スナップショット●   止めてスナップショット作ってすぐ動かす    # cgset -r freezer.state=FROZEN libvirt/qemu/${VM_NAME}    # lvcreate -s -L 1G -n $...
OMAKE        19
ディスクイメージのマウント●   パーティション情報が含まれている raw    –   loopback→kpartx    –   qemu-nbd●   raw 以外のディスクイメージ (qcow2 とか )    –   guestfi...
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 /...
LVM 領域のマウント●   デバイスにマッピング (nbd / loop)    –   マッピング完了時点で VG が見えるようになる    –   見えなければ vgscan    –   VG の名前がカブてったら vgchange で...
参考資料●   リソース管理ガイド    –   https://access.redhat.com/knowledge/docs/ja-JP/R        ed_Hat_Enterprise_Linux/6/html/Resource_M...
Upcoming SlideShare
Loading in …5
×

KVM+cgroup

4,357 views

Published on

KVM+cgroup

  1. 1. Linux KVM +Control Groups + OMAKE 2013/01/31 #ssmjp @togakushi
  2. 2. もくじ● KVM ってなぁに?● cgroup ってなぁに?● 本日のデモ● おまけ 2
  3. 3. Linux KVM● Linux Kernel-based Virtual Machine – Linux の仮想化基盤 – エミュレーションのほとんどは QEMU で提供 – 1 ゲスト =1 プロセスで動作 3
  4. 4. Linux KVM● Linux Kernel-based Virtual Machine – Linux の仮想化基盤 – エミュレーションのほとんどは QEMU で提供 – 1 ゲスト =1 プロセスで動作 4
  5. 5. Control Groups(cgroup)● Linux のリソースを管理 ( 制限とレポート ) す る仕組み – メモリや CPU などのリソース毎の Subsystem に 分けて管理 – 管理する単位 ( グループ ) でプロセスを登録 ( タス ク) – /proc と同様に仮想ファイルシステムを使用 ● echo/cat/mkdir/rmdir で設定可能 5
  6. 6. Subsystems( 一部 )● Blkio – 物理ドライブ やブロックデバイスへの入出力を制限● Cpuset – CPU のリソースを制限● Freezer – タスクの一時停止/再開● Memory – メモリのリソースを制限● net_cls – パケットにタグを付ける ( トラフィックコントローラ ( tc) がパケットを 識別できるようにする ) 6
  7. 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. 8. 提供されるコマンド群 ( 抜粋 )● lssubsys – 利用できるサブシステムの表示● lscgroup – タスクグループ名の一覧● cgget – パラメータの取得● cgset – パラメータの設定 8
  9. 9. 提供されるコマンド群 ( 抜粋 )● cgcreate – タスクグループの作成● cgdelete – タスクグループの削除● cgexec – タスクグループに割り当ててコマンド実行● cgclassify – すでに実行しているコマンドをタスクグループに追加 9
  10. 10. cgconfig.conf● libcgroup の設定ファイル – サブシステムのマウントポイント – 作成するタスクグループ – タスクに設定するパラメータ 10
  11. 11. cgrules.conf● 実行されたコマンド ( プロセス ) を自動でタス クグループに割り当てるルールを記述 – ユーザやグループ – プロセス名 11
  12. 12. libvirt+libcgroup● KVM→1VM=1 プロセス● cgroup→ プロセスで管理 2つとも入っていたら 自動的にタスクグループ作る! 12
  13. 13. libvirt のタスクグループ● /sys/fs/cgroup/<subsystem>/libvirt/qemu – ディストリビューションによってマウントポイン トは違う● ...( 省略 ).../libvirt/qemu/<VM 名 > – VM を起動させたら自動的に VM 名のサブグルー プが作成され、 VM のプロセスが登録される – 固定された名前が割り当てられるので、予め cgconfig.conf で設定しておける 13
  14. 14. 本日のデモ 14
  15. 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. 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. 17. freezer で VM の一時停止● freezer.state – THAWED :動いてる – FREEZING :止まっている – Virsh からは動いている様にみえる● 料金未払いのユーザの VM を止めるとか● LVM スナップショットを作ってみるとか 17
  18. 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
  19. 19. OMAKE 19
  20. 20. ディスクイメージのマウント● パーティション情報が含まれている raw – loopback→kpartx – qemu-nbd● raw 以外のディスクイメージ (qcow2 とか ) – guestfish – qemu-nbd 20
  21. 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/nbd0brw-rw---- 1 root disk 43, 1 Jan 31 08:17 /dev/nbd0p1brw-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. 22. LVM 領域のマウント● デバイスにマッピング (nbd / loop) – マッピング完了時点で VG が見えるようになる – 見えなければ vgscan – VG の名前がカブてったら vgchange で変える● Lvscan で LV が確認できる – Inactive になっていたら vgchange で active に – マウントできるようになる 22
  23. 23. 参考資料● リソース管理ガイド – https://access.redhat.com/knowledge/docs/ja-JP/R ed_Hat_Enterprise_Linux/6/html/Resource_Manag ement_Guide/ 23

×