基于LVM的磁盘管理

原创 2017年11月15日 14:30:10

一、几个概念

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

LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

PVPhysical Volume-物理卷

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

VGVolumne Group-卷组

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

LVLogical Volume-逻辑卷

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

常用的LVM命令有:

功能/命令

物理卷管理

卷组管理

逻辑卷管理

扫描

pvscan

vgscan

lvscan

建立

pvcreate

vgcreate

lvcreate

显示

pvdisplay

vgdisplay

lvdisplay

删除

pvremove

vgremove

lvremove

扩展

 

vgextend

lvextend

缩小

 

vgreduce

lvreduce

助力理解:

举个例子,某村集资盖统一住宅区。我们知道,一家人一般会资金不足,不容易完成这样的工程,这里就可以类比为我们计算机磁盘空间不足。因此就需要召集大家来集资盖楼,每家所筹集的资金(物理卷PVPhysical Volume)集中起来形成一个资金池(卷组VGVolumeGroup),楼房盖好之后,需要把房屋分给集资的人,每套房的价值(逻辑卷LVLogical Volume)必须是人民币的基本单位元(基本单元PEPhysicalExtent)的整数倍。

二、实验环境

操作系统:基于VmwareWorkstation 12 Pro虚拟化平台的CentOS Linux release 7.4.1708 (Minimal)

软件环境:2.02.171(2)-RHEL7(2017-05-03)(使用lvm version即可查看)

三、操作步骤

(一)不增加磁盘数量,在原磁盘上进行磁盘容量管理

1、关闭虚拟机电源->编辑虚拟机设置->硬盘->扩展。


原来的磁盘空间为10GB,扩展后磁盘容量为15GB。操作完成后系统会提示”磁盘已成功扩展。您必须从客户机操作系统内部对磁盘重新进行分区和扩展文件系统。”确认后进入下一步操作。

fdisk -l查看一下当前磁盘情况。

[root@Geeklp201 ~]#fdisk -l

磁盘 /dev/sda16.1 GB, 16106127360字节,31457280个扇区

Units= 扇区of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512字节 / 512字节

I/O 大小(最小/最佳)512字节 / 512字节

磁盘标签类型:dos

磁盘标识符:0x00010056

   设备 Boot     Start         End      Blocks  Id  System

/dev/sda1   *       2048      411647      204800  83  Linux

/dev/sda2          411648    20971519   10279936   8e  Linux LVM

磁盘 /dev/mapper/centos-root9449 MB,9449766912字节,18456576个扇区

Units= 扇区of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512字节 / 512字节

I/O 大小(最小/最佳)512字节 / 512字节

磁盘 /dev/mapper/centos-swap1073 MB,1073741824字节,2097152个扇区

Units= 扇区of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512字节 / 512字节

I/O 大小(最小/最佳)512字节 / 512字节

我们可以看到磁盘空间扩展成功,/dev/sda设备的容量现在是16.1GB

新建分区。

[root@Geeklp201~]# fdisk /dev/sda

欢迎使用 fdisk (util-linux 2.23.2)

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

命令(输入 m获取帮助)n    #新建一个分区

Partitiontype:

   p  primary (2 primary, 0 extended, 2 free)

   e  extended

Select (default p): p    #选择分区类型,默认为p

分区号 (3,4,默认 3)        #默认为3,直接回车键

起始 扇区(20971520-31457279,默认为 20971520)      #切勿乱填,选择默认值,直接回车键

将使用默认值 20971520

Last扇区, +扇区 or+size{K,M,G} (20971520-31457279,默认为 31457279)         #按照提示操作,此处选择默认

将使用默认值 31457279

分区 3已设置为 Linux类型,大小设为 5 GiB

命令(输入 m获取帮助)l    #列举已知的分区类型此处太长,省略

命令(输入 m获取帮助)t  #改变系统分区系统id,对照上面列表进行填写

分区号 (1-3,默认 3)   #采用默认值,直接回车

Hex代码(输入 L列出所有代码)8e #选择8eLinux LVM

已将分区“Linux”的类型更改为“Linux LVM

命令(输入 m获取帮助)p #打印一下当前分区表

磁盘 /dev/sda16.1 GB, 16106127360字节,31457280个扇区

Units=扇区of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512字节 / 512字节

I/O大小(最小/最佳)512字节 / 512字节

磁盘标签类型:dos

磁盘标识符:0x00010056

  设备 Boot     Start         End      Blocks  Id  System

/dev/sda1   *       2048      411647      204800  83  Linux

/dev/sda2          411648    20971519   10279936   8e  Linux LVM

/dev/sda3        20971520    31457279    5242880   8e  Linux LVM

命令(输入 m获取帮助)w   #保存

Thepartition table has been altered!

Callingioctl() to re-read partition table.

WARNING:Re-reading the partition table failed with error 16:设备或资源忙.

Thekernel still uses the old table. The new table will be used at

the nextreboot or after you run partprobe(8) or kpartx(8)

正在同步磁盘。

[root@Geeklp201~]# partprobe

注意:这一步操作中出现Warning,然而这并不我们后续的操作。

2、创建物理卷

[root@Geeklp201 ~]#pvcreate /dev/sda3

  Physical volume "/dev/sda3"successfully created.

3、扩展卷组

[root@Geeklp201 ~]#vgextend centos /dev/sda3

  Volume group "centos" successfullyextended

[root@Geeklp201 ~]#pvs

  PV        VG     Fmt  Attr PSize PFree

  /dev/sda2 centos lvm2 a--   9.80g     0

  /dev/sda3 centos lvm2 a--  <5.00g<5.00g

名称为centos的卷组已经成功扩展

4、扩展逻辑卷。


从上图中大家可以看出来,我的当前系统一共存在2个逻辑卷,分别是rootswap。大家都知道,root一般是挂载在根目录(/)下面的,很多内容都存放在根目录(/)下面,非常重要。在不改变根目录结构的条件下扩展磁盘空间的操作也会经常遇到。

现在,我们需要把逻辑卷root的空间扩展到12GB4MB的整数倍)。

[root@Geeklp201 ~]#lvextend -L 12GB /dev/centos/root

  Size of logical volume centos/root changedfrom 8.80 GiB (2253 extents) to 12.00 GiB (3072 extents).

  Logical volume centos/root successfullyresized.

注意:命令lvextend后只能跟逻辑卷路径,扩展的磁盘空间容量一定要比原来大。

同步文件系统。一般情况想,使用resize2fs命令来同步文件系统。但是,CentOS7的默认文件系统为xfsresize2fs命令在此无效,如果文件系统是ext4的话,那么请用resize2fs来同步文件系统。

[root@Geeklp201 ~]#xfs_growfs /dev/centos/root


开心!大功告成!重启再观察一下!成功挂载!没有任何问题,非常棒!此法适用于VMwareKVMXen等虚拟化平台的Linux系统。

5、在步骤4中,我们看到还有一个逻辑卷swap呢!是不是可以通过扩展逻辑卷来扩展swap空间呢?让我们来试一下吧!

[root@Geeklp201 ~]#lvextend -L 2GB /dev/centos/swap

在操作之前最好把将缓冲区的数据写 入磁盘。

[root@Geeklp201 ~]#sync;sync

[root@Geeklp201 ~]# swapoff /dev/centos/swap #操作之前记得先将swap分区关闭

[root@Geeklp201 ~]#mkswap /dev/centos/swap

mkswap:/dev/centos/swap: warning: wiping old swap signature.

正在设置交换空间版本 1,大小 = 2097148 KiB

无标签,UUID=4250fdac-92c1-43f4-b266-c9d9c69a2783

[root@Geeklp201 ~]#swapon /dev/centos/swap

[root@Geeklp201 ~]#free -h

              total        used        free      shared buff/cache   available

Mem:           472M        118M        215M        4.6M        138M        302M

Swap:          2.0G          0B        2.0G

从上面的截图中我们可以看到,原来我的swap空间只有1GB,经过扩展之后,我们的swap空间增加到2GB。瞎折腾成功!窃喜!是不是很简单快捷?

6、逻辑卷扩展成功,接下来我们探讨一下缩小逻辑卷。

[root@Geeklp201 ~]#lvs

  LV  VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root centos -wi-ao---- 12.00g                                                   

  swap centos -wi-ao----  2.00g   

系统存在2个逻辑卷,现在就来尝试一下缩小逻辑卷root吧!把逻辑卷从原来的12GB缩小到8GB

[root@Geeklp201 /]#lvreduce -L 8GB /dev/centos/root

  WARNING: Reducing active and open logicalvolume to 8.00 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really wantto reduce centos/root? [y/n]:

根据以上提示,缩小逻辑卷是可能使数据丢失的,后果很严重!不得不进行该操作的话,请先将此逻辑卷下的内容备份后再操作!我用我自己的实验环境测试了一下,缩小之后系统无法正常启动,用引导盘troubleshooting都不能成功把任何一个逻辑卷挂载成功,挂载分区除了引导分区其他别的分区均不成功,直接打不开原来的系统文件,束手无策,后果非常严重!对于挂载点为根目录(/)的分区的操作需要格外谨慎。那么是不是我们的探索至此结束了呢?生命在于折腾,让我们新建一个逻辑卷来继续吧!

[root@Geeklp201 /]#lvcreate -L 1GB -n test centos

查看一下新建的逻辑卷概要情况:

[root@Geeklp201 /]#lvs

  LV  VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root centos -wi-ao---- 10.80g                                                   

  swap centos -wi-ao----  2.00g                                                   

  test centos -wi-a-----  1.00g  

逻辑卷test创建成功。由于centos7使用的文件系统默认情况下为xfs,将我们创建好的逻辑卷格式化为xfs来备用。

[root@Geeklp201 /]#mkfs.xfs /dev/centos/test


(在此说明一下,在对逻辑卷root进行缩小操作时,已经造成数据丢失,实验环境已经重建,在对逻辑卷root进行扩展是使用的命令为:lvextend -L +2GB /dev/centos/root

暂时把逻辑卷test挂载到mnt下,创建2个文件,在进行逻辑卷缩小是观察该文件是否会有变化。

mount/dev/centos/test /mnt

[root@Geeklp201mnt]# date>test.txt

[root@Geeklp201mnt]# dd if=/dev/zero of=test.bak bs=1M count=128


卸载逻辑卷,进行一下修复操作。

[root@Geeklp201 mnt]# cd / #不要在当前挂载点来卸载该挂载点的设备,这会导致操作不成功

[root@Geeklp201 /]#umount /mnt

[root@Geeklp201 /]#xfs_repair /dev/centos/test

把逻辑卷test的容量缩小到512MB

[root@Geeklp201 /]#lvreduce -L 512MB /dev/centos/test

  WARNING: Reducing active logical volume to512.00 MiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really wantto reduce centos/test? [y/n]: y

  Size of logical volume centos/test changedfrom 1.00 GiB (256 extents) to 512.00 MiB (128 extents).

  Logical volume centos/test successfullyresized.

操作成功!但是在进行文件系统同步、重新挂载等操作的过程,出现问题,挂载不了!重新格式化一下!


重新格式化都出现问题!还必须强制格式化!随意进行缩小操作风险之大由此可见!我们之前创建的文件肯定是不存在了!格式化之后就能进行文件系统同步、挂载使用了。是不是我们在操作过程中哪里操作不对呢?

接下来,我们再次对逻辑卷test进行容量缩小操作,看一下是否能避免数据丢失这种风险!

[root@Geeklp201 /]#mount /dev/centos/test /mnt

[root@Geeklp201 /]#cd /mnt

[root@Geeklp201mnt]# date>test.txt

[root@Geeklp201mnt]# dd if=/dev/zero of=test.test bs=1MB count=128


[root@Geeklp201mnt]# lvresize -L 256MB /dev/centos/test

  WARNING: Reducing active and open logicalvolume to 256.00 MiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really wantto reduce centos/test? [y/n]: y

  Size of logical volume centos/test changedfrom 512.00 MiB (128 extents) to 256.00 MiB (64 extents).

  Logical volume centos/test successfullyresized.

操作完成之后数据依然完美丢失!经过查阅一些资料,xfs文件系统并不支持容量缩小。非要进行缩小必须先进行数据备份,不然数据必然丢失。下面让我们来试一下ext4文件系统下的缩小操作。

[root@Geeklp201 /]#mkfs.ext4 /dev/centos/test

[root@Geeklp201 /]#mount /dev/centos/test /mnt

[root@Geeklp201mnt]# date>test.txt

[root@Geeklp201mnt]# dd if=/dev/zero of=test.test bs=1MB count=64


[root@Geeklp201mnt]# cd /

[root@Geeklp201 /]#umount /mnt/

[root@Geeklp201 /]#lvs

[root@Geeklp201 /]# lvreduce -L 128MB /dev/centos/test      #在此步操作之前依然有数据丢失的风险提示,选择是

[root@Geeklp201 /]#e2fsck /dev/centos/test

e2fsck 1.42.9(28-Dec-2013)

文件系统的大小 (依据超级块) 262144

而设备的物理大小为 131072

超级块或分区表可能已被损坏!

中断<y>?

磁盘检查不能通过!resize2fs操作因此也不能进行咯。数据丢失,实验失败!

[root@Geeklp201 /]#mkfs.ext4 /dev/centos/test

[root@Geeklp201 /]#mount /dev/centos/test /mnt

[root@Geeklp201mnt]# date>test.txt

[root@Geeklp201mnt]# dd if=/dev/zero of=test.test bs=1MB count=64

[root@Geeklp201 /]#e2fsck -f /dev/centos/test

[root@Geeklp201 /]# resize2fs /dev/centos/test 80m #这里是m不是mb哦,注意一下

resize2fs 1.42.9(28-Dec-2013)

Resizing thefilesystem on /dev/centos/test to 81920 (1k) blocks.

The filesystem on/dev/centos/test is now 81920 blocks long.

[root@Geeklp201 /]#lvs

  LV  VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root centos -wi-ao----  10.80g                                                   

  swap centos -wi-ao----   2.00g                                                   

  test centos -wi-a----- 128.00m  

呵呵,逻辑卷test的容量到这一步依然没有变化哦!接下来进行逻辑卷test容量减少操作。

[root@Geeklp201 /]#lvreduce -L 80MB /dev/centos/test

  WARNING: Reducing active logical volume to80.00 MiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really wantto reduce centos/test? [y/n]: y

  Size of logical volume centos/test changedfrom 128.00 MiB (32 extents) to 80.00 MiB (20 extents).

  Logical volume centos/test successfullyresized.

依然有风险提示,选择是。lvs看一下,已经缩小到80MB

见证奇迹的时刻到来咯!挂载逻辑卷test,看一下之前的文件是否完美存在?

[root@Geeklp201 /]#mount /dev/centos/test /mnt/

[root@Geeklp201 /]#cd /mnt/


终于成功了,不容易!顺便站起来去倒杯水,喝点水继续探索!

7、逻辑卷的删除就简单咯!

[root@Geeklp201 /]#lvremove /dev/centos/test

Do you really wantto remove active logical volume centos/test? [y/n]: y

  Logical volume "test" successfullyremoved

8、居于lvm创建的swap空间是否可以减小呢?让我们来试一下!

[root@Geeklp201/]# sync;sync

[root@Geeklp201 /]#swapoff /dev/centos/swap

[root@Geeklp201 /]#lvreduce -L 1GB /dev/centos/swap

  WARNING: Reducing active logical volume to1.00 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really wantto reduce centos/swap? [y/n]: y

  Size of logical volume centos/swap changedfrom 2.00 GiB (512 extents) to 1.00 GiB (256 extents).

  Logical volume centos/swap successfullyresized.

[root@Geeklp201 /]#mkswap /dev/centos/swap

[root@Geeklp201 /]#swapon /dev/centos/swap

操作成功,重启之后没发现有异常!

(二)新增一块磁盘,使用lvm来管理磁盘空间

1、在不关机的情况下,我们在原设备上新增一块硬盘。我们将在此处实践创建卷组、移除卷组、物理卷、移除物理卷等操作!


2、新增成功,系统不识别新增的硬盘,必须重启,之后识别设备,创建物理卷。

[root@Geeklp201 ~]#pvcreate /dev/sdb

  Physical volume "/dev/sdb"successfully created.

3、创建卷组geeklp-vg

[root@Geeklp201~]# vgcreate geeklp-vg/dev/sdb

  Volume group "geeklp-vg" successfully created

4、移除卷组之后再移除物理卷。

[root@Geeklp201~]# vgremove geeklp-vg

  Volume group "geeklp-vg" successfully removed

[root@Geeklp201 ~]#pvremove /dev/sdb

  Labels on physical volume"/dev/sdb" successfully wiped.

5、由于要接着实践,需重复第23步操作。顺序不能颠倒。创建容量为1GB的逻辑卷geeklp-lv,格式化为xfs格式,挂载使用。

[root@Geeklp201 /]#pvcreate /dev/sdb

  Physical volume "/dev/sdb"successfully created.

[root@Geeklp201 /]#vgcreate geeklp-vg /dev/sdb

  Volume group "geeklp-vg"successfully created

[root@Geeklp201 /]#lvcreate -L 1GB -n geeklp-lv geeklp-vg

  Logical volume "geeklp-lv" created.

[root@Geeklp201 /]#mkfs.xfs /dev/geeklp-vg/geeklp-lv

[root@Geeklp201 /]#mount /dev/geeklp-vg/geeklp-lv /mnt/

[root@Geeklp201 /]#cd mnt/

[root@Geeklp201mnt]# date>test.txt

[root@Geeklp201mnt]# cat test.txt

2017 11 14日 星期二14:47:26 CST


[root@Geeklp201 /]#xfs_growfs /dev/geeklp-vg/geeklp-lv

6、扩展卷组geeklp-vg

我们再加一块硬盘。

重启系统,创建物理卷/dev/sdc并将其用于扩展卷组geeklp-vg

[root@Geeklp201mnt]# cd /

[root@Geeklp201 /]#umount /mnt

[root@Geeklp201 /]#pvcreate /dev/sdc

  Physical volume "/dev/sdc"successfully created.

[root@Geeklp201 /]#vgextend geeklp-vg /dev/sdc

  Volume group "geeklp-vg"successfully extended

7、扩展逻辑卷geeklp-lv,使其再增加1GB空间。

[root@Geeklp201 /]#lvextend -L +1GB /dev/geeklp-vg/geeklp-lv

  Size of logical volume geeklp-vg/geeklp-lvchanged from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).

  Logical volume geeklp-vg/geeklp-lvsuccessfully resized.

[root@Geeklp201 /]#xfs_growfs /dev/geeklp-vg/geeklp-lv

成功扩展逻辑卷geeklp-lv。挂载了看一下,之前创建的文件完整存在,无数据丢失。

8、再次实践缩小逻辑卷geeklp-lv的空间,缩减到1.5GB

[root@Geeklp201 /]#lvreduce -L -0.5GB /dev/geeklp-vg/geeklp-lv

  WARNING: Reducing active logical volume to1.50 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really wantto reduce geeklp-vg/geeklp-lv? [y/n]: y

  Size of logical volume geeklp-vg/geeklp-lvchanged from 2.00 GiB (512 extents) to 1.50 GiB (384 extents).

  Logical volume geeklp-vg/geeklp-lvsuccessfully resized.

[root@Geeklp201 /]#lvs

  LV       VG        Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  root     centos    -wi-ao---- 10.80g                                                   

  swap     centos    -wi-ao----  1.00g                                                   

  geeklp-lv geeklp-vg -wi-a-----  1.50g                                                   

[root@Geeklp201 /]#mount /dev/geeklp-vg/geeklp-lv /mnt/

[root@Geeklp201 /]#cd /mnt/

[root@Geeklp201mnt]# ls

test.txt

[root@Geeklp201mnt]# cat test.txt

2017 11 14日 星期二14:47:26 CST

缩减成功,数据未丢失,不过这个操作还是有风险的,还是强烈建议备份后再进行操作。为了确保实验的可靠性,我对机器进行了重启,数据依然健在,很神奇!细心的小伙伴可能会发现,使用命令df -h查看我们已经挂载了的逻辑卷,空间并未发生变化,这是漏了使用xfs_growfs来执行逻辑卷的空间缩减操作!

[root@Geeklp201 /]#xfs_growfs /dev/geeklp-vg/geeklp-lv

9、细心的小伙伴可能也发现了,我在前面的操作过程中并未进行新建分区操作,直接对物理设备进行lvm管理了!后来我又把所有逻辑卷删除,先新建分区/dev/sdb1/dev/sbc1,成功进行了物理机创建、卷组创建、逻辑卷创建、逻辑卷扩容、逻辑卷缩减空间及对应的删除操作,一切操作都很顺利,没有任何警告。在逻辑卷的扩容、缩减空间过程中均未发生数据丢失的意外情况。

10、对于新建的逻辑卷,如果需要开机自动挂载,请编辑fstab文件。例如:在启动时需要把逻辑卷geeklp-lv挂载到/mnt下:

echo"/dev/geeklp-vg/geeklp-lv /mnt xfs defaults 0 0">>/etc/fstab

四、逻辑卷快照

LVM逻辑卷管理器还具备有“快照卷”的功能,这项功能很类似于虚拟机软件的还原时间点功能。例如可以对某一个LV逻辑卷设备做一次快照,如果今后发现数据被改错了,咱们可以把之前做好的快照卷进行覆盖还原,LVM逻辑卷管理器的快照功能有两项特点,第一是快照卷的大小应该尽量等同于LV逻辑卷的容量,第二是快照功能仅一次有效,一旦被还原后则会被自动立即删除。

[root@Geeklp201 /]#lvcreate -L 512MB -s -n snap /dev/centos/geeklp-lv

  Using default stripesize 64.00 KiB.

  Logical volume "snap" created.


[root@Geeklp201 /]#mkfs.xfs -f /dev/centos/geeklp-lv

[root@Geeklp201 /]#xfs_growfs /dev/centos/geeklp-lv

[root@Geeklp201 /]#mount /dev/centos/geeklp-lv /mnt

[root@Geeklp201mnt]# dd if=/dev/zero of=test.test bs=1M count=256


逻辑卷snap也发生相应变化!

对逻辑卷geeklp-lv进行快照合并还原操作,在这之前记得先卸载掉逻辑卷设备与目录的挂载。

[root@Geeklp201mnt]# cd /

[root@Geeklp201 /]#umount /mnt/

[root@Geeklp201 /]# lvconvert --merge /dev/centos/snap #注意此处是快照卷的路径

  Merging of volume centos/snap started.

  geeklp-lv: Merged: 51.37%

  geeklp-lv: Merged: 100.00%

恢复完成之后,快照卷立马被删除。可以通过lvs命令查看。不过很很不幸的是,在快照恢复后,逻辑卷/dev/centos/geeklp-lv数据丢失了!看来这样操作并不靠谱啊!

我之后又在由新增磁盘组成的卷组里创建物理卷,发现在快照卷创建之前磁盘上的数据才能被还原,快照卷创建之后的数据是不会被还原的。

对于LVM的折腾到此结束,若有不妥之处敬请指教。

五、总结归纳

1、在原硬盘上追加磁盘空间进行逻辑卷管理必须先新建分区再进行LVM相关的操作。对挂载点为根目录(/)的逻辑卷空间缩减操作需要格外谨慎,数据丢失的风险极高,使用原系统盘引导系统之后都不能对丢失数据进行任何操作,不建议对该逻辑卷进行空间缩减操作。在对逻辑卷进行操作之后需要执行xfs_growfsxsf文件系统)或resize2fsext4文件系统)才会生效,不然使用df -h查看时磁盘空间并未发生变化。

2、通过新增磁盘要实现扩容要优于在原磁盘上追加空间。

3、如果不是特殊情况,新增的磁盘最好另外新建一个卷组,把新增的磁盘都放到新的卷组内,按需分配给逻辑卷使用。

4、可以不对新增磁盘新建分区直接创建物理卷,这种操作与新增磁盘新建分区后创建物理卷并无差异。

5、一般情况下,其他逻辑卷与挂载点为根目录的逻辑卷在同一个卷组,对文件系统为xfs进行空间缩减时会造成数据丢失,ext4文件系统则不会造成数据丢失。因为缩减空间之后系统不识别原来的xfs文件系统,无法挂载使用,需要重新格式化之后才能使用。

6、在新增磁盘创建的逻辑卷上进行空间缩减操作,目前没有发送数据丢失的情形,还需在后续的使用过程中归纳总结其中的原因。

7、居于LVM创建的swap空间是可以进行增加或者缩小的,在操作之前需要注意使用命令sync将数据强制写入磁盘。

8、逻辑卷是可以直接删除的,删除物理卷之前必须先删除卷组。这个顺序不能搞错。

9、根目录所挂载卷组内逻辑卷不支持快照还原。在快照卷创建之前磁盘上的数据才能被还原,快照卷创建之后的数据是不会被还原的。

版权声明:本文为极客乐派原创文章,各大自媒体平台同步更新,欢迎关注极客乐派或极客LP(geeklp)。欢迎转载,转载请注明出处,谢谢。

相关文章推荐

LVM磁盘管理

  • 2017年08月21日 14:11
  • 1000KB
  • 下载

LVM__linux磁盘管理

  • 2014年04月29日 18:10
  • 843KB
  • 下载

Linux lvm方式管理磁盘(将多块小盘组合成大盘)

环境说明: [root@lkdb ~]# uname -a Linux lkdb 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x...
  • lk_db
  • lk_db
  • 2016年05月29日 21:25
  • 1916

如何使用LVM卷管理Linux系统中的磁盘

在Linux服务器中,当现有硬盘的分区规划不能满足要求时,就需要对硬盘中的分区进行重新规划和调整,有时候还需要添加新的硬盘设备来扩展存储空间。 实现上述操作要用到fdisk磁盘及分区管理工具,fdi...

Linux磁盘管理:LVM逻辑卷的拉伸及缩减

转自  http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/24/3097785.html 在上一篇随笔里面 Linux学习之Cent...

磁盘管理——LVM

逻辑卷轴管理器(英语:LogicalVolume Manager,缩写为LVM),又译为逻辑卷宗管理器、逻辑磁区管理器、逻辑磁碟管理器,是Linux核心所提供的逻辑卷轴管理(Logical volum...
  • Wentasy
  • Wentasy
  • 2013年08月25日 10:41
  • 2939

每天进步一点点——Linux磁盘管理之LVM与RAID

进一步理解Linux中的磁盘管理
  • cywosp
  • cywosp
  • 2014年08月31日 23:17
  • 6721

用lvm管理Linux磁盘的大小

用lvm管理Linux磁盘的大小 检查机器是否安装有lvm 如果显示(版本可能有所不同)如下,证明机器是安装有lvm。如果没有显示证明我们的机器没有安装,自己安装即可(这里就不描述了) [r...

Linux 学习笔记---文件系统与LVM磁盘管理

Linux 学习笔记---文件系统与LVM磁盘管理

Centos7扩展磁盘空间(LVM管理)

查看磁盘情况 # fdisk -l /dev/sda Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = secto...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于LVM的磁盘管理
举报原因:
原因补充:

(最多只允许输入30个字)