2012/07/27

ext4パーティションとLinuxカーネルの既知のバグ(VirtualBox)

新しいハードディスクにVirtualboxをインストールして古いハードディスクにあった仮想ディスクを移設すると、起動時に次のメッセージが表示されるようになりました。

メッセージの意味はよくわかりませんが、「違うファイルシステム」なら問題を避けることができそうです。以前は、VirtualBoxを「ext4」にインストールして、仮想ディスクを「ntfs」に置いていました。奇妙な使い方でしたが、今回の問題を(偶然)避けていたようです。

補)「put the disk image and the snapshot folder onto a different file system」としていました。

今回は、両方を「ext4」に導入しています。使い方を正したつもりでしたが「警告」を受けたのでファイルシステムを変更することにしました。「新しいから」という理由だけで「ext4」を使っていましたので、変更に抵抗はありません。

補)「located on an ext4 partition」→「located on an ext3 partition」としました。

ファイルシステムを「ext3」に変更すると、警告は出なくなりました。

入れ替えたあとで気が付いたんですが、「VirtualBoxの設定を変更する」という選択肢もあったようです。英語が苦手ということもあるんですが、「既知のバグ」という言葉に過剰に反応したようです。

補) 「enable the host I/O cache permanently in the VM settings」としませんでした。

振り返ると、警告を避けるために3つの選択肢があったのですが、最も手間のかかる方法を選択しました。

最終的な判断の根拠は乏しいので、この選択が正しいのか、間違っているのか、今のところわかりません。


「ext3」と「ext4」の違い:

エクステントは、ext2およびext3で使われてきた伝統的なブロックマッピング方式を置き換える概念である。エクステントは連続した物理ブロックの集合であり、大きなファイルに対するパフォーマンスを改善し、フラグメンテーションの発生を減らすことができる。ext4におけるエクステントは、4KBのブロックサイズで最大128MBまでの連続した領域をマッピングすることができる。inodeごとに4つのエクステントを格納することができる。ひとつのファイルに5つ以上のエクステントがあるとき、残りのエクステントはHtreeで構造化される。

「エクステント」という概念の有無が大きな違いのようです。

仮想ファイルは大きなファイルなのでパフォーマンスやフラグメンテーションの発生で多少不利な面がありそうですが、これは程度問題なので、致命的な不具合の発生を事前に避けられたことをよしとしたいと思います。

0 件のコメント:

コメントを投稿