15/120
LVM(Logical Volume Manage)
複数のHDDを1つのファイルシステムに統合
必要に応じて再分割可能
=>ディスク容量の動的管理
論理ボリュームの構造 Phisical Volume(PV):物理デバイスに直接マッピングし、複数のデバイス を作成できます.ボリュームグループ:1つ以上のPVとして構成され、利用可能なPEがLV に割り当てられる論理ボリューム(LV):実際にスペースを占有し、VG範囲内に を作成する PE:PVを構成する基本ユニット、データ記憶ユニット LE(論理拡張):LVの基本単位を構成し、基本的にPEと1対1 一致する
Physical Volume
物理ボリュームぶつりボリューム:パーティションぶんかつ
pvcreate
物理ボリュームの作成
pv属性出力
物理ボリュームの削除
≪ボリューム・グループ|Volume Group|oem_src≫:物理ボリュームを1つの物理グループにマージします.
vgcreate
ボリュームグループの作成-s n[M,G]:peサイズ を指定
ボリュームグループのプロパティの確認
ボリュームグループの削除
拡張ボリュームグループ
ボリュームグループを折りたたむ
データにエラーがある場合
pvmove
物理ボリュームの内容の移動
pvmove運転時の表示容量不足
1.グループを展開(スペースを増やす) pvmove を実行
Logical Volume
論理ボリューム:1つ以上のボリュームをグループ化して論理グループを分割する
コマンドラインに拡張
最小単位:PE(LE)
LVを作成する仮定pv->vg->lv作成->lvフォーマット->lvインストール
lvcreate
論理ボリュームの作成
lvmには3つのパスがあります
ユーザは主に/dev/vg 0/lv 01などのパスを使用する.
システムは主に以下のパスを使用します:/dev/mapper/vg 0-lv 01
lvdisplay
lvプロパティのチェック
使用方法:
パーティションのフォーマットコマンドと同じ
パーティション・マウントと同じ方法
論理ボリュームの削除インストール をアンインストールします.削除 を行う.
lvextend
論理ボリュームの拡張
-rオプションを忘れました❗再拡張は必要ですか?仲介lvmコマンドに拡張できます
拡張xfsファイルシステム
縮小範囲を特定できません->既存のデータが破損する可能性があります
複数のHDDを1つのファイルシステムに統合
必要に応じて再分割可能
=>ディスク容量の動的管理
論理ボリュームの構造
Physical Volume
物理ボリュームぶつりボリューム:パーティションぶんかつ
pvcreate
物理ボリュームの作成
# pvcreate [장치명]
[root@localhost ~]# pvcreate /dev/sdb[1-4]
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.
pvdisplaypv属性出力
# pvdisplay [장치명]
[root@localhost ~]# pvdisplay /dev/sdb1
"/dev/sdb1" is a new physical volume of "4.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 4.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID MqOJMN-G5dE-AmKO-D1DV-7z2V-G2kI-0EXDST
pvを作成するかどうかを決定できます(blkidでもわかります)[root@localhost ~]# blkid
...
/dev/sdb1: UUID="MqOJMN-G5dE-AmKO-D1DV-7z2V-G2kI-0EXDST" TYPE="LVM2_member"'
...
pvremove物理ボリュームの削除
# pvremove [pv명]
[root@localhost ~]# pvremove /dev/sdb[1-4]
Labels on physical volume "/dev/sdb1" successfully wiped.
...
Volume Group≪ボリューム・グループ|Volume Group|oem_src≫:物理ボリュームを1つの物理グループにマージします.
vgcreate
ボリュームグループの作成
# vgcreate [vg명] [pv명]
[root@localhost ~]# vgcreate vg0 /dev/sdb[13]
Volume group "vg0" successfully created
vgcreateは、必要なpvを自分で作成し、自分のボリュームとして作成できます.[root@localhost ~]# blkid
/dev/sda1: UUID="88f82736-89b0-49e6-88c5-165c88bcc5bf" TYPE="swap"
/dev/sda2: UUID="231c776b-3197-4e9f-a142-6b80be0ca930" TYPE="xfs"
[root@localhost ~]# vgcreate vg0 /dev/sdb[1-4]
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.
Volume group "vg0" successfully created
オプション[root@localhost ~]# vgcreate vg1 /dev/sdb[24] -s 8M
Volume group "vg1" successfully created
[root@localhost ~]# vgdisplay vg1
...
PE Size 8.00 MiB
...
vgdisplayボリュームグループのプロパティの確認
[root@localhost ~]# vgdisplay vg0
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 9.99 GiB
PE Size 4.00 MiB (디폴트는 4 메가)
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID ihpb5z-u5FD-0Ir3-DhbP-LM5Y-Ia3a-y3xoV0
vgremoveボリュームグループの削除
# vgremove [vg명]
[root@localhost ~]# vgremove vg0
Volume group "vg0" successfully removed
vgextend拡張ボリュームグループ
# vgextend [vg명] [pv명]
[root@localhost ~]# vgdisplay vg0
...
VG Size 9.99 GiB
PE Size 4.00 MiB
...
[root@localhost ~]# vgextend vg0 /dev/sdb2
Volume group "vg0" successfully extended
[root@localhost ~]# vgdisplay vg0
...
VG Size <13.99 GiB # 볼륨그룹이 확장이 됐음
PE Size 4.00 MiB
...
vgreduceボリュームグループを折りたたむ
# vgreduce [vg명] [pv명]
[root@localhost ~]# vgreduce vg0 /dev/sdb2
Removed "/dev/sdb2" from volume group "vg0“
破棄するには、パーティション内にデータがない必要があります.データにエラーがある場合
[root@localhost ~]# vgreduce vg0 /dev/sdb1
Physical volume "/dev/sdb1" still in use
この場合必要なコマンドはpvmoveですpvmove
物理ボリュームの内容の移動
# pvmove [pv명]
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
│ └─vg0-lv02 253:1 0 3G 0 lvm /mnt/disk2
├─sdb2 8:18 0 4G 0 part
├─sdb3 8:19 0 6G 0 part
│ └─vg0-lv01 253:0 0 4G 0 lvm /mnt/disk1
sr0 11:0 1 1024M 0 rom
# 이동
[root@localhost ~]# pvmove /dev/sdb1
/dev/sdb1: Moved: 0.52%
/dev/sdb1: Moved: 100.00%
# 데이터가 옮겨진 모습
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
├─sdb2 8:18 0 4G 0 part
│ └─vg0-lv02 253:1 0 3G 0 lvm /mnt/disk2
├─sdb3 8:19 0 6G 0 part
│ └─vg0-lv01 253:0 0 4G 0 lvm /mnt/disk1
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# vgreduce vg0 /dev/sdb1
Removed "/dev/sdb1" from volume group "vg0“
# 볼륨 그룹에서 제거 성공
ランダムに移動パーティションをシステム内の空き領域パーティションとして指定pvmove運転時の表示容量不足
[root@localhost ~]# pvmove /dev/sdb3
Insufficient free space: 1535 extents needed, but only 73 available
Unable to allocate mirror extents for vg0/pvmove0.
Failed to convert pvmove LV to mirrored.
pvがすぐに使用可能な場合は、ボリュームグループに空き領域がある必要があります=>既存のコンテンツをマージしてスペースを作成する1.グループを展開(スペースを増やす)
[root@localhost ~]# vgextend vg0 /dev/sdb4
Volume group "vg0" successfully extended
[root@localhost ~]# pvmove /dev/sdb3
/dev/sdb3: Moved: 0.13%
/dev/sdb3: Moved: 91.60%
/dev/sdb3: Moved: 100.00%
拡張容量は、削除するpvのサイズ以上でなければなりません.Logical Volume
論理ボリューム:1つ以上のボリュームをグループ化して論理グループを分割する
コマンドラインに拡張
最小単位:PE(LE)
LVを作成する仮定pv->vg->lv作成->lvフォーマット->lvインストール
lvcreate
論理ボリュームの作成
lvcreate [vg명] [-L 실제 크기 or -l le 갯수] [-n lv명]
# -l 옵션 사용시 용량 / pe사이즈 를 하여 le 값을 구함
# 여기선 1G로 만들려고 함(pe사이즈는 4M) -> 1024 / 4 = 256
[root@localhost ~]# lvcreate vg0 -l 256 -n lv01
Logical volume "lv01" created.
[root@localhost ~]# lvcreate vg0 -L 2G -n lv02
Logical volume "lv02" created.
確認[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
│ ├─vg0-lv01 253:0 0 1G 0 lvm
│ └─vg0-lv02 253:1 0 2G 0 lvm
...
システムはランダムにlvの順序を指定しますlvmには3つのパスがあります
[root@localhost ~]# ls -l /dev/vg0/lv01 /dev/mapper/vg0-lv01 /dev/dm-0
brw-rw----. 1 root disk 253, 0 2월 25 14:26 /dev/dm-0 (실제 지정된 이름)
lrwxrwxrwx. 1 root root 7 2월 25 14:26 /dev/mapper/vg0-lv01 -> ../dm-0
lrwxrwxrwx. 1 root root 7 2월 25 14:26 /dev/vg0/lv01 -> ../dm-0
lvが多くなると、実際に指定した名前で区別するのは難しいユーザは主に/dev/vg 0/lv 01などのパスを使用する.
システムは主に以下のパスを使用します:/dev/mapper/vg 0-lv 01
lvdisplay
lvプロパティのチェック
// lvdisplay /dev/mapper/vg0-lv02 같은 패턴도 가능
[root@localhost ~]# lvdisplay /dev/vg0/lv01
--- Logical volume ---
LV Path /dev/vg0/lv01
LV Name lv01
VG Name vg0
LV UUID WwUd3V-0gGj-AqEo-MULY-EmhZ-wtyv-qBdgvn
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2022-02-25 14:26:49 +0900
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 256
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
余った容量を使い切りたいと思っていたのですが、このようなエラーが発生したら[root@localhost ~]# lvcreate vg0 -L 7G -n lv03
Volume group "vg0" has insufficient free space (1790 extents): 1792 required.
LEのサイズは1792のはずですが、残りのスペースは1790なので問題が発生します.使用方法:
[root@localhost ~]# lvcreate vg0 -l 100%FREE -n lv03
Logical volume "lv03" created.
lvフォーマットパーティションのフォーマットコマンドと同じ
[root@localhost ~]# mkfs -t xfs /dev/vg0/lv01
[root@localhost ~]# mkfs.ext4 /dev/mapper/vg0-lv02
確認[root@localhost ~]# blkid
...
/dev/mapper/vg0-lv01: UUID="0b2baf8a-30d2-4737-9765-f6c6a09a6057" TYPE="xfs"
/dev/mapper/vg0-lv02: UUID="636ad79c-0d2a-4ee6-bb2c-fc157227e596" TYPE="ext4“
...
lvインストールパーティション・マウントと同じ方法
[root@localhost ~]# mount /dev/vg0/lv01 /mnt/disk1
[root@localhost ~]# mount /dev/mapper/vg0-lv02 /mnt/disk2
インストールの確認[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
│ ├─vg0-lv01 253:0 0 1G 0 lvm /mnt/disk1
│ ├─vg0-lv02 253:1 0 2G 0 lvm /mnt/disk2
│ └─vg0-lv03 253:2 0 7G 0 lvm
...
lvremove論理ボリュームの削除
lvremove lv경로
まず、[root@localhost ~]# umount /mnt/disk1
[root@localhost ~]# umount /mnt/disk2
[root@localhost ~]# lvremove /dev/mapper/vg0-lv0[23]
Do you really want to remove active logical volume vg0/lv02? [y/n]: y
Logical volume "lv02" successfully removed
Do you really want to remove active logical volume vg0/lv03? [y/n]: y
Logical volume "lv03" successfully removed
アンインストールせずに削除すると、[root@localhost ~]# lvremove /dev/vg0/lv01
Logical volume vg0/lv01 contains a filesystem in use.
現在使用中のため削除できませんlvextend
論理ボリュームの拡張
lvextend lv경로 -r(파일시스템 확장)
[root@localhost ~]# lvextend -L +0.5G /dev/vg0/lv01 -r
Size of logical volume vg0/lv01 changed from 6.00 GiB (1536 extents) to 6.50 GiB (1664 extents).
Logical volume vg0/lv01 successfully resized.
meta-data=/dev/mapper/vg0-lv01 isize=512 agcount=6, agsize=262144 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1572864, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1572864 to 1703936
-rオプションを使用しない場合、ファイルシステムが非フォーマット=>df-Thと判断した場合、容量が増加していないことがわかります(スペースは拡張されていますが、ファイルシステムはフォーマットされていないため、使用可能なスペースとして認識できません).-rオプションを忘れました❗再拡張は必要ですか?仲介lvmコマンドに拡張できます
拡張xfsファイルシステム
# xfs_growfs [마운트 포인트]
[root@localhost ~]# xfs_growfs /mnt/disk1
拡張ext 4ファイルシステム# resize2fs [lv경로]
[root@localhost ~]# resize2fs /dev/vg0/lv02
なぜlvreduceを推奨しないのですか?縮小範囲を特定できません->既存のデータが破損する可能性があります
Reference
この問題について(15/120), 我々は、より多くの情報をここで見つけました https://velog.io/@numerok/15120テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol