2013/01/23

【これ重要かも】CentOS 5.9 を試してたら VHDX と EXT3 の組み合わせ問題に遭遇?

今月、Red Hat Enterprise Linux (RHEL) 5.9 がリリースされましたが、RHEL ベースの CentOS 5.9 も先週くらいにリリースされました。RHEL 5.9 には Microsoft Hyper-V Drivers がビルトインされたというニュースがありますが、RHEL は評価版の入手が面倒なので、CentOS 5.9 を Windows Server 2012 Hyper-V で試してみました。

ちゃんと入ってましたが、仮想ハードディスクの新形式 VHDX と Linux のファイルシステム EXT3 の組み合わせで問題というか、なんというか...


まずは、CentOS 5.9 にビルトインされている Microsoft Hyper-V Drivers について。

こんな感じでちゃんと入ってました。KVM デーモンも入ってますし、機能しています。

問題はここから。SCSI コントローラーに 100GB の容量可変タイプの VHDX を追加して、fdisk でパーティションを作成し、mkfs でファイルシステム(ext3)を作成したところ、しばらく仮想マシンの反応がなくなり、その後、ファイルシステムの作成が完了したらしく反応するようになると、VHDX を見てびっくり。フォーマットしたばかりなのに 25GB にも膨れ上がっていました。論理ボリューム管理(yum install system-config-lvmでインストール)で論理ボリュームとして作成しても同じ。よく見ると、OS を含む IDE 接続の VHDX もインストール直後の状態で既に 14GB に膨れ上がってます。

再インストールする際に、SCSI ディスクも含めてパーティションを構成してみたところ、フォーマットが完了してファイルのコピーが始まる時点で、容量可変 VHDX の割り当てサイズ(OS 40GB、SCSI 100GB)のちょうど 25%に膨れ上がることがわかりました。



VMware で容量可変タイプの vmdx (40GB) を作成し、同じようにインストールを開始したところ、フォーマット完了直後は 160 MB くらいにしかなりません。


もしやと思い、Hyper-V の環境で容量可変 VHD (40GB) を作成し、インストールを開始すると、フォーマット完了直後は 1GB 以下でした。


ここでようやく犯人は VHDX らしいことがわかってきます。そういえば、VHDX と Linux の組み合わせで何か問題があったような。Linux Integration Services v3.4 for Hyper-V (CentOS 5.8 以前に必要)の Read Me に書いてあったような...


 ありました。どうやら VHDX と ext3 の組み合わせがまずいようです。Hyper-V上で Linux をプロダクション環境で動かす場合は、ext4 を使いことが推奨されています。

というわけで、ext4 にしてみることに。CenOS のインストーラーのパーティション編集ツールは、標準で ext4 に対応していませんが、boot: で linux ext4 と入力してインストーラーを開始すると、ext4 を選択できるようになります。

ただし、/ は ext4 に変更できるのですが、/boot を ext4 にさせてくれませんでした。

しょうがないので、Read Me に書かれてあるもう 1 つの方法を試してみます。VHDX をブロック サイズ 1MB で作成するのです。

「Hyper-V マネージャー」や「ディスクの管理」から作成する VHDX は、ブロック サイズ 32M。 ブロック サイズ 1MB の VHDX を作成するには、Windows PowerShell の New-VHD コマンドレットを使用します。40GB の容量可変 VHDX を作成する場合は、こんな感じ。

New-VHD -Path ファイル名.vhdx -Dynamic -SizeBytes 40GB -BlockSizeBytes 1MB


これを仮想マシンの IDE に割り当てて、CentOS 5.9 をインストールしたところ、フォーマット直後で数百 MB、インストール完了直後で 4GB で済みました。10 GB 縮小できたことになります。


続いて、SCSI コントローラーに 127GB の容量可変 VHDX を割り当てて、ファイルシステムを構成してみました。こちらは、「Hyper-V マネージャー」で作成した VHDX (ブロックサイズ 32MB) を使用し、ファイルシステムとして Hyper-V 推奨の ext4 を使用してみました。すると、フォーマット直後は2.5 GB 程度になりました。まだ大きいような気がしますが、1/10 くらいになったので大きな改善です(VHDX のブロック サイズを 1MB にすればもっと小さくなるはず)。なお、論理ボリューム管理(yum install system-config-lvm)で ext4 を扱えるようにするには、e4fsprogs (yum install e4fsprogs)が必要です。


いろいろ試行錯誤しましたが、実は、VHDX ではなく、VHD を使えばトラブルに遭遇することもなかったような。なお、これは容量可変 VHDX の話。容量固定だとどうなるかは、もう面倒なので試してません。(1/31 追記) 容量固定 VHDX と ext3 の組み合わせだと、特に問題は起きないかもしれません。5GB の容量固定 VHDX を追加して試してみましたが、フォーマットできないとかはありませんでした。

2013/03/14 追記)
SLES 11 SP2のリリースノートに書いてあることと同じ現象のようです。SLES 11 SP2の場合、50GB以上の容量可変タイプのVHDXだとインストールに失敗するそう。容量固定にするか、容量可変VHDにするか、あるいは1MBブロックサイズの容量可変VHDXにしろと書いてありますです。

Release Notes for SUSE Linux Enterprise Server 11 Service Pack 2
11.4.3. Formatting Large Disk Partitions on Windows 8 Server

https://www.suse.com/releasenotes/x86_64/SUSE-SLES/11-SP2/#id326544


0 件のコメント: