Linuxで開発されたLVM/Logical Volume Manager/論理ボリュームマネージャーを使うと物理的な内蔵や外付けのハードディスクやソリッドステートドライブ(SSD)自体、また、それらの一部であるパーティションなどをPV/Phisical Volume/物理ボリュームとして作成・追加、これ(ら)を1つ、または、複数の領域プールとなるVG/Volume Group/ボリュームグループに追加、任意のボリュームグループからそのサイズを上限に任意のサイズのLV/Logical Volume/論理ボリュームを切り出してファイルシステムを設定することができるようになります。
また、LVMには、記憶領域の最小単位であるPE/Physical Extent/物理エクステントがあり、デフォルトでは4MB、これで記憶領域を2TBまで確保することができ、これを任意に拡張することでより大容量の記憶領域を確保することができるようになりますが、このサイズが小さすぎても大きすぎても領域に無駄が発生するので任意とはいえ、効率的な運用をする為には、必要に応じてある程度のサイズを見極める必要があります。
個々の物理的なメディアやパーティション、それらのサイズを意識することなく、論理ボリュームを使うことができるので例えば、単体ではどうしようか迷うような余った小容量の保存メディアなども大容量の保存メディアの一部として使うことができたりして便利です。
さらに縮小や拡張、物理メディアやパーティションごとに一時退避や削除を行なうこともでき、とても柔軟性の高い技術です。
以前、仮想マシン上のLVM上にインストールされたOSでディスクサイズを拡張する際にもさらっとはやってみたのですが、今回、ファイルサーバ(NAS)他サービスをRaspberry Piをサーバとしてやってみようかと検討するにあたり、改めてやってみることに。
もうちょっと複雑なことをやってはみたものの、それぞれに機能が豊富なので詳細は、manに譲り、ここでは一例にとどめます。
物理ボリューム(PV)の作成には、pvcreateコマンドを使います。
ボリュームグループ(VG)の作成には、vgcreateコマンドを使います。
論理ボリューム(LV)の作成には、lvcreateコマンドを使います。
-n/--nameオプションで任意の論理ボリューム名を付けることができ、指定しなかった場合、lvol内部値となります。
-Lオプションのデフォルトの単位はM(MB)ですが、B/K/M/G/T/P/Eの他、S(512バイトとしてのセクター数)などを指定することができます。
論理ボリュームであってもファイルシステム設定は通常のデバイスと同様です。
論理ボリューム用のデバイスは、/dev/VGNAME/LVNAMEのように生成されることになっているのでファイルシステムの設定、コマンドラインや/etc/fstabでマウントする際などには、これを指定します。
尚、おそらくですが、この時、vgchange -ay/lvchange -ayが実行される結果、VGNAMEやLVNAMEが認識され、kpartxやdmsetupが実行される結果、/dev/VGNAME/LVNAMEや/dev/mapper/VGNAME-LVNAMEが生成されるようです。