share-image
ESC

Linux 使用lvm 管理磁盘

创建和查看 PV

1.创建 pv

[root@localhost opt]# pvcreate /dev/sdb{1,2,3,4}
WARNING: dos signature detected on /dev/sdb1 at offset 510. Wipe it? [y/n]: y
Wiping dos signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb4" successfully created.

2.查看 pv

[root@localhost opt]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- 19.00g 0
/dev/sdb1 lvm2 --- 5.00g 5.00g
/dev/sdb2 lvm2 --- 5.00g 5.00g
/dev/sdb3 lvm2 --- 5.00g 5.00g
/dev/sdb4 lvm2 --- 5.00g 5.00g

3.查看详细信息

[root@localhost opt]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size 19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID X5WbXW-4qUV-MoYO-1ws3-3y6J-36tz-M5CxPM

"/dev/sdb1" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID emcwLR-IKkM-9R2G-1rEF-y94t-GLrT-SGk2Qk

"/dev/sdb3" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb3
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 6gwwXq-vzJD-wxOY-ACAj-mvTI-wyh5-AAZRdp

"/dev/sdb2" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID btswJD-I59p-xxWQ-VyLr-Gobc-rVdJ-MqupEG

"/dev/sdb4" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb4
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID RSP9tx-kWci-Yc9r-P6HF-yUxZ-p3ck-h2oM9g

这里主要观察 PE Size,可以看到是0

创建 vg

1.创建 vg,并且使用-s参数指定 PE 的大小

[root@localhost opt]# vgcreate -s 8M myvg /dev/sdb{1,2,3,4}
Volume group "myvg" successfully created

2.使用 pvs 查看基本信息

[root@localhost opt]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- 19.00g 0
/dev/sdb1 myvg lvm2 a-- 4.99g 4.99g
/dev/sdb2 myvg lvm2 a-- 4.99g 4.99g
/dev/sdb3 myvg lvm2 a-- 4.99g 4.99g
/dev/sdb4 myvg lvm2 a-- 4.99g 4.99g

3.查看详细信息

[root@localhost opt]# pvdisplay
--- Physical volume ---
PV Name /dev/sdb1
VG Name myvg
PV Size 5.00 GiB / not usable 8.00 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 639
Free PE 639
Allocated PE 0
PV UUID emcwLR-IKkM-9R2G-1rEF-y94t-GLrT-SGk2Qk

--- Physical volume ---
PV Name /dev/sdb2
VG Name myvg
PV Size 5.00 GiB / not usable 8.00 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 639
Free PE 639
Allocated PE 0
PV UUID btswJD-I59p-xxWQ-VyLr-Gobc-rVdJ-MqupEG

--- Physical volume ---
PV Name /dev/sdb3
VG Name myvg
PV Size 5.00 GiB / not usable 8.00 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 639
Free PE 639
Allocated PE 0
PV UUID 6gwwXq-vzJD-wxOY-ACAj-mvTI-wyh5-AAZRdp

--- Physical volume ---
PV Name /dev/sdb4
VG Name myvg
PV Size 5.00 GiB / not usable 6.98 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 639
Free PE 639
Allocated PE 0
PV UUID RSP9tx-kWci-Yc9r-P6HF-yUxZ-p3ck-h2oM9g

--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size 19.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID X5WbXW-4qUV-MoYO-1ws3-3y6J-36tz-M5CxPM


4.查看指定设备

[root@localhost opt]# pvdisplay /dev/sdb3
--- Physical volume ---
PV Name /dev/sdb3
VG Name myvg
PV Size 5.00 GiB / not usable 8.00 MiB
Allocatable yes
PE Size 8.00 MiB
Total PE 639
Free PE 639
Allocated PE 0
PV UUID 6gwwXq-vzJD-wxOY-ACAj-mvTI-wyh5-AAZRdp

创建和使用 lv

1.创建 lv,名称为 linux,大小为5g 从刚才创建的 myvg 卷组中拿出5g 的大小创建逻辑卷。

[root@localhost opt]# lvcreate -L 5G -n linux myvg
WARNING: LVM2_member signature detected on /dev/myvg/linux at offset 536. Wipe it? [y/n]: y
Wiping LVM2_member signature on /dev/myvg/linux.
Logical volume "linux" created.

2.查看基本信息

[root@localhost opt]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-a----- 5.00g

3.查看详细信息

[root@localhost opt]# lvdisplay
--- Logical volume ---
LV Path /dev/myvg/linux
LV Name linux
VG Name myvg
LV UUID 1OmSKi-VHPj-Tbnb-P4IV-2hAQ-u4Il-hc1yl2
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-22 10:49:03 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 640
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

--- Logical volume ---
LV Path /dev/cl/swap
LV Name swap
VG Name cl
LV UUID gQsXBL-tMOS-fzaJ-9Rml-U3mv-ubAF-XNc5og
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-18 09:42:07 +0800
LV Status available
# open 2
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/cl/root
LV Name root
VG Name cl
LV UUID tYWq97-Irfv-N3bk-ilqa-SSMH-lZij-G7M9ey
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-18 09:42:07 +0800
LV Status available
# open 1
LV Size 17.00 GiB
Current LE 4351
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

4.指定设备查看

[root@localhost opt]# lvdisplay /dev/myvg/linux
--- Logical volume ---
LV Path /dev/myvg/linux
LV Name linux
VG Name myvg
LV UUID 1OmSKi-VHPj-Tbnb-P4IV-2hAQ-u4Il-hc1yl2
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2017-04-22 10:49:03 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 640
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

使用创建的 lv

1.格式化

[root@localhost opt]# mkfs.xfs /dev/
Display all 177 possibilities? (y or n)
[root@localhost opt]# mkfs.xfs /dev/myvg/linux
meta-data=/dev/myvg/linux isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

2.挂载

[root@localhost opt]# mkdir /data
[root@localhost opt]# mount /dev/myvg/linux /data/
[root@localhost opt]# cd /data/
[root@localhost data]# ls

增加容量

lvm 支持在线缩小。

1.先查看 lv 大小

[root@localhost data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-ao---- 5.00g

2.然后增加5g

[root@localhost data]# lvextend -L +5G /dev/myvg/linux
Size of logical volume myvg/linux changed from 5.00 GiB (640 extents) to 10.00 GiB (1280 extents).
Logical volume myvg/linux successfully resized.
[root@localhost data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-ao---- 10.00g

3.查看增加后的容量

[root@localhost data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-ao---- 10.00g

使用lvresize 增加 lv 大小
1.查看目前的 lvs 大小


[root@localhost data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-ao---- 5.00g
lv1 myvg -wi-ao---- 11.00g

2.目前11g,增加到12g,这里的-L 后大小一定要比当前的大小大,否则则是缩小逻辑卷的大小,另外也可以使用+来增加。

[root@localhost data]# lvresize -L 12G /dev/myvg/lv1
Size of logical volume myvg/lv1 changed from 11.00 GiB (2816 extents) to 12.00 GiB (3072 extents).
Logical volume myvg/lv1 successfully resized.

3.查看 lvs 大小。

[root@localhost data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-ao---- 5.00g
lv1 myvg -wi-ao---- 12.00g

4.查看目前挂载的目录,发现还是11G

[root@localhost data]# df -h /ext4/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-lv1 11G 25M 11G 1% /ext4

5.使用resize2fs 刷新磁盘

[root@localhost data]# resize2fs /dev/myvg/lv1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/lv1 is mounted on /ext4; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/myvg/lv1 is now 3145728 blocks long.

6.再次查看

[root@localhost data]# df -h /ext4/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-lv1 12G 25M 12G 1% /ext4

增加后一定要使用resize2fs 刷新磁盘,否则容量不正确。

减小容量

1.查看容量

[root@localhost data]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
linux myvg -wi-ao---- 10.00g

2.减小容量

注意:缩小容量前一定要先卸载对应的逻辑卷

先查看

[root@localhost /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
lv_xfs myvg -wi-a----- 7.00g
mylv1 myvg -wi-ao---- 5.00g

查看挂载的容量

[root@localhost /]# df -h /mnt/data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-mylv1 4.8G 20M 4.6G 1% /mnt/data

先缩小文件系统的大小,提示需要先 umount

[root@localhost /]# resize2fs /dev/myvg/mylv1 400M
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/myvg/mylv1 is mounted on /mnt/data; on-line resizing required
resize2fs: On-line shrinking not supported

取消挂载

[root@localhost /]# umount /mnt/data

再次运行刚才的命令,提示需要运行 e2fsck -f /dev/myvg/mylv1

[root@localhost /]# resize2fs /dev/myvg/mylv1 400M
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/myvg/mylv1' first.

执行e2fsck -f /dev/myvg/mylv1

[root@localhost /]# e2fsck -f /dev/myvg/mylv1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv1: 11/327680 files (0.0% non-contiguous), 58462/1310720 blocks

再次执行刚才的命令

[root@localhost /]# resize2fs /dev/myvg/mylv1 400M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv1 to 102400 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 102400 blocks long.

OK,成功了,然后在缩小逻辑卷

[root@localhost /]# lvresize -L 400M /dev/myvg/mylv1
WARNING: Reducing active logical volume to 400.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv1? [y/n]: y
Size of logical volume myvg/mylv1 changed from 5.00 GiB (1280 extents) to 400.00 MiB (100 extents).
Logical volume myvg/mylv1 successfully resized.

查看 lv 的大小,已经是400M 了

[root@localhost /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g
lv_xfs myvg -wi-a----- 7.00g
mylv1 myvg -wi-a----- 400.00m

重新挂载

[root@localhost /]# mount /dev/myvg/mylv1 /mnt/data

查看挂载后的大小,一切正常

[root@localhost /]# df -h /mnt/data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-mylv1 264M 7.6M 229M 4% /mnt/data

4.xfs 格式扩容或减小挂载出错

[root@localhost /]# resize2fs /dev/myvg/lv_xfs
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/myvg/lv_xfs
Couldn't find valid filesystem superblock.
#xfs 格式需要使用 xfs_growfs命令
[root@localhost /]# xfs_growfs /dev/myvg/lv_xfs
meta-data=/dev/mapper/myvg-lv_xfs isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=1310720, 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 1310720 to 1835008
[root@localhost /]# clear
[root@localhost /]# df -h /mnt/data1/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-lv_xfs 7.0G 33M 7.0G 1% /mnt/data1
[root@localhost /]#



删除

删除的顺序是先 lv–> vg —> pv 的顺序

删除 lv

1.先卸载

[root@localhost /]# umount /dev/myvg/linux

2.删除 lv

[root@localhost /]# lvremove /dev/myvg/linux
Do you really want to remove active logical volume myvg/linux? [y/n]: y
Logical volume "linux" successfully removed

3.查看 lv

[root@localhost /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root cl -wi-ao---- 17.00g
swap cl -wi-ao---- 2.00g

删除 vg

1.删除 vg

[root@localhost /]# vgremove myvg
Volume group "myvg" successfully removed

2.查看 vg

[root@localhost /]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz--n- 19.00g 0

删除 pv

1.删除 pv

[root@localhost /]# pvremove /dev/sdb{1,2,3,4}
Labels on physical volume "/dev/sdb1" successfully wiped.
Labels on physical volume "/dev/sdb2" successfully wiped.
Labels on physical volume "/dev/sdb3" successfully wiped.
Labels on physical volume "/dev/sdb4" successfully wiped.

2.查看 pv

[root@localhost /]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- 19.00g 0

扩充 VG

1.先分区

[root@localhost /]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x07c19514

Device Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 5 Extended
/dev/sdc5 4096 1028095 512000 83 Linux

Command (m for help): n
Partition type:
p primary (0 primary, 1 extended, 3 free)
l logical (numbered from 5)
Select (default p): l
Adding logical partition 6
First sector (1030144-41943039, default 1030144):
Using default value 1030144
Last sector, +sectors or +size{K,M,G} (1030144-41943039, default 41943039):
Using default value 41943039
Partition 6 of type Linux and of size 19.5 GiB is set

Command (m for help): p

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x07c19514

Device Boot Start End Blocks Id System
/dev/sdc1 2048 41943039 20970496 5 Extended
/dev/sdc5 4096 1028095 512000 83 Linux
/dev/sdc6 1030144 41943039 20456448 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

2.添加 pv

[root@localhost /]# pvcreate /dev/sdc6
Physical volume "/dev/sdc6" successfully created.

3.查看 pv

[root@localhost /]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- 19.00g 0
/dev/sdb1 myvg lvm2 a-- 10.00g 9.61g
/dev/sdb2 myvg lvm2 a-- 10.00g 3.00g
/dev/sdc6 lvm2 --- 19.51g 19.51g

4.扩充 vg,将 sdc6的容量添加到 vg 卷组 myvg 中


[root@localhost /]# vgextend myvg /dev/sdc6
Volume group "myvg" successfully extended
[root@localhost /]# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz--n- 19.00g 0
myvg 3 2 0 wz--n- 39.50g 32.11g

重读分区表

如图分区后提示分区不存在,则输入partprobe 刷新分区表

[root@localhost /]# partprobe
文章作者:阿文
文章链接: https://www.awen.me/post/1877290567.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2017-06-14 发布,已超过半年(3151天),请注意甄别内容是否已过期。