論理ボリュームを拡張または縮小するときにresize2fsコマンドは何をしますか。 lvextendコマンドとlvreduceコマンドを使用している間、機能は同じですか、それとも異なりますか?
実際には、resize2fs
が持つことができる4つの異なる動作があります(その1つは簡単です)。これは、ファイルシステムがマウントされているか、マウント解除されているか、および縮小または拡張しているかによって異なります。
マウント、拡張
ここで、resize2fs
はオンラインでサイズ変更を試みます。多かれ少なかれ、これはカーネルに作業を行うように伝えるだけです。次に、カーネルは新しく利用可能なストレージに追加のファイルシステムメタデータの書き込みを開始します。これが発生しても、ファイルシステムを引き続き使用できます。
本当に古いext3ファイルシステムはオンラインのサイズ変更をサポートしていない可能性があることに注意してください。拡張するには、古いファイルシステムをアンマウントする必要があります。
アンマウント、拡張
今回は、カーネルの代わりにresize2fs
が機能します。ほとんどの場合、これは新たに利用可能なストレージに追加のファイルシステムメタデータを書き込むことで構成されます。
マウント、収縮
これはサポートされていません。エラーを出力するだけです。これは些細な動作です。
アンマウント、収縮
これは最も時間がかかるものであり、最も危険でもあります(ただし、かなり安全なはずですが)。可能であれば(たとえば、十分なスペースがある場合)、resize2fs
はファイルシステムにストレージの最初のsizeバイトのみを使用させます。これは、ファイルシステムのメタデータとデータの両方を移動することによって行われます。完了すると、ファイルシステムで使用されていない、ブロックデバイス(論理ボリューム)の最後に未使用のストレージが存在します。
lvextend
およびlvreduce
は、論理ボリュームのサイズを変更します。 -r
オプションが指定されている場合、ファイルシステムのサイズをさらに変更できます。これは、おそらく、特に削減を行う場合に適切な方法です。誤ってlvreduce
に誤ったサイズを指定すると、残念ながら簡単にデータが失われます。 -r
はこれを防止します(resize2fs
に同じサイズが通知されるようにすることで)。