The net is vast
プログラミングや、コンピュータなどの備忘録です。 主にRuby, Java, Linux, 等を扱います。アルゴリズムも扱いたいな。
6:42

VMのシンプロビジョニングの謎 sparse file

Category: By jx
KVMなどを触っているとシンプロビジョニングを行えるqcow2等のフォーマットのファイルによく出くわします。lsをしてみると、40Gのファイルが出来ていたりするのですが、実際には4Gくらいしか使っていません。今までどういう仕組なのかわからなかったのですが、これはsparse fileという名前で実際に書きこまれていない領域は確保しないという仕組みのようです。作り方は簡単で、Rubyで書くと次のようになります。
open('a.txt', 'w') do |f|
  f.seek 10000000
  f.puts 'a'
end
つまり、実際に書き込まずseekすれば良いということですね。ちなみにこういうファイルをコピーするときにはちゃんと気をつけてコピーしてあげなければいけません。cpコマンドは良きに計らってくれるようですが、rsyncについて自分で指定してあげないといけないのだとか。
rsync --sparse
tarでもまとめるときにも余分な部分を削除して通常ファイルを作ってくれます。
tar --sparse
これでVMのシンプロビジョニングも怖く有りません。
 

0 comments so far.

Something to say?