LVM2パーティションのサイズを変更するには、次の2つのコマンドを実行する必要があります。
# lvextend -L+1G /dev/myvg/homevol
# resize2fs /dev/myvg/homevol
ただし、lvextend
を実行すると、変更が既にパーティションに適用されていることがわかります(Gnome Disksを参照)。なぜ私はまだやる必要があるのですかresize2fs
?
lvextend
コマンド(--resizefs
オプションなし)は、LVM側の配置のみを行い、論理ボリュームであるブロックデバイスを拡大します。 LVのファイルシステムタイプ(またはファイルシステムが存在するかどうか)に関係なく、これらの操作は常に同じです。
LVにext2/3/4ファイルシステムが含まれている場合、次のステップは、ファイルシステムのメタデータを更新して、ファイルシステムに利用可能な空き容量があることを認識させ、追加されたスペースを管理するために必要なメタデータ構造を作成/拡張することです。 ext2/3/4ファイルシステムの場合、これには少なくとも次のことが含まれます。
この部分はファイルシステムタイプに固有ですが、ext2/3/4ファイルシステムタイプは類似しているため、単一のresize2fs
ツールですべてのサイズを変更できます。 XFS、ファイルシステムの場合は、代わりにxfs_growfs
ツールを使用します。他のファイルシステムには、独自の拡張ツールがある場合があります。また、論理ボリュームにファイルシステムが含まれておらず、「raw」データベースやOracle ASMボリュームなどが含まれている場合は、さらに別の手順を適用する必要があります。
ファイルシステムごとに内部の仕組みが異なるため、ファイルシステムを拡張するための条件はそれぞれ異なります。共通のAPIがファイルシステム拡張用に設計されるまでにはしばらく時間がかかりました。これにより、fsadm resize
コマンドを実装できるようになりました。これは、いくつかのファイルシステムタイプを拡張するための統一された構文を提供します。 lvextend
の--resizefs
オプションは、fsadm resize
コマンドを使用するだけです。
簡単に言えば、lvextend
の後に、lvs
、vgs
、lvdisplay
、vgdisplay
などのLVMレベルのツールが更新されたサイズを表示します、しかしファイルシステムとその上で動作しているdf
のようなツールはまだそれを見ていません。
LVMレイヤーは、ファイルシステムのコンテナーにすぎません。別にresize2fs
に-r
(または--resizefs
)オプションを追加することなく、論理ボリューム内のファイルシステムのサイズを変更するようにlvextend
に指示できます。
lvextend -r ...
ファイルシステムと論理ボリュームは異なる抽象概念だからです。ボリュームは、ディスクのチャンク(パーティションなど)です。少なくとも、「仮想」同等のものです。それは単なるブロックデバイスです。ファイルシステムは、その内部(または、必要に応じてその上)に配置され、そのデバイスへのファイル(およびディレクトリなど)間のマッピングを提供するために使用される構造です。 resize2fs
がない場合、パーティションは大きくなりますが、ファイルシステムは使用可能なスペースを活用していません。
実際にファイルシステムを作成できます最初はこれはパーティション全体を占有しません。 mke2fs
のmanページから:
ファイルシステムのサイズは、fs-sizeで指定されます。 fs-sizeにサフィックスがない場合、-b blocksizeオプションが指定されていない限り、2の累乗のキロバイトとして解釈されます。この場合、fs-sizeはブロックサイズブロックの数として解釈されます。 fs-sizeの末尾に「k」、「m」、「g」、「t」(大文字または小文字)が付いている場合、2の累乗のキロバイト、メガバイト、ギガバイト、テラバイトなど。fs-sizeを省略した場合、mke2fsはデバイスサイズに基づいてファイルシステムを作成します。
ご覧のとおり、デフォルトではパーティションがいっぱいになっていますが、通常はそれ以外の理由はありませんが、必要に応じて可能です。
lvextend
にオプション--resizefs
(または-r
)がある場合は、ボリュームを拡張した後、別のコマンドを実行する必要なくファイルシステムの拡張を処理します。
resize2fs
は、fs
、ファイルシステムを拡張または縮小して、lvextend
コマンドによって生成された新しいスペースを使用します。プロセス:
with fs:
-- shrink --> 1. shrink fs 2. shrink volume
-- expand --> 1. expand volume, 2. expand fs