{{tag>linux}} # lvm でボリューム作るまでの一連の操作 たまにしかやらないからコマンド忘れるシリーズです。 ## パーティションを作る まずパーティションを作ります。 ``` # gdisk /dev/vdb ``` * `x` エキスパートモードに切り替え。 * `n` protective mbr を造る。 * `d` セクタアラインメントを表示。(2048 になってるかな) * `l` セクタアラインメントを変更。 `8` を入力。 * Enter the sector alignment value (1-65536, default = 2048): `8` * `m` エキスパートモードを抜ける。 * `n` 新規パーティションを作成。今回はディスク丸ごと pv にする予定なのでほとんど default の値を使用してます。ただしパーティションタイプは `8e00 Linux LVM` を選択する。 * Partition number (1-128, default 1): * First sector (34-16777182, default = 40) or {+-}size{KMGTP}: * Last sector (40-16777182, default = 16777182) or {+-}size{KMGTP}: * Current type is 'Linux filesystem' * Hex code or GUID (L to show codes, Enter = 8300): `8e00` * Changed type of partition to 'Linux LVM' * `w` 書き込んで終了 ## pv を作る `-M` は lvm のメタデータのバージョン(1 | 2)を指定します。ちなみに `-t` を付けてテストするとすごくダメっぽいエラーが出力されますが、本番はあっさり通ります。 ``` # pvcreate -M2 /dev/vdb1 Physical volume "/dev/vdb1" successfully created. # pvs PV VG Fmt Attr PSize PFree /dev/vdb1 lvm2 --- 8.00g 8.00g ``` ## vg を作る `-M` は pv と同じくメタデータのバージョンです。`-s` はエクステントサイズを指定するオプションで、今後 lv 作る時にはこのサイズのエクステントを何個割り当てるか……という考え方になります。要は最小単位のサイズです。1つの lv には最大で 65534 個のエクステントまでしか割り当てられないため、例えばデフォルトのエクステントサイズ 4MiB を指定した場合、1つの lv のサイズは最大 256GiB になります。用途にもよりますが、あんまり小さいサイズを指定しても制限がキツくなるだけなので、うちの環境ではちょっと大きめの値を指定するようにしています((あんまり細かいエクステントサイズにすると "遅い" なんてはなしも?))。 そしてコマンドの末尾は <使用する pv> と続きます。 ``` # vgcreate -M2 -s 128m vg001 /dev/vdb1 Volume group "vg001" successfully created # vgs VG #PV #LV #SN Attr VSize VFree vg001 1 0 0 wz--n- 7.88g 7.88g ``` 128MiB 以下の lv 作る要件はこのサーバーにはまず無いでしょう……という考え方で、できるだけ大きな値を指定した方が良い気がします。 ## lv を作る `-L` でサイズ(今回は2GiB)、`-n` で lv の名前を指定して、最後に lv を作る先の vg を指定します。 ``` # lvcreate -L2g -n lv001 vg001 Logical volume "lv001" created. ``` ちなみにパフォーマンスを求めて物理的に連続した領域を確保したい場合は `-Cy` とか付けると良いみたいです。 ## ファイルシステムを作る `-L` はファイルシステムのラベルを指定します。なくても問題ありません。 ``` # mkfs.ext4 -Lpostgres /dev/vg001/lv001 mke2fs 1.43.3 (04-Sep-2016) Creating filesystem with 524288 4k blocks and 131072 inodes Filesystem UUID: 09904288-70b0-4a1c-80b8-af5116156663 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done ``` ひととおり作りました。これでマウントして使うことができるようになります。