web-dev-qa-db-ja.com

Linuxでresize2fsコマンドは何をしますか

論理ボリュームを拡張または縮小するときにresize2fsコマンドは何をしますか。 lvextendコマンドとlvreduceコマンドを使用している間、機能は同じですか、それとも異なりますか?

5
Raghav Chadha

実際には、resize2fsが持つことができる4つの異なる動作があります(その1つは簡単です)。これは、ファイルシステムがマウントされているか、マウント解除されているか、および縮小または拡張しているかによって異なります。

  1. マウント、拡張

    ここで、resize2fsはオンラインでサイズ変更を試みます。多かれ少なかれ、これはカーネルに作業を行うように伝えるだけです。次に、カーネルは新しく利用可能なストレージに追加のファイルシステムメタデータの書き込みを開始します。これが発生しても、ファイルシステムを引き続き使用できます。

    本当に古いext3ファイルシステムはオンラインのサイズ変更をサポートしていない可能性があることに注意してください。拡張するには、古いファイルシステムをアンマウントする必要があります。

  2. アンマウント、拡張

    今回は、カーネルの代わりにresize2fsが機能します。ほとんどの場合、これは新たに利用可能なストレージに追加のファイルシステムメタデータを書き込むことで構成されます。

  3. マウント、収縮

    これはサポートされていません。エラーを出力するだけです。これは些細な動作です。

  4. アンマウント、収縮

    これは最も時間がかかるものであり、最も危険でもあります(ただし、かなり安全なはずですが)。可能であれば(たとえば、十分なスペースがある場合)、resize2fsはファイルシステムにストレージの最初のsizeバイトのみを使用させます。これは、ファイルシステムのメタデータとデータの両方を移動することによって行われます。完了すると、ファイルシステムで使用されていない、ブロックデバイス(論理ボリューム)の最後に未使用のストレージが存在します。

lvextendおよびlvreduceは、論理ボリュームのサイズを変更します。 -rオプションが指定されている場合、ファイルシステムのサイズをさらに変更できます。これは、おそらく、特に削減を行う場合に適切な方法です。誤ってlvreduceに誤ったサイズを指定すると、残念ながら簡単にデータが失われます。 -rはこれを防止します(resize2fsに同じサイズが通知されるようにすることで)。

12
derobert