web-dev-qa-db-ja.com

ソフトウェアRAIDボリュームをext3からext4(またはext2)に変換しますか?

私のubuntulinux11マシンにmdadmで作成されたソフトウェアRAIDボリュームがあります。ブートドライブではありません。これは、3台の大型SATAドライブから作成されたソフトウェアRAID5構成です。

最初に作成したときは、ext3にしました。それ以来、ext4(またはext2)に変換することでメリットが得られる可能性があることを学びました。

まず、これが理にかなっていることを確認したいと思います。たとえば、ext4に変換すると、パフォーマンスが向上します(それを検索すると、ext3よりもext4の一般的な利点のようです)。

次に、ext2への移行を検討する理由はありますか?それともこれは実際には悪い考えですか?

最後に、これを行うにはどうすればよいですか?

私が収集したもの(たとえば this サイトから)から、ボリュームをアンマウントしてから、いくつかのコマンドを実行してボリュームを変換する必要があります。私のfstabは現在、ファイルシステムタイプに対して「auto」に設定されています。

5
Scott Szretter

さまざまなext [0-9]ファイルシステムの違いは、機能に関するものであり、構造に関するものではありません。利点は、それらが互いにかなり互換性があることです。たとえば、ext3パーティションをマウントできますas ext2で、すべてが正常に機能するはずです。同様に、ext3パーティションをext4としてマウントできます。これらの操作のいずれかを実行すると、バージョン固有の機能にアクセスできなくなります。たとえば、ext3パーティションをext2としてマウントすると、ジャーナルにアクセスできなくなります。同様に、ext3パーティションをext4としてマウントしても、ビットマップではなく、fsck時間やエクステントの短縮などの新しい機能を使用できません。

変換を行うために必要なことは、大まかに言えば、

  1. パーティションをアンマウントします
  2. 変換を実行します
  3. パーティションをマウントします

これがプライマリディスクでない限り、システムを停止せずにこれを実行できます。ターゲットパーティションが一定時間停止することを期待する必要があります。そして、いつものように、ファイルシステムをいじくり回す前に、損失が発生した可能性のあるデータの完全バックアップをとる必要があります。

これを行うために実行する必要がある正確なコマンドは次のとおりです。私の目的では、ターゲットデバイスは/dev/md0であると想定します。

umount /dev/md0
fsck.ext3 -pf /dev/md0
tune2fs -O extents,uninit_bg,dir_index /dev/md0
fsck.ext4 -yfD /dev/md0

最初のfsckは、変換を行う前に、ファイルシステムがクリーンで正常な状態にあることを確認することです。そうしないと、プロセスが失敗するか、さらに悪いことに、成功する可能性がありますが、不整合が残ります。 tune2fsコマンドは、ファイルシステム設定をいじるためのものです。もともとはext2用に作成されたため、名前の「2fs」の部分ですが、extファイルシステムのすべてのバージョンを変更するために使用されます。この場合、ext3とext4の間に追加された追加機能を有効にします。最後のfsckは2つのことをしています。まず、変換から必要なクリーンアップが行われることを確認し、次に、ディレクトリインデックスを作成または再構築します。

この後、/etc/fstabを編集して、ext4としてマウントされていることを確認する必要がありますが、実際にはautoオプションで正しく識別されるはずです。

おめでとうございます。火事が発生したり、大量虐殺が行われたり、プロセス中に妻を殺害したことで有罪判決を受けたりしない限り、ext4パーティションの幸せな所有者になるはずです。

11
Scott Pack

はい、ext4に変換すると、割り当ての遅延などの理由でパフォーマンスが向上するはずです。 ext4は、ファイルの断片化の防止にも優れており、パフォーマンスにも役立ちます。さらに、ext4モジュールによるext3ファイルシステムの処理について真剣な話があります。そのため、ext3にとどまっている場合でも、おそらく同じコードPretty Soon Now(TM)を使用することになります。

Ext2に行くのは悪い考えです。勤勉なファイルシステム開発者が10年ほどかけてext3とext4に加えたすべての改善なしに、古いコードに移行します(ext3は2001年の秋に導入されました)。

どのように変換しますか? 2つのアプローチがあります:

  1. インプレースで変換します。あなたは正しい手順を見つけました、そしてスコットパックも彼の答えでそれを与えました。
  2. バックアップし、ext4を最初から作成して復元します。

最初の1つはそれほど面倒ではありませんが、ファイルシステムにすでに存在するファイルに対してext4の利点の一部を得ることができません(つまり、エクステントベースではありません)。

Backup-mkfs-restoreは、すべてのファイルのすべての機能を提供し、mkfs.ext4は、データのアライメントが基盤となるソフトウェアRAIDで適切に機能していることを確認します。 ext3ファイルシステムを作成するときに正しく配置されていれば、利益はありません。間違えた場合、多くの利益を得る可能性があります。

どの方法を選択しますか?あなた次第。ファイルシステムが正常に機能し、現在のファイルシステムを実行したいだけの場合は、インプレースで変換できます。パフォーマンスの問題が発生し、ファイルシステムの変更がこれらの問題に役立つことを期待している場合は、方法2を選択します。

2
Paweł Brodacki

ext3は基本的にext2 +ジャーナル。ジャーナルを維持すると、通常の操作にある程度のオーバーヘッドが追加されますが(ジャーナリングオプションセットに応じて)、ファイルシステムの信頼性が向上し、システムのクラッシュまたは停電後のfsck時間が短縮されます。急速に変化する一時的なデータおよび/またはめったに変化しないデータの場合(またはバッテリーバックアップがあるシステム、および/または電源がオンになったらfsckが完了するのを待つ意思があるシステムの場合)、速度の違い 重要な場合があります

Ext3をext2に変更するには、ファイルシステムの種類をext2に変更して再起動するだけです。 ext3ファイルシステムをext2としてマウントすることについての警告が表示されますが、ジャーナルを無効にしてfsckを強制することでこれらをなくすことができます:tune2fs -O ^has_journal /dev/whatever

ext4は基本的にext3 +多くの新機能。それらの中で最も重要なのは extents で、これは昔の古い「ブロックマップ」を連続したメモリ割り当てに置き換え、断片化を減らし、特に大きなファイルの線形読み取りパフォーマンスを向上させます。さらに、ディレクトリインデックスなどのext3オプションはデフォルトでオンになっています。

Ext4への変換 オンザフライで実行可能 システムがext4を適切にサポートしていることを確認し、現在のバージョンのtune2fsを使用してさまざまなext4オプションを有効にし、ファイルシステムタイプをext4に変更して再起動しますが、これは変換方法では、既存のファイルをエクステントを使用するように変換しません。 ext4を最大限に活用するには、すべてをバックアップし、再フォーマットして復元するのが最善です。

どちらの方向に進んでも、 benchmarks ext3よりもうまくできるというあなたの考えを支持してください。

1
DerfK