前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于LVM的磁盘管理

基于LVM的磁盘管理

作者头像
耕耘实录
发布2018-12-20 11:59:55
1.8K0
发布2018-12-20 11:59:55
举报
文章被收录于专栏:耕耘实录

一、几个概念

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

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

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

PV(Physical Volume)-物理卷

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

VG(Volumne Group)-卷组

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

LV(Logical Volume)-逻辑卷

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

常用的LVM命令有:

功能/命令

物理卷管理

卷组管理

逻辑卷管理

扫描

pvscan

vgscan

lvscan

建立

pvcreate

vgcreate

lvcreate

显示

pvdisplay

vgdisplay

lvdisplay

删除

pvremove

vgremove

lvremove

扩展

vgextend

lvextend

缩小

vgreduce

lvreduce

助力理解:

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

二、实验环境

操作系统:基于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/sda:16.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-root:9449 MB,9449766912字节,18456576个扇区

Units= 扇区of 1 * 512 = 512 bytes

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

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

磁盘 /dev/mapper/centos-swap:1073 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 #选择8e,Linux LVM

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

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

磁盘 /dev/sda:16.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个逻辑卷,分别是root和swap。大家都知道,root一般是挂载在根目录(/)下面的,很多内容都存放在根目录(/)下面,非常重要。在不改变根目录结构的条件下扩展磁盘空间的操作也会经常遇到。

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

[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的默认文件系统为xfs,resize2fs命令在此无效,如果文件系统是ext4的话,那么请用resize2fs来同步文件系统。

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

开心!大功告成!重启再观察一下!成功挂载!没有任何问题,非常棒!此法适用于VMware、KVM、Xen等虚拟化平台的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、由于要接着实践,需重复第2、3步操作。顺序不能颠倒。创建容量为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_growfs(xsf文件系统)或resize2fs(ext4文件系统)才会生效,不然使用df -h查看时磁盘空间并未发生变化。

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

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

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档