linux LVM逻辑卷的创建,扩容,缩减和删除

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_27281257/article/details/81603410

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

为什么要使用LVM?

在日常工作或者学习中,随着电脑的不断被使用,我们的磁盘空间可能会越来越小,这时候,我们不能直接更换大硬盘,因为硬盘有价,数据无价,这时候我们就可以使用LVM,LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本,LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

LVM工作机制?

LVM就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

逻辑卷管理概念?

 物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。

关系如下:

pe_vg

 

具体操作:

1:检查系统中是否安装了LVM管理工具

# rpm -qa|grep lvm


 
 
  1. [ root@localhost ~] # rpm -qa |grep lvm
  2. lvm2 -2.02 .177 -4.el7.x86_64
  3. llvm- private -5.0 .0 -3.el7.x86_64
  4. lvm2-libs -2.02 .177 -4.el7.x86_64
  5. [ root@localhost ~] #

:2:如果未安装,则使用yum 方式安装

# yum install lvm*

# rpm -qa|grep lvm

手动添加两个硬盘:sdl 20G sdh 1G

1:先开始创建物理卷PV:

基本PV命令:

 pvcreate 将物理分区新建为pv

              pvs/pvscan 查看系统里有pv的磁盘

              pvdisplay 显示系统上面的pv状态

              pvremove 删除pv

准备使用:  两个磁盘:/dev/sdl 以及 、/dev/sdh 来完成LVM


 
 
  1. [root@localhost ~] # pvcreate /dev/sdl /dev/sdh
  2. Physical volume "/dev/sdl" successfully created.
  3. Physical volume "/dev/sdh" successfully created.
  4. [root@localhost ~] #

使用pvs查看新建的PV


 
 
  1. [root@localhost ~] # pvs
  2. PV VG Fmt Attr PSize PFree
  3. /dev/sdh lvm2 --- 1.00g 1.00g
  4. /dev/sdl lvm2 --- 20.00g 20.00g
  5. [root@localhost ~] #

2:创建卷组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

创建vgqjc 并查看:


 
 
  1. [ root@localhost ~] # vgcreate -s 16M vgqjc /dev/sdl
  2. Volume group "vgqjc" successfully created
  3. [ root@localhost ~] # vgs
  4. VG #PV #LV #SN Attr VSize VFree
  5. vgqjc 1 0 0 wz--n- 19.98g 19.98g
  6. [ root@localhost ~] #

创建逻辑卷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里减少容量

创建lvqjc,并查看:


 
 
  1. [root@localhost ~] # lvcreate -l 512 -n lvqjc vgqjc
  2. WARNING: ext4 signature detected on /dev/vgqjc/lvqjc at offset 1080. Wipe it? [ y/n]: y
  3. Wiping ext4 signature on /dev/vgqjc /lvqjc.
  4. Logical volume "lvqjc" created.
  5. [root@localhost ~]# lvs
  6. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  7. lvqjc vgqjc -wi-a----- 8.00g
  8. [root@localhost ~]#

格式化新建的LV


 
 
  1. [root@localhost ~] # mkfs.ext4 /dev/vgqjc/lvqjc
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. Filesystem label=
  4. OS type: Linux
  5. Block size=4096 ( log=2)
  6. Fragment size=4096 ( log=2)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 524288 inodes, 2097152 blocks
  9. 104857 blocks (5.00%) reserved for the super user
  10. First data block=0
  11. Maximum filesystem blocks=2147483648
  12. 64 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
  17. Allocating group tables: done
  18. Writing inode tables: done
  19. Creating journal (32768 blocks): done
  20. Writing superblocks and filesystem accounting information: done
  21. [root@localhost ~] #

挂载使用:


 
 
  1. [ root@localhost ~] # mount /dev/vgqjc/lvqjc /mnt
  2. [ root@localhost ~] # df
  3. Filesystem 1K-blocks Used Available Use% Mounted on
  4. /dev/sda5 20754432 4050424 16704008 20% /
  5. devtmpfs 483088 0 483088 0% /dev
  6. tmpfs 498976 0 498976 0% /dev/shm
  7. tmpfs 498976 8836 490140 2% /run
  8. tmpfs 498976 0 498976 0% /sys/fs/cgroup
  9. /dev/sda2 10475520 116032 10359488 2% /app
  10. /dev/sda1 201380 135436 65944 68% /boot
  11. tmpfs 99796 4 99792 1% /run/user/ 42
  12. tmpfs 99796 32 99764 1% /run/user/ 1000
  13. /dev/sr0 9176232 9176232 0 100% /run/media/qijunchao/CentOS 7 x86_64
  14. /dev/mapper/vgqjc-lvqjc 8125880 36852 7653216 1% /mnt
  15. [ root@localhost ~] #

下面我们将对LVM进行扩容和缩减操作,所以向/mnt中写入测试数据以验证LVM 的磁盘动态管理。

# touch /mnt/qjc

二、LVM的在线扩展  

        分为两种情况:

            第一种情况,需要扩展的pe数量,vg可以提供


 
 
  1. [root@localhost ~] # lvs
  2. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  3. lvqjc vgqjc -wi-ao---- 8.00g
  4. lvtest vgtest -wi-ao---- 160.00 m
  5. [root@localhost ~] # lvextend -L +100M /dev/vgtest/lvtest
  6. Size of logical volume vgtest/lvtest changed from 160.00 MiB ( 40 extents) to 260.00 MiB ( 65 extents).
  7. Logical volume vgtest/lvtest successfully resized.
  8. [root@localhost ~] # lvs
  9. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  10. lvqjc vgqjc -wi-ao---- 8.00g
  11. lvtest vgtest -wi-ao---- 260.00 m
  12. [root@localhost ~] #

查看实际的磁盘容量,发现并没改变,需要对文件系统进行扩容

 resize2fs /dev/vgtest/lv/test


 
 
  1. [ root@localhost ~] # df -Th
  2. Filesystem Type Size Used Avail Use% Mounted on
  3. /dev/sda5 xfs 20G 3.9G 16G 20% /
  4. devtmpfs devtmpfs 472M 0 472M 0% /dev
  5. tmpfs tmpfs 488M 0 488M 0% /dev/shm
  6. tmpfs tmpfs 488M 8.7M 479M 2% /run
  7. tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup
  8. /dev/sda2 xfs 10G 114M 9.9G 2% /app
  9. /dev/sda1 xfs 197M 133M 65M 68% /boot
  10. tmpfs tmpfs 98M 4.0K 98M 1% /run/user/ 42
  11. tmpfs tmpfs 98M 32K 98M 1% /run/user/ 1000
  12. /dev/sr0 iso9660 8.8G 8.8G 0 100% /run/media/qijunchao/CentOS 7 x86_64
  13. /dev/mapper/vgtest-lvtest ext4 151M 1.6M 139M 2% /mnt
  14. [ root@localhost ~] # resize2fs /dev/vgtest/lvtest
  15. resize2fs 1.42 .9 ( 28-Dec -2013)
  16. Filesystem at /dev/vgtest/lvtest is mounted on /mnt; on-line resizing required
  17. old_desc_blocks = 2, new_desc_blocks = 3
  18. The filesystem on /dev/vgtest/lvtest is now 266240 blocks long.
  19. [ root@localhost ~] # df -Th
  20. Filesystem Type Size Used Avail Use% Mounted on
  21. /dev/sda5 xfs 20G 3.9G 16G 20% /
  22. devtmpfs devtmpfs 472M 0 472M 0% /dev
  23. tmpfs tmpfs 488M 0 488M 0% /dev/shm
  24. tmpfs tmpfs 488M 8.7M 479M 2% /run
  25. tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup
  26. /dev/sda2 xfs 10G 114M 9.9G 2% /app
  27. /dev/sda1 xfs 197M 133M 65M 68% /boot
  28. tmpfs tmpfs 98M 4.0K 98M 1% /run/user/ 42
  29. tmpfs tmpfs 98M 32K 98M 1% /run/user/ 1000
  30. /dev/sr0 iso9660 8.8G 8.8G 0 100% /run/media/qijunchao/CentOS 7 x86_64
  31. /dev/mapper/vgtest-lvtest ext4 248M 2.1M 231M 1% /mnt
  32. [ root@localhost ~] #

resize2fs /dev/vgtest/lvtest  #更新文件系统的大小,即激活

resize2fs -f /dev/vgtest/lvtest 500M #强制设置大小

dump2fs /dev/vgtest/lvtest  #查看ext系列文件系统

第二种情况,vg空间不够,需先扩展vg,扩展vg就是往vg中加pv

新建pv, 进行扩容,再查看


 
 
  1. [ root@localhost ~] # pvcreate /dev/sdg
  2. Physical volume "/dev/sdg" successfully created.
  3. [ root@localhost ~] # vgextend vgtest /dev/sdg
  4. Volume group "vgtest" successfully extended
  5. [ root@localhost ~] # vgs
  6. VG #PV #LV #SN Attr VSize VFree
  7. vgqjc 1 1 0 wz--n- 19.98g 11.98g
  8. vgtest 2 1 0 wz--n- 1.99g < 1.74g
  9. [ root@localhost ~] #
  10. [ root@localhost ~] # lvextend -L 1G /dev/vgtest/lvtest
  11. Size of logical volume vgtest/lvtest changed from 260.00 MiB ( 65 extents) to 1.00 GiB ( 256 extents).
  12. Logical volume vgtest/lvtest successfully resized.
  13. [ root@localhost ~] # lvs
  14. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  15. lvqjc vgqjc -wi-ao---- 8.00g
  16. lvtest vgtest -wi-ao---- 1.00g

查看测试数据:


 
 
  1. [root@localhost ~] # ll /mnt
  2. total 16
  3. drwx------. 2 root root 16384 Aug 11 22: 25 lost+found
  4. -rw-r--r--. 1 root root 0 Aug 11 23: 33 qjc
  5. [root@localhost ~] #

3:LVM的缩减操作:

1:umount 文件系统

2:缩减文件系统


 
 
  1. [root@localhost ~] # lvs
  2. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  3. lvqjc vgqjc -wi-a----- 8.00g
  4. lvtest vgtest -wi-a----- 1.00g
  5. [root@localhost ~] # resize2fs /dev/vgqjc/lvqjc 5G
  6. resize2fs 1.42. 9 ( 28-Dec- 2013)
  7. Resizing the filesystem on /dev/vgqjc/lvqjc to 1310720 ( 4k) blocks.
  8. The filesystem on /dev/vgqjc/lvqjc is now 1310720 blocks long.
  9. [root@localhost ~] # lvreduce -L 5G /dev/vgqjc/lvqjc
  10. WARNING: Reducing active logical volume to 5.00 GiB.
  11. THIS MAY DESTROY YOUR DATA (filesystem etc.)
  12. Do you really want to reduce vgqjc/lvqjc? [ y/n]: y
  13. Size of logical volume vgqjc/lvqjc changed from 8.00 GiB (512 extents) to 5.00 GiB (320 extents).
  14. Logical volume vgqjc/lvqjc successfully resized.
  15. [root@localhost ~] # lvs
  16. LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  17. lvqjc vgqjc -wi-a----- 5.00g
  18. lvtest vgtest -wi-a----- 1.00g
  19. [root@localhost ~] # ls #检查文件是否丢失

挂载查看


 
 
  1. [ root@localhost ~] # mount /dev/vgqjc/lvqjc /mnt
  2. [ root@localhost ~] # df -Th
  3. Filesystem Type Size Used Avail Use% Mounted on
  4. /dev/sda5 xfs 20G 3.9G 16G 20% /
  5. devtmpfs devtmpfs 472M 0 472M 0% /dev
  6. tmpfs tmpfs 488M 0 488M 0% /dev/shm
  7. tmpfs tmpfs 488M 8.7M 479M 2% /run
  8. tmpfs tmpfs 488M 0 488M 0% /sys/fs/cgroup
  9. /dev/sda2 xfs 10G 114M 9.9G 2% /app
  10. /dev/sda1 xfs 197M 133M 65M 68% /boot
  11. tmpfs tmpfs 98M 4.0K 98M 1% /run/user/ 42
  12. tmpfs tmpfs 98M 32K 98M 1% /run/user/ 1000
  13. /dev/sr0 iso9660 8.8G 8.8G 0 100% /run/media/qijunchao/CentOS 7 x86_64
  14. /dev/mapper/vgqjc-lvqjc ext4 4.8G 32M 4.5G 1% /mnt
  15. [ root@localhost ~] #

查看测试文件:


 
 
  1. [root@localhost ~] # ll /mnt
  2. total 16
  3. drwx------. 2 root root 16384 Aug 11 22: 25 lost+found
  4. -rw-r--r--. 1 root root 0 Aug 11 23: 33 qjc
  5. [root@localhost ~] #

测试成功。

删除LVM

如果要彻底的来移除LVM的话,需要把创建的步骤反过来操作。

1:卸载 文件系统

2:删除lv

3:删除vg

4:删除pv


 
 
  1. [ root@localhost ~] # lvremove /dev/mapper/vgqjc-lvqjc
  2. Do you really want to remove active logical volume vgqjc/lvqjc? [y/n]: y
  3. Logical volume "lvqjc" successfully removed
  4. [ root@localhost ~] # vgremove /dev/mapper/vgqjc
  5. Volume group "vgqjc" successfully removed
  6. [ root@localhost ~] # pvremove /dev/sdl
  7. Labels on physical volume "/dev/sdl" successfully wiped.
  8. [ root@localhost ~] #

LVM删除成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值