Linux 逻辑卷逻辑卷的创建,扩展,缩减
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 逻辑卷逻辑卷的创建,扩展,缩减相关的知识,希望对你有一定的参考价值。
Linux 逻辑卷逻辑卷的创建,扩展,缩减
在生活中会遇到磁盘空间不足的情况,为了不影响Linux系统的正常使用,我们需要在线扩展和缩减逻辑卷大小。首先需要先了解一下LVM(Logical Volume Manager),它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。
基本的逻辑卷管理概念:
PE(Physical Extent)- 物理扩展块,是LVM的最小的存储块,也就是说我们的文件系统都是由写入PE来处理,有点类似于文件系统里的block。LVM默认使用4M的PE块,而LVM的VG最多仅能有65534个PE,因此默认LVNMVG会有4M*65534/(1024M/G)=256G,
PV(Physical Volume)- 物理卷,在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
VG(Volumne Group)- 卷用户组,建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理 系统工程中可以只有一个卷组,也可以拥有多个卷组。
LV(Logical Volume)- 逻辑卷,建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
关系如下:
写在最前
本文演示环境为centos 7.5,准备两块磁盘分别是5G、10G
一、LVM的制作过程
1.分区或增加新的硬盘
如果是分区,注意分区的ID设置为8e
#手动增加两块虚拟硬盘 [[email protected](yuaning) ~]# echo '- - -' > /sys/class/scsi_host/host2/scan [[email protected](yuaning) ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdk 8:160 0 10G 0 disk sdl 8:176 0 5G 0 disk sr0 11:0 1 1024M 0 rom #磁盘分区及转换为8e [[email protected](yuaning) ~]# fdisk /dev/sdk 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. Device does not contain a recognized partition table Building a new DOS disklabel with disk identifier 0x3d3051d3. Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-20971519, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G Partition 1 of type Linux and of size 1 GiB is set Command (m for help): t Selected partition 1 Hex code (type L to list all codes): 8e WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation. Changed type of partition 'FAT12' to 'Linux LVM' Command (m for help): p Disk /dev/sdk: 10.7 GB, 10737418240 bytes, 20971520 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: 0x3d3051d3 Device Boot Start End Blocks Id System /dev/sdk1 2048 2099199 1048576 8e Linux LVM Command (m for help): w [[email protected](yuaning) ~]# partprobe #激活分区
2.创建物理卷pv
先说说有关pv的命令:
pvcreate 将物理分区新建为pv
pvs/pvscan 查看系统里有pv的磁盘
pvdisplay 显示系统上面的pv状态
pvremove 删除pv
[[email protected](yuaning) ~]# pvcreate /dev/sdk #此处可以添加多个磁盘,和raid设备 Physical volume "/dev/sdk" successfully created. [[email protected](yuaning) ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- 32.00g 4.00m /dev/sdj1 testvg lvm2 a-- 4.98g 0 /dev/sdj2 testvg lvm2 a-- 4.98g 0 /dev/sdj3 testvg lvm2 a-- 4.98g 4.95g /dev/sdk lvm2 --- 10.00g 10.00g
3.创建卷组vg
有关vg的命令:
vgcreate [-s xM] vgName /dev/sd …… 新建vg,-s后面接pe的大小(可选),单位是M,G,可以放多块pv
vgextend 扩展vg,就是增加pv
vgs/vgscan 查看系统里有vg的磁盘
vgdisplay 显示系统上面的vg状态
vgremove 删除vg
vgreduce 在vg里删除pv
[[email protected](yuaning) ~]# vgcreate -s 16M vgcyn /dev/sdk Volume group "vgcyn" successfully created [[email protected](yuaning) ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 3 0 wz--n- 32.00g 4.00m testvg 3 1 0 wz--n- 14.95g 4.95g vgcyn 1 0 0 wz--n- 9.98g 9.98g
4.创建逻辑卷lv
有关lv的命令:
lvcreate -l pe num /-L size -n lvname vgName 新建lv,-l指定pe的个数!!!这里不是数量,-L指定容量,M,G
lvextend 增加容量
lvs/lvscan 查看系统里有lv的磁盘
lvdisplay 显示系统上面的lv状态
lvremove 删除lv
lvreduce 在lv里减少容量
[[email protected](yuaning) ~]# lvcreate -l 630 -n lvcyn vgcyn #lv的大小是630*16M=10080M Logical volume "lvcyn" created. [[email protected](yuaning) ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert app centos -wi-ao---- 20.00g root centos -wi-ao---- 10.00g swap centos -wi-ao---- 2.00g testlv testvg -wi-a----- 10.00g lvcyn vgcyn -wi-a----- 9.84g [[email protected](yuaning) ~]# mkfs.ext4 /dev/vgcyn/lvcyn #格式化 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 917504 inodes, 3670016 blocks 183500 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2151677952 112 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
二、LVM的在线扩展
分为两种情况:
第一种情况,需要扩展的pe数量,vg可以提供
[[email protected](yuaning) ~]# lvextend -L +100M /dev/vgcyn/lvcyn #将之前准备的vg里的剩余pe加进去 Rounding size to boundary between physical extents: 112.00 MiB. Size of logical volume vgcyn/lvcyn changed from 9.84 GiB (630 extents) to 9.95 GiB (637 extents). Logical volume vgcyn/lvcyn successfully resized. [[email protected](yuaning) ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert app centos -wi-ao---- 20.00g root centos -wi-ao---- 10.00g swap centos -wi-ao---- 2.00g testlv testvg -wi-a----- 10.00g lvcyn vgcyn -wi-a----- 9.95g [[email protected](yuaning) ~]# resize2fs /dev/vgcyn/lvcyn #更新文件系统的大小,即激活 [[email protected](yuaning) ~]# resize2fs -f /dev/vgcyn/lvcyn 500M #强制设置大小 [[email protected](yuaning) ~]# dump2fs /dev/vgcyn/lvcyn #查看ext系列文件系统
第二种情况,vg空间不够,需先扩展vg,扩展vg就是往vg中加pv
[[email protected](yuaning) ~]# vgextend vgcyn /dev/sdl #事先准备两块磁盘,现在将另一块加进去 Physical volume "/dev/sdl" successfully created. Volume group "vgcyn" successfully extended [[email protected](yuaning) ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 1 3 0 wz--n- 32.00g 4.00m testvg 3 1 0 wz--n- 14.95g 4.95g vgcyn 2 1 0 wz--n- <14.97g <5.02g [[email protected](yuaning) ~]# lvextend -L 14G /dev/vgcyn/lvcyn Size of logical volume vgcyn/lvcyn changed from 9.95 GiB (637 extents) to 14.00 GiB (896 extents). Logical volume vgcyn/lvcyn successfully resized. [[email protected](yuaning) ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert app centos -wi-ao---- 20.00g root centos -wi-ao---- 10.00g swap centos -wi-ao---- 2.00g testlv testvg -wi-a----- 10.00g lvcyn vgcyn -wi-a----- 14.00g
三、减小逻辑卷
缩减逻辑卷的时候,要事先卸载挂载的文件系统,然后减少逻辑卷的容量,然后重新挂载
#事先自行 umount [[email protected](yuaning) ~]# e2fsck -f /dev/vgcyn/lvcyn #强行检查文件系统 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/vgcyn/lvcyn: 11/917504 files (0.0% non-contiguous), 100612/3670016 blocks [[email protected](yuaning) ~]# resize2fs /dev/vgcyn/lvcyn 10G #缩减逻辑空间到10G resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vgcyn/lvcyn to 2621440 (4k) blocks. The filesystem on /dev/vgcyn/lvcyn is now 2621440 blocks long. [[email protected](yuaning) ~]# lvreduce -L 10G /dev/vgcyn/lvcyn #缩减逻辑空间到10G WARNING: Reducing active logical volume to 10.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vgcyn/lvcyn? [y/n]: y Size of logical volume vgcyn/lvcyn changed from 14.00 GiB (896 extents) to 10.00 GiB (640 extents). Logical volume vgcyn/lvcyn successfully resized. [[email protected](yuaning) ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert app centos -wi-ao---- 20.00g root centos -wi-ao---- 10.00g swap centos -wi-ao---- 2.00g testlv testvg -wi-a----- 10.00g lvcyn vgcyn -wi-a----- 10.00g #成功缩减 [[email protected](yuaning) ~]# ls #最后检查一下,文件又没丢失。
至此,Linux的逻辑卷的创建,扩展,缩减都已完成。
以上是关于Linux 逻辑卷逻辑卷的创建,扩展,缩减的主要内容,如果未能解决你的问题,请参考以下文章