LVM是Logical Volume Manager(逻辑卷管理)的简写,LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。支持动态扩充磁盘空间。当系统空间不足而加入新的磁盘时,不必把用户的数据从原硬盘迁移到新硬盘, 而只需把新硬盘加入到卷组并扩充逻辑卷即可。
配置管理操作实验
首先从空的硬盘sdb上创建两个分区sdb1 1G, sdb2 2G。.
Device Boot Start End Blocks Id System /dev/sdb1 1 132 1060258+ 83 Linux /dev/sdb2 133 394 2104515 83 Linux
1)创建逻辑卷
pvcreate /dev/sdb1 /dev/sdb2 //创建物理卷
[root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created
pvdisplay //可以列出已经创建的物理卷
[root@localhost ~]# pvdisplay "/dev/sdb1" is a new physical volume of "1.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID o3pjpH-JQ9a-7f3U-HNpF-F3Oj-RdkR-AMdbWe "/dev/sdb2" is a new physical volume of "2.01 GiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 2.01 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID do64fn-wLrN-kEYG-IZzr-woZM-OZYU-2Nk44g
vgcreate vgdata /dev/sdb1 /dev/sdb2 //创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组
[root@localhost ~]# vgcreate vgdata /dev/sdb1 /dev/sdb2 Volume group "vgdata" successfully created
vgdisplay //可以列出已经建好的卷组
# 默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。
[root@localhost ~]# vgdisplay --- Volume group --- VG Name vgdata 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 3.01 GiB PE Size 4.00 MiB Total PE 771 Alloc PE / Size 0 / 0 Free PE / Size 771 / 3.01 GiB VG UUID 3E4JrK-HH9M-ZVdJ-5Lys-7K04-QNTD-pFv0nK
lvcreate -L 500M -n lvdata1 vgdata //分割500M给新的逻辑卷lvdata1
[root@localhost ~]# lvcreate -L 500M -n lvdata1 vgdata Logical volume "lvdata1" created
lvdisplay //列出当前的逻辑卷
[root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/vgdata/lvdata1 LV Name lvdata1 VG Name vgdata LV UUID ejFuNL-FrPB-0dvl-oUnZ-LOYS-udcR-DNLIgm LV Write Access read/write LV Creation host, time localhost.localdomain, 2015-03-25 18:01:23 +0800 LV Status available # open 0 LV Size 500.00 MiB Current LE 125 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
mkfs.ext4 /dev/vgdata/lvdata1 //格式化逻辑卷
[root@localhost ~]# mkfs.ext4 /dev/vgdata/lvdata1 mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=1024 (log=0) 分块大小=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 128016 inodes, 512000 blocks 25600 blocks (5.00%) reserved for the super user 第一个数据块=1 Maximum filesystem blocks=67633152 63 block groups 8192 blocks per group, 8192 fragments per group 2032 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 正在写入inode表: 完成 Creating journal (8192 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every 36 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
mount /dev/vgdata/lvdata1 /wangchengjun //挂载逻辑卷
[root@localhost /]# mount /dev/vgdata/lvdata1 /wangchengjun [root@localhost /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1.3G 16G 8% / tmpfs 504M 0 504M 0% /dev/shm /dev/sda1 194M 25M 160M 14% /boot /dev/mapper/vgdata-lvdata1 485M 11M 449M 3% /wangchengjun
2) 扩展逻辑卷
逻辑卷lvdata1不够用了,我们如何给他增加空间呢?
lvextend –L +500M /dev/vgdata/lvdata1 //给lvdata1增加500M空间。
[root@localhost /]# lvextend -L +500M /dev/vgdata/lvdata1 Size of logical volume vgdata/lvdata1 changed from 500.00 MiB (125 extents) to 1000.00 MiB (250 extents). Logical volume lvdata1 successfully resized
resize2fs /dev/vgdata/lvdata1 //同步文件系统
[root@localhost /]# resize2fs /dev/vgdata/lvdata1 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/vgdata/lvdata1 is mounted on /wangchengjun; on-line resizing required old desc_blocks = 2, new_desc_blocks = 4 Performing an on-line resize of /dev/vgdata/lvdata1 to 1024000 (1k) blocks. The filesystem on /dev/vgdata/lvdata1 is now 1024000 blocks long.
3)扩展卷组
当卷组不够用的情况下,我们也是可以扩展卷组的。我们再创建一个新的分区叫做/dev/sdb3.
vgextend vgdata /dev/sdb3 //把sdb3加入到卷组vgdata中
[root@localhost /]# vgextend vgdata /dev/sdb3 Physical volume "/dev/sdb3" successfully created Volume group "vgdata" successfully extended
4)减少逻辑卷大小
卸载:umount /wangchengjun
e2fsck 检测剩余空间:e2fsck -f /dev/vgdata/lvdata1
[root@localhost /]# e2fsck -f /dev/vgdata/lvdata1 e2fsck 1.41.12 (17-May-2010) 第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/vgdata/lvdata1: 11/327680 files (0.0% non-contiguous), 55935/1310720 blocks
resize2fs 同步文件系统:resize2fs /dev/vgdata/lvdata1 3G
将文件系统系统减少到3G
[root@localhost /]# resize2fs /dev/vgdata/lvdata1 3G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vgdata/lvdata1 to 786432 (4k) blocks. The filesystem on /dev/vgdata/lvdata1 is now 786432 blocks long.
使用lvreduce命令将逻辑卷减少:lvreduce -L 3G /dev/vgdata/lvdata1
将逻辑卷减少到3G;
[root@localhost /]# lvreduce -L 3G /dev/vgdata/lvdata1 WARNING: Reducing active logical volume to 3.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lvdata1? [y/n]: y Size of logical volume vgdata/lvdata1 changed from 5.00 GiB (1280 extents) to 3.00 GiB (768 extents). Logical volume lvdata1 successfully resized
注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
5) 当磁盘或分区损坏时,如何转移数据
pvmove 转移空间数据 --> vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去 --> pvremove命令将即将坏的磁盘或者分区从系统中删除掉 --> 拆除或修复磁盘
pvmove /dev/sdb1
[root@Centos1 ~]# pvmove /dev/sdc1 /dev/sdc1: Moved: 2.0% /dev/sdc1: Moved: 100.0%
vgreduce vgdata /dev/sdb1
[root@localhost /]# vgreduce vgdata /dev/sdb1 Removed "/dev/sdb1" from volume group "vgdata"
pvremove /dev/sdb1
[root@localhost /]# pvremove /dev/sdb1 Labels on physical volume "/dev/sdb1" successfully wiped
6) 删除整个逻辑卷
umount卸载逻辑卷 --> 修改配置文件/etc/fstab(若是之前更改过) --> lvremove 删除逻辑卷lvdata1 --> vgremove 删除卷组vgdata --> pvremove 将物理卷转化成普通分区
umount /dev/vgdata/lvdata1
lvremove /dev/vgdata/lvdata1
[root@localhost /]# lvremove /dev/vgdata/lvdata1 Do you really want to remove active logical volume lvdata1? [y/n]: y Logical volume "lvdata1" successfully removed
vgremove vgdata
[root@localhost /]# vgremove vgdata Volume group "vgdata" successfully removed
pvremove /dev/sdb2
[root@localhost /]# pvremove /dev/sdb2 Labels on physical volume "/dev/sdb2" successfully wiped
转载于:https://blog.51cto.com/onelinux/1624121