4 Extファイル・システムの管理

拡張ファイル・システム(Ext)は、Linuxカーネル用に書き込まれ、多くのLinuxディストリビューションで一般的に使用される、最初のファイル・システムです。Extは、一連の更新を経て進化し、Ext4ファイル・システムとして入手可能になりました。このファイル・システムは、大部分は以前のExtファイル・システム・リリースと下位互換性がありますが、多数の機能が追加されています。Ext4で使用可能な主な機能は次のとおりです。

  • 大規模なファイル・システムのサポート: Ext4は、最大1EiBサイズのボリュームと、最大16TiBサイズの単一ファイルを理論的にサポートできます。
  • ブロック・マッピングではなくエクステントの使用: 大きいファイルのパフォーマンスが向上し、断片化が減少します。
  • ファイルに対するディスク上の領域の永続的な事前割当てのためのfallocateの認識: パフォーマンスを高め、ファイルに対する連続したディスク割当ての確保に役立ちます。
  • フラッシュ時の割当ての使用: データがディスクにフラッシュされるまでディスク領域の割当てを遅延させることで、パフォーマンスが向上し、断片化が減少します。
  • チェックサム機能: データ整合性が保証されます。

詳細は、https://ext4.wiki.kernel.org/index.php/Main_Pageを参照してください。

この章では、Oracle Linux 8でのExtファイル・システムを管理するためのタスクを説明します。ローカル・ファイル・システム管理の概要は、「ファイル・システム管理について」を参照してください。

Extファイル・システムからBtrfsファイル・システムへの変換

btrfs-convertユーティリティを使用すると、extファイル・システムをBtrfsファイル・システムに変換できます。このユーティリティは、元のファイル・システムのイメージをextN_savedという名前のスナップショット(ext4_savedなど)に保存します。このスナップショットがあれば、btrfsファイル・システムを変更した場合でも、変換をロールバックできます。

なお、/bootなどの起動可能パーティションまたはrootファイル・システムは、Btrfsに変換できません。

ノート:

Btrfsへの変換は、Arm (aarch64)プラットフォームではサポートされていません。Oracle Linux 8をaarch64プラットフォームで実行している場合は、あるファイル・システムから別のファイル・システムにデータを移行できます。

rootファイル・システムをBtrfsに変換する場合は、スナップショットを使用して、ファイル・システムに加えられたアップグレードなどの変更をロールバックできます。

root以外のファイルのExtファイル・システムからBtrfsファイル・システムへの変換

注意:

ファイル・システムの変換を実行する前に、状態をリストアできるファイル・システムをバックアップします。

rootファイル・システム以外のextファイル・システムをBtrfsに変換するには:

  1. ファイル・システムをアンマウントします。

    sudo umount mountpoint          
  2. 基礎となるデバイス上でfsckの適切なバージョン(fsck.ext4など)を実行し、ファイル・システムの整合性を確認および修正します。

    sudo fsck.extN -f device
  3. ファイル・システムをbtrfsファイル・システムに変換します。

    sudo btrfs-convert device
  4. ファイル/etc/fstabを編集し、ファイル・システムのファイル・システム・タイプをbtrfsに変更します。

    /dev/sdb               /myfs          btrfs    defaults  0 0
  5. 古いマウント・ポイントに変換済のファイル・システムをマウントします。
    sudo mount device mountpoint           

root以外のExtファイル・システムの新しいバージョンへの変換

注意:

ファイル・システムの変換を実行する前に、その状態をリストアできるファイル・システムのバックアップを作成してください。

  1. 現在のファイル・システムをアンマウントします。

    sudo umount filesystem
  2. ファイル・システムに応じたfsckコマンドを実行して、システムを確認します。たとえば、ファイル・システムがext2の場合は、fsck.ext2を次のように使用します。

    sudo fsck.ext2 -f device
  3. 次のコマンドをファイル・システムに対応するブロック・デバイスを指定して使用します。

    sudo tune2fs -j device

    このコマンドによって、ext3ジャーナルinodeがファイル・システムに追加されます。

  4. 上位バージョンに応じたfsckコマンドを使用して、ファイル・システムを確認します。たとえば、新しいファイル・システムがext3の場合は、fsck.ext3を次のように使用します。

    sudo fsck.ext3 -f device
  5. /etc/fstabファイル内のファイル・システムのエントリを修正して、そのタイプがファイル・システムの新しいバージョン(たとえば、ext2ではなくext3)として定義されるようにします。

  6. ファイル・システムを再マウントします。

    sudo mount filesystem

詳細は、tune2fs(8)マニュアル・ページを参照してください。

rootのExtファイル・システムの新しいバージョンへの変換

注意:

rootファイル・システムの変換を実行する前に、その状態をリストアできる完全なシステム・バックアップを作成してください。

  1. 次のコマンドをrootファイル・システムに対応するブロック・デバイスを指定して使用します。

    sudo tune2fs -j device
  2. mountコマンドを実行して、rootファイル・システムとしてマウントされているデバイスを特定します。

    たとえば、次のコマンドの出力は、rootファイル・システムがディスク・パーティション/dev/sda2に対応することを示しています。

    sudo mount
    /dev/sda2 on / type ext2 (rw)
  3. システムを停止します。

  4. Oracle Linuxの起動CD、DVDまたはISOからそのシステムを起動します。

    ISOは、Oracle Software Delivery Cloud (https://edelivery.oracle.com/linux)からダウンロードできます。利便性のために、これらのイメージはOracle Linux yumサーバー(https://yum.oracle.com/oracle-linux-isos.html)からも入手できるようになっています。

  5. インストール・メニューからインストール済システムのレスキューを選択します。

    1. プロンプトが表示されたときに、言語とキーボードを選択します。

    2. インストール・メディアとしてローカルCD/DVDを選択します。

    3. ネットワーク・インタフェースの起動をバイパスする場合は、「なし」を選択します。

    4. レスキュー環境の選択をバイパスする場合は、「スキップ」を選択します。

  6. シェルの起動を選択して、画面の下側にbashシェル・プロンプトを表示します。

  7. 既存のrootファイル・システムをLVMボリュームとして構成している場合、たとえば次のコマンドを使用して、ボリューム・グループを起動します。ボリューム・グループがvg_host01の場合は、次のように入力します。

    sudo lvchange -ay vg_host01
  8. 新しいファイル・システムに応じたfsckコマンドを使用して、ファイル・システムを確認します。新しいバージョンがext3の場合は、次のようにコマンドを入力します。

    sudo fsck.ext3 -f device

    前のコマンドのdeviceは、rootファイル・システムのデバイス/dev/sda2です。

    このコマンドによって、.journalファイルがジャーナルinodeに移動します。

  9. マウント・ポイント/mnt1を作成して、変換されたrootファイル・システムをマウントします。

    sudo mkdir /mnt1
    sudo mount -t ext3 device /mnt1
  10. /mnt1/etc/fstabファイルを編集して、rootファイル・システムのタイプをext3に変更します。

    /dev/sda2        /       ext3    defaults  1 1
  11. マウントされたファイル・システムのrootに.autorelabelファイルを作成します。

    sudo touch /mnt1/.autorelabel

    /.autorelabelファイルが存在すると、SELinuxによってファイル・システム上のすべてのファイルのセキュリティ属性が再作成されます。

    注意:

    .autorelabelファイルを作成しない場合は、システムの起動に成功しない場合があります。このファイルが作成されておらず再起動に失敗した場合は、カーネル・ブート・パラメータでselinux=0値を指定してSELinuxを一時的に無効にするか、enforcing=0を指定して許容モードでSELinuxを実行することができます。

  12. 変換されたrootファイル・システムをアンマウントします。

    sudo umount /mnt1
  13. インストール・メディアを削除してから、システムをリブートします。

Extファイル・システムのチェックと修復

fsckユーティリティは、ファイル・システムのチェックと修復に使用できます。root (/)および/boot以外のファイル・システムの場合、mountでは、ファイル・システム・チェックが呼び出されます。このチェックでは、指定した回数以上のマウントが実行されたかどうか、または実行されたことを確認せずに180日以上経過したかどうかが確認されます。ファイル・システムが数か月間チェックされていない場合は、fsckを手動で実行することもできます。

次の手順では、Extファイル・システムをチェックおよび修復する方法について説明します。

注意:

マウントしたファイル・システムに対してfsckを実行すると、ファイル・システムが破損し、データが消失する可能性があります。

  1. ファイル・システムをアンマウントします。

    sudo umount filesystem
  2. fsckコマンドを使用して、ファイル・システムをチェックします。

    sudo fsck [-y] file-system

    前述の例では、file-systemでデバイス名、マウント・ポイント、ラベルまたはUUID指定子を指定します。次に例を示します。

    sudo fsck UUID=ad8113d7-b279-4da8-b6e4-cfba045f66ff

    デフォルトでは、fsckコマンドは、提示された修復をファイル・システムに適用するかどうかを選択するプロンプトを表示します。-yオプションを指定すると、このコマンドは、該当するすべての質問に対する応答がyesになるとみなします。

ext3およびext4のファイル・システム・タイプでは、ファイル・システム・メンテナンスの実行に必要なその他のコマンドとして、dumpe2fsおよびdebugfsが含まれます。dumpe2fsは、指定したデバイス上のファイル・システムのスーパー・ブロックおよびブロック・グループ情報を出力します。debugfsは、ファイル・システム・アーキテクチャの専門的な知識を必要とする対話型のファイル・システム・デバッガです。ほとんどのファイル・システム・タイプには、専門的な知識を必要とする類似のコマンドがあります。

詳細は、fsck(8)マニュアル・ページを参照してください。

Extファイル・システムのファイル・システム・チェックの頻度の変更

ノート:

次の手順は、Extファイル・システムにのみ適用されます。Oracle Linux 8でのデフォルトのファイル・システム・タイプであるXFSファイル・システムでは、自動的にエラーが検出され、ブート時の定期的なファイル・システム・チェックは必要になりません。

ファイル・システムの整合性を自動的にチェックするまでのマウント回数を変更するには、次のコマンド構文を使用します。

sudo tune2fs -c mount_count device

前のコマンドのdeviceでは、ファイル・システムに対応するブロック・デバイスを指定します。

0または-1mount_countは、マウント回数に基づく自動チェックを無効にします。

ヒント:

ファイル・システムごとに異なるmount_count値を指定すると、すべてのファイル・システムが同時にチェックされる可能性が低くなります。

ファイル・システム・チェックの最大間隔を指定する場合は、次のコマンド構文を使用します。

sudo tune2fs -i interval[unit] device

前のコマンドでは、unitd(日数)、w(週数)またはm(月数)を指定できます。

デフォルトの単位はd (日数)です。interval0にすると、前回のチェック以降に経過した時間に基づくチェックが無効になります。その間隔を超えたとしても、ファイル・システムは、次回マウントされるまでチェックされません。

詳細は、tune2fs(8)マニュアル・ページを参照してください。