Lvm 折腾小记

摘要:
如前所述,LVM是添加在磁盘分区和文件系统之间的逻辑层,用于屏蔽文件系统的较低磁盘分区布局,提供抽象卷,并在卷上建立文件系统。Linux用户在安装Linux操作系统时遇到的最常见问题之一是如何正确评估每个分区的大小以分配适当的硬盘空间。随着Linux逻辑卷管理功能的出现,这些问题得到了解决。用户可以轻松调整每个分区的大小,而无需停机。
LVM简述(引用百度百科):

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分
LVM
LVM区管理的灵活性。前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。物理卷(physical volume)物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现 某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具(比如PatitionMagic等),但这都只是暂时解决办法,没有根本解决问题。随着Linux的逻辑盘卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下方便地调整各个分区大小。

演示环境:CENTOS6.4 .硬盘3个,其中2个创建,一个拓展基础概述:PE | PV | VG | LV
  • PE(physical extend) : 物理拓展
  • PV(physical volume) : 物理卷 --- LVM底层的东西,可以为一个硬盘如sda,sdb,sdc;也可以为一个硬盘里面的一个分区如sda1,sdb1
  • VG(volume group) : 卷组 --- 卷组由多个LV组成,是个抽象的,是一个目录而并非一个设备,如/dev/testVg
  • LV(logic volume) : 逻辑卷 --- LV存在于PE里面
  • 图示:

pv : /dev/sdb /dev/sdc

--pv-- --pv-- --pv-- --pv-- --pv-- --pv--

vg : --pv-- --pv-- --pv-- --pv-- --pv-- --pv--

lv : --lv-- --lv-- --lv-- --lv-- --lv--

LVM命令参数简述:

pvs , vgs , lvs : 都是简略的显示相关的信息.

pvdisplay , vgdisplay , lvdisplay : 详细的显示相关的信息

LVM的创建流程:

PV > VG >LV > 格式化 > 挂载使用

LVM的使用 --- PV的创建和查看

[root@localhost ~]# pvcreate /dev/sd[b,c]            //可以使用分区或者硬盘..pvcreate /dev/sd[b,c]1  就是这两个硬盘的第一个分区来创建LVM的PV
  Physical volume "/dev/sdb" successfully created
  Physical volume "/dev/sdc" successfully created
[root@localhost ~]#pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdb        lvm2 a--  20.00g 20.00g
  /dev/sdc        lvm2 a--  20.00g 20.00g
[root@localhost ~]# pvsdisplay
-bash: pvsdisplay: command not found
[root@localhost ~]# clear
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdb        lvm2 a--  20.00g 20.00g
  /dev/sdc        lvm2 a--  20.00g 20.00g
[root@localhost ~]# pvdisplay
  "/dev/sdb" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               U71gX3-EtNA-tVPL-8WYL-99Do-PY3c-LUsfeE

  "/dev/sdc" is a new physical volume of "20.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc
  VG Name
  PV Size               20.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               TqI9uD-vvG1-2eD2-kyTM-cEtj-ZpXc-ctLi91

LVM的使用 --- VG的创建和查看

[root@localhost ~]# vgcreate testVG /dev/sd[b,c]
  Volume group "testVG" successfully created

//vgcreate 卷组名  归入卷组的磁盘或者分区
[root@localhost ~]# vgs
 VG #PV #LV #SN Attr VSize VFree
 testVG 2 0 0 wz--n- 39.99g 39.99g
[root@localhost ~]# vgdisplay
 --- Volume group ---
 VG Name testVG
 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 39.99 GiB
 PE Size 4.00 MiB
 Total PE 10238
 Alloc PE / Size 0 / 0
 Free PE / Size 10238 / 39.99 GiB
 VG UUID fSkmZR-8WiE-COe8-n4QO-rmAz-2PgJ-BRuity


LVM的使用 --- LV的创建和查看

[root@localhost ~]# lvcreate -n testLV1 -L 10G  testVG    // -n 是设置LV卷名  , -L 是设置LV的大小[G或M]
  Logical volume "testLV1" created
[root@localhost ~]# lvs
  LV      VG     Attr      LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  testLV1 testVG -wi-a---- 10.00g                           
[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/testVG/testLV1
  LV Name                testLV1
  VG Name                testVG
  LV UUID                bPyUwj-twOD-flGj-x266-mXCl-rcfa-FBUykW
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2013-04-20 17:32:23 -0700
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

LVM的使用 --- LV格式化和挂载

[root@localhost ~]# mkfs.ext4 /dev/testVG/testLV1       // 这里我格式为ext4
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 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

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@localhost ~]# mount /dev/testVG/testLV1  /mnt
[root@localhost ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/testVG-testLV1 on /mnt type ext4 (rw)

LVM 的进阶使用:拉伸和缩小
  • 拓展LV
[root@localhost ~]# lvextend  -L +5G /dev/testVG/testLV1     //增加5G的大小给testLV1
  Extending logical volume testLV1 to 15.00 GiB
  Logical volume testLV1 successfully resized
[root@localhost ~]# resize2fs /dev/testVG/testLV1             //更新文件系统,重新定义磁盘大小
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/testVG/testLV1 is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/testVG/testLV1 to 3932160 (4k) blocks.
The filesystem on /dev/testVG/testLV1 is now 3932160 blocks long.

[root@localhost ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              28G  3.4G   23G  13% /
tmpfs                 935M   84K  935M   1% /dev/shm
/dev/sda1             291M   58M  218M  22% /boot
/dev/mapper/testVG-testLV1
                       15G  153M   14G   2% /mnt

  • 拓展VG

这里演示一个新硬盘添加进去已有的卷组,,从而增加可使用个PV

[root@localhost ~]# pvcreate /dev/sdd
  Physical volume "/dev/sdd" successfully created
[root@localhost ~]#vgextend testVG /dev/sdd
  Volume group "testVG" successfully extended
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  testVG   3   1   0 wz--n- 59.99g 44.99g                //为什么不是剩下60G,是因为我们创建了一个LV1 10G,又拓展5G给它.所以剩下45G
  • 缩小磁盘

进行这个操作之前,必须umount挂载的lv,重新定义卷的大小..再缩小卷 --- 若不根据此步骤.数据极有可能丢失掉(不可挽回,切记)

[root@localhost ~]# umount /mnt                      //卸载挂载的LV卷,具体看你的挂载点
[root@localhost ~]# e2fsck -f /dev/testVG/testLV1     // 检查文件系统
[root@localhost ~]# resize2fs /dev/testVG/testLV1  5G  //在线调整你的文件系统的大小
resize2fs 1.41.12 (17-May-2010)
The filesystem is already 3932160 blocks long.  Nothing to do!
[root@localhost ~]# lvreduce -L -10G /dev/testVG/testLV1   //使用lvreduce 来缩小你的磁盘大小
  WARNING: Reducing active logical volume to 5.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testLV1? [y/n]: y
  Reducing logical volume testLV1 to 5.00 GiB
  Logical volume testLV1 successfully resized
[root@localhost ~]# lvdisplay                            //查看LV的详细信息
  --- Logical volume ---
  LV Path                /dev/testVG/testLV1
  LV Name                testLV1
  VG Name                testVG
  LV UUID                bPyUwj-twOD-flGj-x266-mXCl-rcfa-FBUykW
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2013-04-20 17:32:23 -0700
  LV Status              available
  # open                 0
  LV Size                5.00 GiB                           //移除10G后,剩下5G
  Current LE             1280
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
  • 缩小VG
[root@localhost ~]# vgs                      //值得注意的是,移除出卷组的硬盘或者分区必须小于剩余的空间.否则必定失败保存
  VG     #PV #LV #SN Attr   VSize  VFree
  testVG   3   1   0 wz--n- 59.99g 54.99g
[root@localhost ~]#vgreduce testVG /dev/sdd
  Removed "/dev/sdd" from volume group "testVG"
[root@localhost ~]# vgs
 VG #PV #LV #SN Attr VSize VFree
 testVG 2 1 0 wz--n- 39.99g 34.99g
删除LVM:

删除顺序自下而上 : lv > vg > pv

[root@localhost ~]# lvremove /dev/testVG/testLV1
Do you really want to remove active logical volume testLV1? [y/n]: y
  Logical volume "testLV1" successfully removed
[root@localhost ~]# vgremove testVG
  Volume group "testVG" successfully removed
[root@localhost ~]# pvremove /dev/sd[b,c]
  Labels on physical volume "/dev/sdb" successfully wiped
  Labels on physical volume "/dev/sdc" successfully wiped
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdd        lvm2 a--  20.00g 20.00g
[root@localhost ~]# pvremove /dev/sdd
  Labels on physical volume "/dev/sdd" successfully wiped
[root@localhost ~]# pvs
[root@localhost ~]# vgs
  No volume groups found
推荐使用的命令:e2fsadm

使用 e2fsadm -L +10G /dev/testVG/testLv1 相当于

# lvextend -L+10G /dev/testVG/testLv1
# resize2fs /dev/testVG/testLv1

使用 e2fsadm -L -10G /dev/testVG/testLv1 相当于(需要先umount之后才等同)

# resize2fs /dev/testVG/testLv1 5G
# lvreduce -L -10G /dev/testVG/testLv1

免责声明:文章转载自《Lvm 折腾小记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android SQLite使用SQLiteOpenHelper类对数据库进行操作centos7配置国内yum源下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker容器备份、恢复和迁移volume方案

volume作为数据的载体,在很多情况下需要对其中的数据进行备份、迁移或是恢复。下面一docker容器的volume为例,说一下备份的技巧。 我们先建立一个容器vol_simple,该容器在/date挂载了一个volume。 $ sudo docker run -it --name vol_simple -v /data ubuntu /b...

2020系统综合实践 第7次实践作业 11组

目录 1.在树莓派中安装opencv库 1.1 安装依赖 1.2 下载OpenCV源码 1.3 安装pip 1.4 安装Python虚拟机 1.5 编译OpenCV 1.6 安装OpenCV 2.使用opencv和python控制树莓派的摄像头 3.利用树莓派的摄像头实现人脸识别 facerec_on_raspberry_pi.py face...

Ubuntu安装时怎样分区

1./swap交换分区。一般为你机器内存的两倍,少于这个容量,系统无法进入休眠。 实质是硬盘上的交换空间而非分区。所以没有格式,默认休眠将数据储存于此 能够取消(如不用swap必须再设定方可休眠)——多数有1GB内存的桌面用户仅仅要1.5GB swap就可以。2GB以上内存的非常多用户实际并不须要它——注意,大量处理音频、视频、图片须要3GB以上的...

开源EDR(OSSEC)

开源EDR(OSSEC)基础篇- 01 -设计定位与能力输出 前言 介绍OSSEC之前,不得不提到当前比较热门的技术EDR,近几年随着大数据SIEM系统的发展,EDR(端点威胁检测与响应)技术成为了安全界万众宠爱的骄子,广泛用于威胁检测、攻击溯源和响应处理的安全场景。 而OSSEC是一款开源的跨平台的准EDR入侵检测响应系统,可以实现商业EDR 大部分的...

fio压测

目录 fio工具介绍 参数介绍 测试举例用此命令将要压测的盘筛选出来 模板如下: fio测试注意事项 随机读IOPS测试: 顺序读IO吞吐测试: 四路服务器测试的小tips fio工具介绍 用于测试存储设备IO性能。 当存储设备中存在用户数据时,严谨使用fio进行写操作!!! 参数介绍 rw:指定测试的读写方式。read/writ...

ntfs-3g

1、加源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 2、安装 yum update;yum install ntfs3g 首先,在你的Linux上安装一个NTFS-3G工具,下载地址:http://www.tuxera.com/communi...