Ext3からExt4への移行

この記事は、すべてのファイルとディレクトリを保存しながら、Ext3からExt4ファイルシステムに切り替えたい人を対象としています。 システムを再度インストールすることなく、Ext3からExt4への移行中に発生する最も一般的なエラーについて説明します。



移行の理由。




Ext4の長所と短所の説明は、この記事の範囲外です( Habrによる検索を使用してください - ここにあります )。 Ext3によって課される制限に悩まされておらず、リスクを冒してExt4に切り替える準備ができていない場合、非常に慎重に考えて、本当に必要ですか? ;)一方、Ext4に切り替えることで、ファイルシステムのパフォーマンスの向上を実感し、オーバーヘッドを発生させずに信頼性を高めることができます;)





変換せずにExt4をマウントしようとします。




興味深い点は、Ext3ファイルシステムを変換せずにExt4としてマウントできることです。 / etc / fstabのファイルシステムタイプに適切な変更を加え、システムを再起動するだけです。 この場合、いつでもExt3に戻ることができます。



これは、お使いのOSがExt4をサポートする準備ができているかどうかについての良いテストかもしれません。 ただし、この場合、Ext4拡張機能は含まれないことに注意してください。Ext3との互換モードになります。



Ext4への移行。



最近の警告。




先に進む前に、システムのバックアップを作成してください。 変換プロセス中にコンピューターが再起動し、すべてのデータが失われることがあります。



ファイルシステムはExt3との互換性がなくなるため、障害が発生した場合にファイルシステムの通常のロードと復元をサポートするExt4を自由に使用できるツールを用意する必要があります。 ブートローダー、e2fsprogs、マウント、Linuxカーネルの最新バージョンには、Ext4のサポートが含まれています。



ツールキット。




これらのパッケージはすべて、Debian GNU / Linuxリポジトリの不安定版ブランチまたは実験版ブランチで入手できます。 e2fsprogsを除き、古いバージョンでも機能します。これは、実際にはExt4をサポートするための最小バージョンです。



非ルートファイルシステムをExt4に変換します。




マウントされていないExt3をExt4に変換する限り、これは本当に簡単な手順になります。 この例では、/ homeとしてマウントされた/ dev / sdc1を変換します。

  umount / dev / sdc1 


次のステップでは、エラーがないかセクションをチェックして、エラーがないことを確認します。 まだExt3にいます:

  fsck.ext3 -pf / dev / sdc1 


セクションに新しいExt4機能が含まれています。

  tune2fs -Oエクステント、uninit_bg、dir_index / dev / sdc1 


その後、Ext4のファイルシステムチェックを実行します。

  fsck.ext4 -yfD / dev / sdc1 


エラーが見つかります-これは正常です。 チェックをもう一度実行して、エラーが消えたことを確認できます。



fsck.ext4の実行時の-Dオプションは、ディレクトリインデックスを復元することにより、実際にdir_indexサポートを有効にします。 いつでもこのオプションから開始できます。



/ etc / fstabファイルを変更して、変換されたパーティションにExt4を含め、ext3をext4に置き換えます。他のパラメーターはシステムによって異なる場合があります。

  / dev / sdc1 / home ext4デフォルト0 2 




セクションをマウントします。

 マウント/ホーム 




すべてがうまくいった場合はおめでとう;)そうでない場合は、パニックにならないでください。 最後に、上記のアドバイスに従ってバックアップを作成しましたか? ;)上記のツール(または上記のバージョン)をDebianの不安定版ブランチまたは実験版ブランチから実際にインストールしたかどうかを確認します(ただし、別のディストリビューションを使用していますか?)。必要に応じて、これらのパッケージを更新します。 上記の手順をもう一度試してください。



/ブートパーティション。




/ bootがExt3の独立したパーティションである場合は、今のところそのままにしておきます。 grubの最新バージョンはExt4をサポートしていますが、ディストリビューションに含まれていない場合があります。



/ etc / fstabで新しいタイプのパーティションファイルシステムを指定することにより、実際の変換なしでExt4にパーティションをマウントすることができます。

  / dev / sdb1 / boot ext4デフォルト0 1 


Ext4の新製品のほとんどは使用されませんが、OSのブートプロセスにはほとんど影響しませんよね? ;)そして、本質的にこれはまだExt3セクションなので、古いバージョンのgrubでさえロードに問題はないはずです。



/ bootパーティションが個別に作成されていない場合は、別の領域に分割することを検討してください。 それ以外の場合、お使いのバージョンのgrubでサポートされていない機能を含めないように非常に注意するか、grubをサポートするバージョンにアップグレードしてください。



ルートファイルシステムをExt4に変換します。




ルートファイルシステムの変換は、それを取得してアンマウントすることはできないため、やや複雑です。 それでも、外部ブータブルメディアを使用せずにこれを行うことは可能です。 ただし、ルートファイルシステムの変換プロセス全体は、シングルユーザー専用モードで行う必要があります。



最初の手順は、/ etc / fstabを変更し、ルートパーティションにext3ではなくext4を使用することです。 これは重要です。ファイルシステムは読み取り専用モードで動作し続け、変更を加えることができず、その結果、次回の起動時にルートファイルシステムをマウントすることができなくなるためです。



ルートパーティション/が/ dev / sda1であるため、変更後、このセクションの/ etc / fstabファイルは次のようになります。

  / dev / sda1 / ext4デフォルト0 1 


次に、ファイルシステムを読み取り専用モードで再マウントします。

  mount -o remount、ro / 


ファイルシステムチェックを実行します。

  fsck.ext3 -pf / dev / sda1 


ここで、システムを再起動する必要があることがわかります。 まあ、良いアイデア。 シングルユーザー専用モードで再起動し、読み取り専用モードでルートファイルシステムを再マウントします。

  mount -o remount、ro / 


/ etc / fstabを既に編集し、ext3パーティションを予備変換なしでext4としてマウントできるのは良いことです。



次に、ルートファイルシステムでext4を有効にするには、次を実行します。

  tune2fs -Oエクステント、uninit_bg、dir_index / dev / sda1 


そして再び、ルートファイルシステムのチェックを実行します。 彼女はエラーを見つけて修正しますが、私たちはすでに知っています(上記を読んでください):

  fsck.ext4 -yfD / dev / sda1 


Debianリポジトリから2.6.30カーネルを使用している場合は、注意してください。 ext4モジュールを追加するには、initrdを更新する必要がある場合があります。

  update_initramfs -u 


ext4モジュールがinitrdに存在しない場合、Ext3をExt4に変換した後は起動できません。



過負荷になりました。 そのため、Ext4ファイルシステムが高速になり、パフォーマンスの向上が感じられます。Ext4のすべての改善点を利用できます。 まあ、ほとんどすべて、読んでください...



ファイルをエクステントに変換します。




変換が完了したように見える場合があります。 これは、以前に作成されたすべてのファイルがext4のエクステントの代わりにext3ビットマップマッピングを使用することを除いて、ほぼ正しいです。



いいえ、もちろん、遅かれ早かれ、その後ファイルが変更されると、それらの表示もエクステントで更新されます。 ただし、残念ながら、書き込まれたファイルよりもはるかに多くのファイルが読み取られます(コンパイルされたOSアプリケーションは頻繁に更新されますか?)。 その結果、ファイルはビットマップで長時間表示される可能性があり、パワーを感じることができず、ext4の潜在能力を十分に発揮できません。



新しいディスプレイでファイルを再構築できるe4defragユーティリティは現在開発中です。 残念ながら、それは完全ではなく、実際のデータで使用する準備ができていません(いずれにせよ、今のところ言われています)。



幸いなことに、すべてが失われるわけではありません。 e2fsprogsパッケージに付属のchattrを使用して、必要なことを実行できます。 これにより、カーネルが新しいエクステントマッピングでファイルを上書きする属性を設定できます。 これは、マウントされた作業ファイルシステムで実行できます。 実際、これがおそらくこれを行う唯一の方法です;)



ただし、この関数は何らかの方法でまだ実験的であり、まだ完全にはテストされていないことに注意してください。 この操作を実行すると危険な場合があります。 syslogは単にエラーメッセージを表示する場合があります。 最初に少量のデータでこれらすべてをチェックすることをお勧めします。



ファイル(およびディレクトリ)の拡張属性を確認するには、lsattrを使用できます。

  lsattr /ホーム/ユーザー/ foo / bar 


エクステントが使用されていない場合、次のようなものが表示されます。

  ------------------- / home / user / foo / bar 


破線は、ファイル属性の単なる表示です。 この場合、ファイルには属性がありません。



エクステントの属性を設定します。

  chattr + e / home / user / foo / bar 


ファイル属性を再度表示します。

  ----------------- e- / home / user / foo / bar 


ファイルがextents属性を使用しているという「e」に注目します。



ファイルシステムの恐ろしいエラーメッセージをログで確認します。 見つからない場合は、今日の星が私たちにとって有利であり、継続できることを意味します。



chattrの場合、複数のファイル名を転送できます。 しかし... ...私たちの時代には誰が手動で1つのファイルで何かをしますか? 魔法を使用します。

  find / home -xdev -type f -print0 |  xargs -0 chattr + e
 find / home -xdev -type d -print0 |  xargs -0 chattr + e 


したがって、まずすべてのファイルにエクステント属性を設定し、次に/ homeセクションのすべてのディレクトリに設定します。



同じ操作をルートパーティションから開始して実行できます。 -xdevオプションを指定すると、必要のない場所にエクステント属性を設定することができなくなります。



おそらく、これらのコマンドをシングルユーザー専用モードで実行して、他のプロセスが並行して作業に干渉する可能性を最小限に抑えるのが理にかなっています。



最後の言葉。





上記のすべてのステップの結果として何かが壊れた場合、これらの行の作成者は責任を負いません。 あなたはあなた自身の危険とリスクで行動することを忘れないでください;)そして残りのために、成功...;)



この記事はかなり無料の翻訳です。

ライブシステムのext3からext4ファイルシステムへの移行 」(オリジナルの攻撃の発生時)といくつかの追加。 ;)



批判、議論、自分の経験の説明などは、もちろん歓迎です...



All Articles