LVM逻辑卷

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVM逻辑卷相关的知识,希望对你有一定的参考价值。

一、LVM(上)
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。
LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。(来自百度百科)
LVM创建顺序:物理分区---物理卷---巻组(物理卷的集合)----逻辑卷---格式化-----挂载到系统
技术分享图片
1、准备磁盘分区
fdisk /dev/sdb
使用 n 创建3个新分区,为1G
使用 t 改变分区类型为8e (LVM)
使用fdisk -l 查看创建的分区情况:
[[email protected] ~]# fdisk -l
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 8e Linux LVM
/dev/sdb2 2099200 4196351 1048576 8e Linux LVM
/dev/sdb3 4196352 6293503 1048576 8e Linux LVM

2、准备物理卷
使用 pvcreate命令创建物理卷:
[[email protected] ~]# pvcreate /dev/sdb1
技术分享图片
如果没报错,请忽略。如果运行pvcreate /dev/sdb1报如图错误,则可以执行下: partprobe命令,这个命令可以自动生成/dev/sdb1文件

[[email protected] ~]# pvcreate /dev/sdb1
WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/sdb1.
Physical volume "/dev/sdb1" successfully created.
[[email protected] ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[[email protected] ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
物理卷创建完成。

(扩展:使用 pvcreate命令需要yum install -y lvm2,如果不知道yum后面跟的包名称,可以使用命令: yum provides "/pvcreate"查找需要安装包的名称)
[[email protected] ~]# pvcreate /dev/sdb1
-bash: pvcreate: command not found
[[email protected] ~]# yum provides "/
pvcreate"
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirrors.sohu.com
  • extras: mirror.bit.edu.cn
  • updates: mirrors.sohu.com
    base/7/x86_64/filelists_db | 6.7 MB 00:01
    extras/7/x86_64/filelists_db | 709 kB 00:00
    updates/7/x86_64/filelists_db | 4.2 MB 00:20
    1:bash-completion-2.1-6.el7.noarch : Programmable completion for Bash
    Repo : base
    Matched from:
    Filename : /usr/share/bash-completion/completions/pvcreate

7:lvm2-2.02.171-8.el7.x86_64 : Userland logical volume management tools
Repo : base
Matched from:
Filename : /usr/sbin/pvcreate
然后再使用yum install -y lvm2命令安装

二、LVM(中)
1、查看物理卷命令:
[[email protected] ~]# pvdisplay
或者 pvs命令可以更直观的查看
[[email protected] ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 1.00g 1.00g
/dev/sdb2 lvm2 --- 1.00g 1.00g
/dev/sdb3 lvm2 --- 1.00g 1.00g

2、创建巻组
vgcreate 巻组名字 对应的物理卷
[[email protected] ~]# vgcreate vg1 /dev/sdb1 /dev/sdb2
Volume group "vg1" successfully created

查看巻组信息:
[[email protected] ~]# vgdisplay
或者 vgs查看巻组
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 1.99g 1.99g

删除巻组命令:vgremove

3、创建完巻组之后,创建逻辑卷
[[email protected] ~]# lvcreate -L 100M -n lv1 vg1
Logical volume "lv1" created.

4、格式化
[[email protected] ~]# mkfs.ext4 /dev/vg1/lv1

5、挂载
[[email protected] ~]# mount /dev/vg1/lv1 /mnt/

6、扩容逻辑卷:
作用:能够很方便的扩容和缩容
命令格式: lvresize -L 新的扩容大小 逻辑卷

lvresize -L 200M /dev/vg1/lv1 重新设置卷大小
[[email protected] ~]# umount /mnt
[[email protected] ~]# lvresize -L 200M /dev/vg1/lv1 //
New size (50 extents) matches existing size (50 extents).

e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext4执行)
[[email protected] ~]# e2fsck -f /dev/vg1/lv1
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/vg1/lv1: 13/25688 files (7.7% non-contiguous), 8899/102400 blocks

resize2fs /dev/vg1/lv1 更新逻辑卷信息(ext4执行)
如果不更新,可能导致在挂载的时候识别新的大小
[[email protected] ~]# resize2fs /dev/vg1/lv1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 204800 blocks long.

7、缩减逻辑卷(xfs不支持)
先umount
[[email protected] ~]# umount /mnt/

e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)
[[email protected] ~]# e2fsck -f /dev/vg1/lv1
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/vg1/lv1: 13/49400 files (7.7% non-contiguous), 11887/204800 blocks

resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)
[[email protected] ~]# resize2fs /dev/vg1/lv1 100M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 102400 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 102400 blocks long.

lvresize -L 100M /dev/vg1/lv1 重新设置卷大小
[[email protected] ~]# lvresize -L 100M /dev/vg1/lv1
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg1/lv1? [y/n]: y
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
Logical volume vg1/lv1 successfully resized.

使用 lvdisplay 或 lvs 命令查看逻辑卷大小
[[email protected] ~]# lvdisplay
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID iHRmSs-fVEk-nr3D-0FwQ-M4FR-Emcm-Aqi3NT
LV Write Access read/write
LV Creation host, time linux-01, 2018-04-11 22:57:02 +0800
LV Status available

open 0

LV Size 100.00 MiB //大小显示100M
Current LE 25
Segments 1
Allocation inherit
Read ahead sectors auto

  • currently set to 8192
    Block device 253:0
    [[email protected] ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    lv1 vg1 -wi-a----- 100.00m //大小显示100M

8、xfs扩容缩容(不需要卸载)
首先重新格式化:
[[email protected] ~]# mkfs.xfs -f /dev/vg1/lv1
meta-data=/dev/vg1/lv1 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

扩容到300M
[[email protected] ~]# lvresize -L 300M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 100.00 MiB (25 extents) to 300.00 MiB (75 extents).
Logical volume vg1/lv1 successfully resized.
扩容完lvs命令查看是否成功
[[email protected] ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 300.00m

操作完之后xfs文件系统需要执行: xfs_growfs /dev/vg1/lv1
[[email protected] ~]# xfs_growfs /dev/vg1/lv1
meta-data=/dev/mapper/vg1-lv1 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 25600 to 76800

df -h查看
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 28G 1.5G 27G 6% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.8M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 97M 100M 50% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg1-lv1 297M 5.5M 292M 2% /mnt //xfs文件系统已经扩容成功

三、LVM(下)
扩展巻组
扩展巻组命令:vgextend vg1 /dev/sdb3
[[email protected] ~]# vgextend vg1 /dev/sdb3
Volume group "vg1" successfully extended
查看扩展巻组后的巻组大小: vgdisplay 或者 vgs 命令都可以查看
[[email protected] ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size <2.99 GiB
PE Size 4.00 MiB
Total PE 765
Alloc PE / Size 75 / 300.00 MiB
Free PE / Size 690 / <2.70 GiB
VG UUID I6GubU-Jycp-3x7k-bjLW-Rhm3-zpwf-yFU68Q
[[email protected] ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 3 1 0 wz--n- <2.99g <2.70g

lvresize -L 100M /dev/vg1/lv1 重新设置卷大小

四、磁盘故障小案例
如果挂载完磁盘重启服务器出现有报错情况,有可能是挂载有问题,需要 vi /etc/fstab 文件,把里面最后一行删掉,保存退出再重启就没有问题了

以上是关于LVM逻辑卷的主要内容,如果未能解决你的问题,请参考以下文章

lvm逻辑卷技术

lvm逻辑卷操作

LVM逻辑卷:创建LVM分区实例

LVM逻辑卷管理--在线扩容逻辑卷与卷组容量缩减逻辑卷快照

逻辑卷管理(LVM)

LVM 逻辑卷管理