少し前に、ubuntuのhomeディレクトリが載るファイルシステムを、snapshot使いたくてbtrfsに変換して使っているのだが、ここにあるwindowsの仮想マシンを久々にKVM起動して使ったら、どうにも遅い。exploreでちょっとファイルを操作する度にグルグルする。仮想マシンに限った話ではなく、ubuntu全体が遅い。調べてみると、hddに対してずっとwriteがかかるような状態で、hddのアクセスに時間がかかっていた。
原因は、btrfsのCopy-On-Write(COW)のせいだったのだが、「chattr +C」でCOWを切ったイメージファイルにコピーしたら、改善はしたものの、どうもまだ遅い感じがした。
で、同じHDDの上にext4のファイルシステムもあるのだが、そこにイメージをコピーしてみたら十分早くなった。
以下、スマホのストップウォッチで測ってるのでそう厳密ではないが、windows7のスタートメニュー内にあるシャットダウンボタンを押してから、仮想マシンが落ちるまでの時間を測ってみた。
それぞれのイメージは、元のCOWが効いたファイルからコピーしたもので、何度か起動/shutdownでwindowsが書き換える部分を除けば同一である。
イメージファイルの置き場 | シャットダウンにかかる時間(分:秒) |
---|---|
btrfs noCOW | 3:37 |
ext4 | 0:18 |
btrfs withCOW | 8:15 |
再度btrfs noCOW | 2:10 |
再度ext4 | 0:18 |
とうわけで、KVMで仮想マシン置くのに、btrfsはあまり良くないという話でした。