lvextendの後に2fsのサイズを変更する必要があるのはなぜですか?

lvextendの後に2fsのサイズを変更する必要があるのはなぜですか?

LVM2パーティションのサイズを変更するには、次の2つのコマンドを実行する必要があります。

# lvextend -L+1G /dev/myvg/homevol
# resize2fs /dev/myvg/homevol

ただし、を実行すると、lvextend変更がパーティションに適用されていることがわかります(Gnome Diskに表示されます)。それでは、なぜまだこれを行うべきですかresize2fs

答え1

lvextendオプションなしでこのコマンドを--resizefs使用すると、LVM側はブロックデバイスを論理ボリュームに拡張するだけです。 LVのファイルシステムの種類(またはファイルシステムが存在するかどうかにかかわらず)、これらの操作は常に似ています。

LVにext2/3/4ファイルシステムが含まれている場合、次の手順はファイルシステムのメタデータを更新し、追加されたスペースを管理するために必要なメタデータ構造を作成し、ファイルシステムがより多くの空き容量を持つことを知るようにします。拡張することです。 ext2/3/4ファイルシステムの場合、これには少なくとも以下が含まれます。

  • 追加スペース用の新しいinodeの作成
  • ファイルシステムがスペースを追加するブロックが使用中か使用可能かを知ることができる拡張ブロック割り当てデータ構造
  • 前述のデータ構造の拡張を妨げると、一部のデータブロックが移動する可能性があります。

ext2/3/4ファイルシステムの種類は非常に似ており、resize2fs単一のツールを使用してサイズを変更できますが、この部分はファイルシステムの種類によって異なります。 XFSファイルシステムでは、ツールを代わりに使用できますxfs_growfs。他のファイルシステムには独自の拡張機能があります。論理ボリュームにファイルシステムが含まれていないが、代わりに「raw」データベースやOracle ASMボリュームなどが含まれている場合は、別の手順を適用する必要があります。

すべてのファイルシステムは内部の仕組みが異なるため、ファイルシステムの拡張条件も異なります。ファイルシステム拡張用の共通APIを設計するのに時間がかかりました。これにより、fsadm resizeさまざまな種類のファイルシステムを拡張するための統合構文を提供するコマンドを実装できます。オプションはこのコマンド--resizefsのみを使用します。lvextendfsadm resize

つまりlvextend、。lvsvgslvdisplayvgdisplaydf

答え2

LVM層は、その中にあるファイルシステムのコンテナに過ぎません。別の追加(または)オプションをlvextend実行せずに、論理ボリューム内のファイルシステムのサイズを変更できます。resize2fs-r--resizefs

lvextend -r ...

答え3

これは、ファイルシステムと論理ボリュームが異なる抽象化であるためです。ボリュームは、ディスクの断片(パーティションなど)または少なくとも「仮想」に対応する部分です。それは単なるブロックデバイスです。ファイルシステムは、ファイル(およびディレクトリなど)とそのデバイス間のマッピングを提供する内部(または必要に応じてその上)の構造です。それ以外の場合、resize2fsパーティションは大きくなりますが、ファイルシステムは利用可能なスペースを利用しません。

実際にファイルシステムを作成できます初期のパーティション全体を占有しません。mke2fsマニュアルページから:

ファイルシステムサイズはfs-sizeで指定されます。 fs-size にサフィックスがない場合、-bblocksize オプションが指定されていない限り、2 KB の累乗で解釈されます。この場合、fs-size はブロックサイズのブロック数として解釈されます。 fs-sizeサフィックスが「k」、「m」、「g」、「t」(大文字または小文字)の場合、KB、MB、GB、TBなどで2の累乗として解釈されます。 fs-size を省略すると、mke2fs はデバイスサイズに応じてファイルシステムを作成します。

見てわかるように、デフォルトはパーティションを埋めることであり、通常これを行う理由はありませんが、必要に応じてこれを行うことができます。

別のコマンドを実行せずにボリューム拡張後にファイルシステム拡張を担当するlvextendオプション--resizefs(または単に)がある場合は、注意してください。-r

答え4

コマンドによって作成された新しいスペースを占有するように、ファイルresize2fsシステムを強制的に拡張または縮小します。プロセス:fslvextend

with fs:
        -- shrink --> 1. shrink fs 2. shrink volume
        -- expand --> 1. expand volume, 2. expand fs

関連情報