逻辑卷管理(LVM)的创建与使用

未分类

我想告诉你的是,当 LVM (逻辑卷管理)首次出现在 Fedora Linux 中时,我是非常抗拒它的。我最初的反应是,我并不需要在我和我的设备之间有这种额外的抽象层。结果是我错了,逻辑卷管理是非常有用的。

管理磁盘空间对系统管理员来说是一件重要的日常工作。一旦磁盘空间耗尽就需要进行一系列耗时而又复杂的任务,以提升磁盘分区中可用的磁盘空间。它也需要系统离线才能处理。通常这种任务会涉及到安装一个新的硬盘、引导至恢复模式或者单用户模式、在新硬盘上创建一个分区和一个文件系统、挂载到临时挂载点去从一个太小的文件系统中移动数据到较大的新位置、修改 /etc/fstab 文件的内容来反映出新分区的正确设备名、以及重新引导来重新挂载新的文件系统到正确的挂载点。

我想告诉你的是,当 LVM (逻辑卷管理)首次出现在 Fedora Linux 中时,我是非常抗拒它的。我最初的反应是,我并不需要在我和我的设备之间有这种额外的抽象层。结果是我错了,逻辑卷管理是非常有用的。
LVM 让磁盘空间管理非常灵活。它提供的功能诸如在文件系统已挂载和活动时,很可靠地增加磁盘空间到一个逻辑卷和它的文件系统中,并且,它也允许你将多个物理磁盘和分区融合进一个可以分割成逻辑卷(LV)的单个卷组(VG)中。

卷管理也允许你去减少分配给一个逻辑卷的磁盘空间数量,但是,这里有两个要求,第一,卷必须是未挂载的。第二,在卷空间调整之前,文件系统本身的空间大小必须先被减少。

有一个重要的提示是,文件系统本身必须允许重新调整大小的操作。当重新提升文件系统大小的时候,EXT2、3 和 4 文件系统都允许离线(未挂载状态)或者在线(挂载状态)重新调整大小。你应该去认真了解你打算去调整的文件系统的详细情况,去验证它们是否可以完全调整大小,尤其是否可以在线调整大小。

即时扩展一个文件系统

在我安装一个新的发行版到我的生产用机器中之前,我总是喜欢在一个 VirtualBox 虚拟机中运行这个新的发行版一段时间,以确保它没有任何的致命的问题存在。在几年前的一个早晨,我在我的主要使用的工作站上的虚拟机中安装了一个新发行的 Fedora 版本。我认为我有足够的磁盘空间分配给安装虚拟机的主文件系统。但是,我错了,大约在安装到三分之一时,我耗尽了我的文件系统的空间。幸运的是,VirtualBox 检测到了磁盘空间不足的状态,并且暂停了虚拟机,然后显示了一个明确指出问题所在的错误信息。

请注意,这个问题并不是虚拟机磁盘太小造成的,而是由于宿主机上空间不足,导致虚拟机上的虚拟磁盘在宿主机上的逻辑卷中没有足够的空间去扩展。

因为许多现在的发行版都缺省使用了逻辑卷管理,并且在我的卷组中有一些可用的空余空间,我可以分配额外的磁盘空间到适当的逻辑卷,然后即时扩展宿主机的文件系统。这意味着我不需要去重新格式化整个硬盘,以及重新安装操作系统或者甚至是重启机器。我不过是分配了一些可用空间到适当的逻辑卷中,并且重新调整了文件系统的大小 —— 所有的这些操作都在文件系统在线并且运行着程序的状态下进行的,虚拟机也一直使用着宿主机文件系统。在调整完逻辑卷和文件系统的大小之后,我恢复了虚拟机的运行,并且继续进行安装过程,就像什么问题都没有发生过一样。

虽然这种问题你可能从来也没有遇到过,但是,许多人都遇到过重要程序在运行过程中发生磁盘空间不足的问题。而且,虽然许多程序,尤其是 Windows 程序,并不像 VirtualBox 一样写的很好,且富有弹性,Linux 逻辑卷管理可以使它在不丢失数据的情况下去恢复,也不需要去进行耗时的安装过程。

LVM 结构

逻辑卷管理的磁盘环境结构如下面的图 1 所示。逻辑卷管理允许多个单独的硬盘和/或磁盘分区组合成一个单个的卷组(VG)。卷组然后可以再划分为逻辑卷(LV)或者被用于分配成一个大的单一的卷。普通的文件系统,如 EXT3 或者 EXT4,可以创建在一个逻辑卷上。

在图 1 中,两个完整的物理硬盘和一个第三块硬盘的一个分区组合成一个单个的卷组。在这个卷组中创建了两个逻辑卷和文件系统,比如,可以在每个逻辑卷上创建一个 EXT3 或者 EXT4 的文件系统。

未分类
图 1: LVM 允许组合分区和整个硬盘到卷组中

在一个主机上增加磁盘空间是非常简单的,在我的经历中,这种事情是很少的。下面列出了基本的步骤。你也可以创建一个完整的新卷组或者增加新的空间到一个已存在的逻辑卷中,或者创建一个新的逻辑卷。

增加一个新的逻辑卷

有时候需要在主机上增加一个新的逻辑卷。例如,在被提示包含我的 VirtualBox 虚拟机的虚拟磁盘的 /home 文件系统被填满时,我决定去创建一个新的逻辑卷,以存储包含虚拟磁盘在内的虚拟机数据。这将在我的 /home 文件系统中释放大量的空间,并且也允许我去独立地管理虚拟机的磁盘空间。

增加一个新的逻辑卷的基本步骤如下:

☉ 如有需要,安装一个新硬盘。
☉ 可选: 在硬盘上创建一个分区。
☉ 在硬盘上创建一个完整的物理卷(PV)或者一个分区。
☉ 分配新的物理卷到一个已存在的卷组(VG)中,或者创建一个新的卷组。
☉ 从卷空间中创建一个新的逻辑卷(LV)。
☉ 在新的逻辑卷中创建一个文件系统。
☉ 在 /etc/fstab 中增加适当的条目以挂载文件系统。
☉ 挂载文件系统。

为了更详细的介绍,接下来将使用一个示例作为一个实验去教授关于 Linux 文件系统的知识。

示例

这个示例展示了怎么用命令行去扩展一个已存在的卷组,并给它增加更多的空间,在那个空间上创建一个新的逻辑卷,然后在逻辑卷上创建一个文件系统。这个过程一直在运行着和已挂载的文件系统上执行。

警告:仅 EXT3 和 EXT4 文件系统可以在运行和挂载状态下调整大小。许多其它的文件系统,包括 BTRFS 和 ZFS 是不能这样做的。

安装硬盘
如果在系统中现有硬盘上的卷组中没有足够的空间可以增加,那么可能需要去增加一块新的硬盘,然后创建空间增加到逻辑卷中。首先,安装物理硬盘,然后,接着执行后面的步骤。

从硬盘上创建物理卷
首先需要去创建一个新的物理卷(PV)。使用下面的命令,它假设新硬盘已经分配为 /dev/hdd。

pvcreate /dev/hdd

在新硬盘上创建一个任意分区并不是必需的。创建的物理卷将被逻辑卷管理器识别为一个新安装的未处理的磁盘或者一个类型为 83 的 Linux 分区。如果你想去使用整个硬盘,创建一个分区并没有什么特别的好处,而且元数据所用的磁盘空间也能用做 PV 的一部分使用。

扩展已存在的卷组
在这个示例中,我将扩展一个已存在的卷组,而不是创建一个新的;你可以选择其它的方式。在物理磁盘已经创建之后,扩展已存在的卷组(VG)去包含新 PV 的空间。在这个示例中,已存在的卷组命名为:MyVG01。

vgextend /dev/MyVG01 /dev/hdd

创建一个逻辑卷
首先,在卷组中从已存在的空余空间中创建逻辑卷。下面的命令创建了一个 50 GB 大小的 LV。这个卷组的名字为 MyVG01,然后,逻辑卷的名字为 Stuff。

lvcreate -L +50G --name Stuff MyVG01

创建文件系统
创建逻辑卷并不会创建文件系统。这个任务必须被单独执行。下面的命令在新创建的逻辑卷中创建了一个 EXT4 文件系统。

mkfs -t ext4 /dev/MyVG01/Stuff

增加一个文件系统卷标
增加一个文件系统卷标,更易于在文件系统以后出现问题时识别它。

e2label /dev/MyVG01/Stuff Stuff

挂载文件系统
在这个时候,你可以创建一个挂载点,并在 /etc/fstab 文件系统中添加合适的条目,以挂载文件系统。
你也可以去检查并校验创建的卷是否正确。你可以使用 df、lvs 和 vgs 命令去做这些工作。

在 LVM 文件系统中调整逻辑卷大小

从 Unix 的第一个版本开始,对文件系统的扩展需求就一直伴随,Linux 也不例外。随着有了逻辑卷管理(LVM),现在更加容易了。

☉ 如有需要,安装一个新硬盘。
☉ 可选: 在硬盘上创建一个分区。
☉ 在硬盘上创建一个完整的物理卷(PV)或者一个分区。
☉ 分配新的物理卷到一个已存在的卷组(VG)中,或者创建一个新的卷组。
☉ 从卷空间中创建一个新的逻辑卷(LV),或者用卷组中部分或全部空间扩展已有的逻辑卷。
☉ 如果创建了新的逻辑卷,那么在上面创建一个文件系统。如果对已有的逻辑卷增加空间,使用 resize2fs 命令来增大文件系统来填满逻辑卷。
☉ 在 /etc/fstab 中增加适当的条目以挂载文件系统。
☉ 挂载文件系统。

示例

这个示例展示了怎么用命令行去扩展一个已存在的卷组。它会给 /Staff 文件系统增加大约 50GB 的空间。这将生成一个可用于挂载的文件系统,在 Linux 2.6 内核(及更高)上可即时使用 EXT3 和 EXT4 文件系统。我不推荐你用于任何关键系统,但是这是可行的,我已经成功了好多次;即使是在根(/)文件系统上。是否使用自己把握风险。

警告:仅 EXT3 和 EXT4 文件系统可以在运行和挂载状态下调整大小。许多其它的文件系统,包括 BTRFS 和 ZFS 是不能这样做的。

安装硬盘
如果在系统中现有硬盘上的卷组中没有足够的空间可以增加,那么可能需要去增加一块新的硬盘,然后创建空间增加到逻辑卷中。首先,安装物理硬盘,然后,接着执行后面的步骤。

从硬盘上创建物理卷
首先需要去创建一个新的物理卷(PV)。使用下面的命令,它假设新硬盘已经分配为 /dev/hdd。

pvcreate /dev/hdd

在新硬盘上创建一个任意分区并不是必需的。创建的物理卷将被逻辑卷管理器识别为一个新安装的未处理的磁盘或者一个类型为 83 的 Linux 分区。如果你想去使用整个硬盘,创建一个分区并没有什么特别的好处,而且元数据所用的磁盘空间也能用做 PV 的一部分使用。

增加物理卷到已存在的卷组
在这个示例中,我将使用一个新的物理卷来扩展一个已存在的卷组。在物理卷已经创建之后,扩展已存在的卷组(VG)去包含新 PV 的空间。在这个示例中,已存在的卷组命名为:MyVG01。

vgextend /dev/MyVG01 /dev/hdd

扩展逻辑卷
首先,在卷组中从已存在的空余空间中创建逻辑卷。下面的命令创建了一个 50 GB 大小的 LV。这个卷组的名字为 MyVG01,然后,逻辑卷的名字为 Stuff。

lvcreate -L +50G --name Stuff MyVG01

扩展文件系统
如果你使用了 -r 选项,扩展逻辑卷也将扩展器文件系统。如果你不使用 -r 选项,该操作不行单独执行。下面的命令在新调整大小的逻辑卷中调整了文件系统大小。

resize2fs /dev/MyVG01/Stuff

你也可以去检查并校验调整大小的卷是否正确。你可以使用 df、lvs 和 vgs 命令去做这些工作。

提示

过去几年来,我学习了怎么去做让逻辑卷管理更加容易的一些知识,希望这些提示对你有价值。

◈ 除非你有一个明确的原因去使用其它的文件系统外,推荐使用可扩展的文件系统。除了 EXT2、3、和 4 外,并不是所有的文件系统都支持调整大小。EXT 文件系统不但速度快,而且它很高效。在任何情况下,如果默认的参数不能满足你的需要,它们(指的是文件系统参数)可以通过一位知识丰富的系统管理员来调优它。
◈ 使用有意义的卷和卷组名字。
◈ 使用 EXT 文件系统标签

我知道,像我一样,大多数的系统管理员都抗拒逻辑卷管理。我希望这篇文章能够鼓励你至少去尝试一个 LVM。如果你能那样做,我很高兴;因为,自从我使用它之后,我的硬盘管理任务变得如此的简单。

LVM 逻辑卷操作

LVM logical Volume Manager 逻辑卷管理
LVM:将多个硬盘和硬盘分区作为一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。

概念

未分类

查看

未分类

创建

创建 pv

pvcreate 分区路径

创建 vg

vgcreate vg名 pv路径

创建 lv

lvcreate -n 名字 -L 大小 vg名

格式化

mkfs.文件系统 lv完整路径

挂载

mount /dev/vg名/lv名 挂载目录

删除

卸载

umount /dev/vg名/lv名

删除 lv

lvremove /dev/vg名/lv名

删除 vg

vgremove vg名

删除 pv

pvremove 分区路径

去硬盘

扩展

扩展 pv

pvcreate 分区路径(相当于创建 pv)

扩展vg

vgextend vg名 新增pv路径

扩展 lv

lvextend -L +扩展量 /dev/vg名/lv名

支持在线操作,不用卸载

刷新文件系统

resize2fs /dev/vg名/lv名

缩小

卸载

umount /dev/vg名/lv名

检查文件系统

e2fsck -f /dev/vg名/lv名

减少文件系统

resize2fs /dev/vg名/lv名 减少到的大小

减少 lv 大小

lvreduce -L -减少量 /dev/vg名/lv名

减少需谨慎,文件系统减少后的大小一定要和 lv 最终大小一致。

CentOS下lvm在线扩容

最近一个case,客户由于业务增长迅速,原先在存储上划分给linux服务器的volume,可用空间不足,因此需要在存储上新增一个卷给主机,扩容空间,满足业务需求。

因为业务需要,不能重启服务器中断业务,因此通过LVM动态扩容linux服务器上的逻辑卷空间大小。

lvm扩容方法如下:

1、通过pvs,vgs,lvs 等确认要扩容的VG,LV的名称、大小等信息,以免弄错。

2、确认服务器新扫描到的volume信息,找到新设备/dev/sdj

#fdisk -l | more 

3、fdisk 给新设备分区,选择分区类型为8e,lvm格式,w保存分区。

#fdisk -l /dev/sdj1

4、创建PV

#pvcreate /dev/sdj1

#pvs

5、将新建的PV加入到VG,扩容VG

#vgextend  datavg /dev/sdj1

#vgs

6、扩容LV前,先确认LV信息,VG中可用来扩容LV的空间大小

lvdisplay

#vgs

#vgdisplay

7、扩容LV

#lvextend -L +950G /dev/datevg/lv010

#lvs

#lvdisplay

8、刷新文件系统的大小

#resize2fs  /dev/datevg/lv001

#df -h

这样,整个lvm扩容完成。

linux磁盘管理系列三:LVM的使用

LVM是什么

LVM是Linux操作系统的逻辑卷管理器。 现在有两个Linux版本的LVM,分别是 LVM1,LVM2。LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本。 LVM2几乎完全向后兼容使用LVM1创建的卷。此例外是快照(在升级到LVM 2之前,必须删除快照卷)。

LVM简介

逻辑卷管理提供了比传统的磁盘和分区视图更高级别的计算机系统上磁盘存储的视图。 这使得系统管理员可以更灵活地将存储分配给应用程序和用户。

在逻辑卷管理器的控制下创建的存储卷可以随意调整大小和移动,尽管这可能需要对文件系统工具进行一些升级。

逻辑卷管理器还允许管理用户定义组中的存储卷,允许系统管理员处理明显命名的卷组(如“development”和“sales”),而不是物理磁盘名称,例如“sda”和“sdb”

LVM基本术语

volume group (VG)

卷组是LVM中使用的最高级别的抽象。 它将逻辑卷和物理卷集合在一起成为一个管理单元。

physical volume (PV)

一个物理卷通常是一个硬盘,虽然它可能只是一个看起来像一个硬盘(如软件RAID设备)的设备。

logical volume (LV)

相当于非LVM系统中的磁盘分区。 LV作为标准块设备可见; 因此LV可以包含文件系统(例如/ home)。

physical extent (PE)

每个物理卷都被划分为数据块(称为物理扩展盘区),这些扩展盘区与卷组的逻辑盘区具有相同的大小。

logical extent (LE)

每个逻辑卷都被分割成数据块,称为逻辑盘区。 卷组中的所有逻辑卷的区段大小都是相同的。

几个概念的关系

一个具体的例子将有助于:

假设我们有一个名为VG1的卷组,这个卷组的物理盘区大小为4MB。 在这个卷组中,我们引入了2个硬盘分区/dev/hda1和/dev/hdb1。
这些分区将成为物理卷PV1和PV2(管理员可以自行决定是否提供更有意义的名称)。
PV被分成4MB块,因为这是卷组的大小。磁盘大小不同,我们在PV1中获得99个扩展盘区,在PV2中获得248个扩展盘区。
我们现在可以创建自己的逻辑卷,它可以是1到347(248 + 99)范围之间的任何大小。
当创建逻辑卷时,在逻辑盘区和物理盘区之间定义映射,例如, 逻辑盘区1可以映射到PV1的物理盘区51上,写入逻辑盘的第一个4MB的数据实际上被写入到PV1的第51盘区。

映射模式

线性映射 : 将分配一定范围的PE到LV的一个区域,例如LE 1 – 99映射到PV1,LE 100 – 347映射到PV2。

分条映射 : 将跨多个物理卷交织逻辑盘区的块,这个方式一定程度上提高了性能,具体如下

  1st chunk of LE[1] -> PV1[1], #第一个逻辑块在PV1设备上, 第二个在PV2设备上,等等。
  2nd chunk of LE[1] -> PV2[1],
  3rd chunk of LE[1] -> PV3[1],
  4th chunk of LE[1] -> PV1[2],

Snapshots(快照):

这是LVM提供的一个非常棒的功能就是快照了,他允许管理员创建一个新的块设备来呈现一个逻辑卷的的精确副本,在某个时间冻结,管理员可以及时备份指定一致状态下的数据,备份完毕就可以删除设备了。

快照最初包含有关快照的一些元数据,但没有来自源逻辑卷的实际数据。快照使用写时复制(copy on write)技术来检测数据在原始数据块中何时更改。它将拍摄快照时保存的值复制到快照卷中的块中,然后允许将新数据存储在源块中。

随着更多块从源逻辑卷上的原始值发生更改,快照大小也会增加。如果快照卷变满,它将被丢弃,所以分配足够的空间是非常重要的,具体取决于你数据的变换情况,如果快照大小和原始数据一样大,它将永远不会溢出的。

安装LVM

[root@centos7 ~]$ rpm -q lvm2                           # 查看lvm2是否安装了, 我使用的centos7,这是安装的了
lvm2-2.02.171-8.el7.x86_64
[root@centos7 ~]$ # yum -y install lvm2                 # 没有安装的话使用yum安装

常用命令简介

[root@centos7 ~]$ pv                                                   # 使用tab按键获取pv相关命令
pvchange   pvck       pvcreate   pvdisplay  pvmove     pvremove   pvresize   pvs        pvscan
[root@centos7 ~]$ vg                                                   # 使用tabl按键获取vg相关的命令
vgcfgbackup    vgck           vgdisplay      vgimport       vgmknodes      vgrename       vgsplit
vgcfgrestore   vgconvert      vgexport       vgimportclone  vgreduce       vgs            
vgchange       vgcreate       vgextend       vgmerge        vgremove       vgscan         
[root@centos7 ~]$ lv                                                   # 使用tabl按键获取lv先关的命令
lvchange     lvdisplay    lvmconf      lvmdump      lvmsadc      lvremove     lvs          
lvconvert    lvextend     lvmconfig    lvmetad      lvmsar       lvrename     lvscan       
lvcreate     lvm          lvmdiskscan  lvmpolld     lvreduce     lvresize   

上面的命令比较多,简单介绍几个常用的命令。

  • pv打头的:代表pv相关的命令
  • vg带头的:代表vg相关的命令
  • lv带头的: 代表lv相关的命令
  • create:创建相关
  • remove:移除相关
  • display:显示相关
  • import:导入 相关
  • export:导出相关
  • rename:重命名
  • vgchange:改变状态相关
  • extend:扩展相关
  • reduce:缩进相关

使用LVM

pv创建

pv作用:初始化磁盘和磁盘分区

在将磁盘或者磁盘分区用作物理卷(PV)之前,你需要对其进行初始化工作。

[root@centos7 ~]$ pvcreate /dev/sdb1

注意:

  • 不建议对整个磁盘做PV初始化工作。因为其他操作系统不能识别LVM元数据,导致我们认为磁盘是空闲的,重新设置分区覆盖原有数据
  • 如果是分区需要调整分区的类型为LVM(代码为8e)
    分区并设置分区类型
[root@centos7 ~]$ fdisk -l

Disk /dev/sda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000b0b8a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   270534655   134217728   83  Linux
/dev/sda3       270534656   372934655    51200000   83  Linux
/dev/sda4       372934656   419430399    23247872    5  Extended
/dev/sda5       372938752   413898751    20480000   83  Linux

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x93d380cf

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   8e  Linux LVM
/dev/sdb2         2099200     4196351     1048576   8e  Linux LVM

Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x73afb36f

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1            2048     2099199     1048576   8e  Linux LVM
/dev/sde2         2099200     6293503     2097152   8e  Linux LVM

Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x7e0900d8

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048     2099199     1048576   8e  Linux LVM
/dev/sdd2         2099200    12584959     5242880   8e  Linux LVM

Disk /dev/sdc: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xc56b90d8

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     2099199     1048576   8e  Linux LVM
/dev/sdc2         2099200     4196351     1048576   8e  Linux LVM

Disk /dev/sdf: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@centos7 ~]$ partprobe 
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
[root@centos7 ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0  128G  0 part 
├─sda3   8:3    0 48.8G  0 part /
├─sda4   8:4    0  512B  0 part 
└─sda5   8:5    0 19.5G  0 part /app
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0    1G  0 part 
└─sdb2   8:18   0    1G  0 part 
sdc      8:32   0   20G  0 disk 
├─sdc1   8:33   0    1G  0 part 
└─sdc2   8:34   0    1G  0 part 
sdd      8:48   0   20G  0 disk 
├─sdd1   8:49   0    1G  0 part 
└─sdd2   8:50   0    5G  0 part 
sde      8:64   0   20G  0 disk 
├─sde1   8:65   0    1G  0 part 
└─sde2   8:66   0    2G  0 part 
sdf      8:80   0   20G  0 disk 
sr0     11:0    1  8.1G  0 rom  /run/media/root/CentOS 7 x86_64

上面我们在/dev/sd{b,c,d,e}这4个盘每个都有2个类型为lvm的盘。接下来使用pvcreat初始化为物理卷

[root@centos7 ~]$ pvcreate /dev/sd{b1,b2,c1,c2,d1,d2,e1,e2} -y        # 这里加入了-y选项,之前的盘有文件系统的。 我这里强制创建了
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Wiping xfs_external_log signature on /dev/sdb2.
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdc2" successfully created.
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sdd2" successfully created.
  Physical volume "/dev/sde1" successfully created.
  Physical volume "/dev/sde2" successfully created.

pv信息查看

[root@centos7 ~]$ pvs                                           # 详细信息可以使用pvdisplay查看
  PV         VG         Fmt  Attr PSize    PFree   
  /dev/sdb1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sdb2             lvm2 ---     1.00g    1.00g
  /dev/sdc1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sdc2             lvm2 ---     1.00g    1.00g
  /dev/sdd1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sdd2             lvm2 ---     5.00g    5.00g
  /dev/sde1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sde2             lvm2 ---     2.00g    2.00g

vg创建

vg的创建是比较简单的。

[root@centos7 ~]$ vgcreate  vg_test_01 /dev/sd{b1,c1,d1,e1}    # 上面我们创建了8个pv,这里我们使用4个1的设备去创建vg,创建后默认vg是激活状态的
  Volume group "vg_test_01" successfully created

vg信息的查看

[root@centos7 ~]$ vgs                                 # 查看简短的信息
  VG         #PV #LV #SN Attr   VSize VFree
  vg_test_01   4   0   0 wz--n- 3.98g 3.98g
[root@centos7 ~]$ vgdisplay                           # 查看详细的信息
  --- Volume group ---
  VG Name               vg_test_01                    # vg的名字
  System ID             
  Format                lvm2                          # lvm格式, 这里是lvm2的
  Metadata Areas        4
  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                4
  Act PV                4
  VG Size               3.98 GiB                       # 这是我们4个pv的总大小
  PE Size               4.00 MiB                       # pe的大小
  Total PE              1020
  Alloc PE / Size       0 / 0                          # 分配的大小,这里我们还没有创建lv,所以为0
  Free  PE / Size       1020 / 3.98 GiB                # 分配后剩余的空间,第一个数是剩余的个数,第二个数是剩余的空间大小,2个都是剩余的只是单位表示不一样而已
  VG UUID               Y5NjjP-e3Aq-3u6E-gw6P-fLyy-Y5pN-ryyN9R  # vg设备的uuid

vg的激活

[root@centos7 ~]$ vgchange -a y vg_test_01                               # 我们上面就是激活状态的,如果我们重启系统,或者vgchange -y n命令关闭了,就需要这个命令启动下
  0 logical volume(s) in volume group "vg_test_01" now active

vg的移除

[root@centos7 ~]$ vgchange -a n vg_test_01                       # 要想移除vg,需要先关闭vg才能移除,这里先关闭
  0 logical volume(s) in volume group "vg_test_01" now active
[root@centos7 ~]$ vgremove  vg_test_01                           # 移除vg,

vg的添加成员

[root@centos7 ~]$ vgcreate  vg_test_01 /dev/sd{b1,c1,d1,e1}       # 上面我把vg删了,这里重新添加进来
  Volume group "vg_test_01" successfully created
[root@centos7 ~]$ vgextend vg_test_01  /dev/sdb2                  # 添加一个pv2到vg中来
  Volume group "vg_test_01" successfully extended

vg的删除成员

这个操作需要使用vgdisplay查看vg的使用情况和删除的pv上没有数据。如果有使用pvmove迁移完毕数据才能移除。

[root@centos7 ~]$ vgreduce  vg_test_01  /dev/sdb2
  Removed "/dev/sdb2" from volume group "vg_test_01"

lv的创建

[root@centos7 ~]$ vgdisplay                        # lv逻辑卷创建之前, 需要查看下vg信息
  --- Volume group ---
  VG Name               vg_test_01
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               3.98 GiB
  PE Size               4.00 MiB
  Total PE              1020
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1020 / 3.98 GiB
  VG UUID               sZwHea-LabA-SJaV-Wz40-qFp3-Um2w-pvmJAY

[root@centos7 ~]$ lvcreate -L 2G  -n lv_test_01 vg_test_01                 # 我们的vg是近4G的,我这里创建一个2G的lv,之前磁盘使用了文件系统慈爱有如下警告。输入y即可。
WARNING: linux_raid_member signature detected on /dev/vg_test_01/lv_test_01 at offset 4096. Wipe it? [y/n]: y
  Wiping linux_raid_member signature on /dev/vg_test_01/lv_test_01.
WARNING: ext4 signature detected on /dev/vg_test_01/lv_test_01 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/vg_test_01/lv_test_01.
  Logical volume "lv_test_01" created.

lv的移除

[root@centos7 ~]$ lvremove  /dev/vg_test_01/lv_test_01     
# 这个移除我们上面创建lv_test_01这个逻辑卷, 下面提示这个是活动的逻辑卷,输入y就可以了
Do you really want to remove active logical volume vg_test_01/lv_test_01? [y/n]: y
  Logical volume "lv_test_01" successfully removed

注意: 如果这个lv被挂载了。 请先umount

挂载文件系统

[root@centos7 ~]$ lvcreate -L 2G  -n lv_test_01 vg_test_01                             # 上面我们删除了lv,这里需要创建出来
  Logical volume "lv_test_01" created.
[root@centos7 ~]$ mkfs.ext4  /dev/vg_test_01/lv_test_01                                  # 这里我使用ext4 文件系统了。centos7默认使用的文件系统是xfs,但是xfs不支持缩减的

[root@centos7 ~]$ mkdir /mnt/test_01                                                    # 创建挂载点目录
[root@centos7 ~]$ mount /dev/vg_test_01/lv_test_01  /mnt/test_01/                       # 挂载逻辑卷

扩展LVM

上面我们的测试是vg是4G,我们的创建的lv是2G的,我们想给创建的lv扩展1G空间。

[root@centos7 ~]$ lvextend -L +1G /dev/vg_test_01/lv_test_01                 # 我们扩大1G, +1G表示在原有基础上扩大1G,我们这里是有vg是有空间的,没有的话就需要创建pv,扩大vg在做
  Size of logical volume vg_test_01/lv_test_01 changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents).
  Logical volume vg_test_01/lv_test_01 successfully resized.
[root@centos7 ~]$ df -h                                                      # 上面的命令提示lv已经到3G了, 但是使用df-h 查看还是2g
Filesystem                         Size  Used Avail Use% Mounted on
/dev/sda3                           48G  4.9G   41G  11% /
devtmpfs                           979M  4.0K  979M   1% /dev
tmpfs                              993M     0  993M   0% /dev/shm
tmpfs                              993M   22M  971M   3% /run
tmpfs                              993M     0  993M   0% /sys/fs/cgroup
/dev/sda1                          976M  130M  780M  15% /boot
/dev/sda5                           20G  307M   18G   2% /app
tmpfs                              199M   32K  199M   1% /run/user/0
/dev/sr0                           8.1G  8.1G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_test_01-lv_test_01  2.0G   33M  2.0G   2% /mnt/test_01
[root@centos7 ~]$ resize2fs /dev/mapper/vg_test_01-lv_test_01              # 需要增长下文件系统的,让文件系统和lv大小匹配下
meta-data=/dev/mapper/vg_test_01-lv_test_01 isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 524288 to 786432
[root@centos7 ~]$ df -h                                                    # 再次查看就是一致的了
Filesystem                         Size  Used Avail Use% Mounted on
/dev/sda3                           48G  4.9G   41G  11% /
devtmpfs                           979M  4.0K  979M   1% /dev
tmpfs                              993M     0  993M   0% /dev/shm
tmpfs                              993M   22M  971M   3% /run
tmpfs                              993M     0  993M   0% /sys/fs/cgroup
/dev/sda1                          976M  130M  780M  15% /boot
/dev/sda5                           20G  307M   18G   2% /app
tmpfs                              199M   32K  199M   1% /run/user/0
/dev/sr0                           8.1G  8.1G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_test_01-lv_test_01  3.0G   33M  3.0G   2% /mnt/test_01

注意:

  • ext系列可以使用resieze2fs去调整。其他的文件系统可以参考http://tldp.org/HOWTO/LVM-HOWTO/extendlv.html
      
  • lvextentd 有个-r选项,自动去调整大小,匹配lv和文件系统大小的。

缩减LVM

逻辑卷的大小可以减小,也可以增加。 但是,在缩小卷本身之前,请记住缩小文件系统的大小或存在于卷中的任何文件是非常重要的,否则可能会丢失数据。

注意: xfs,jsf文件系统是没法缩减lvm的,因为这2个文件系统没法缩减文件系统大小的。参考http://tldp.org/HOWTO/LVM-HOWTO/reducelv.html

主要步骤:

  1. 检查空间使用情况和分析
      
  2. umount设备
      
  3. 缩减文件系统大小
      
  4. 缩减lv大小
      
  5. 恢复挂载设备

上面我们的逻辑卷是3G的大小,在缩减之前我们需要确保缩减的空间不能影响数据的存放的。

检查工作

[root@centos7 ~]$ cp -a /etc/ /mnt/test_01/                              # 我这里模拟下,只能目录有文件的情况 
[root@centos7 ~]$ du -sh /mnt/test_01/                                   # 查看下大小
42M    /mnt/test_01/
[root@centos7 ~]$ df -h                                                   # 查看逻辑卷分区利用情况 ,数据才存放76M,我们的逻辑卷都3G呢, 如果我们想缩减1G,完全没有问题的。
Filesystem                         Size  Used Avail Use% Mounted on
/dev/sda3                           48G  4.9G   41G  11% /
devtmpfs                           979M  4.0K  979M   1% /dev
tmpfs                              993M     0  993M   0% /dev/shm
tmpfs                              993M   22M  971M   3% /run
tmpfs                              993M     0  993M   0% /sys/fs/cgroup
/dev/sda1                          976M  130M  780M  15% /boot
/dev/sda5                           20G  307M   18G   2% /app
tmpfs                              199M   32K  199M   1% /run/user/0
/dev/sr0                           8.1G  8.1G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_test_01-lv_test_01  3.0G   76M  3.0G   3% /mnt/test_01

缩减空间

[root@centos7 ~]$ umount /dev/vg_test_01/lv_test_01                           # 取消挂载
[root@centos7 ~]$ resize2fs  /dev/vg_test_01/lv_test_01  1G                   # resieze2fs定义下文件系统大小
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/vg_test_01/lv_test_01' first.

[root@centos7 ~]$ e2fsck -f /dev/vg_test_01/lv_test_01                        #上面的命令要检查,那就检查下
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg_test_01/lv_test_01: 3614/196608 files (0.1% non-contiguous), 42361/786432 blocks
[root@centos7 ~]$ resize2fs  /dev/vg_test_01/lv_test_01  1G                   # 检查完,那就执行缩减文件系统大小
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg_test_01/lv_test_01 to 262144 (4k) blocks.
The filesystem on /dev/vg_test_01/lv_test_01 is now 262144 blocks long.
[root@centos7 ~]$ lvreduce  -L 1G /dev/vg_test_01/lv_test_01                  # 缩减下逻辑卷到1G,这里有提示,缩减可能会丢失数据,输入y即可
  WARNING: Reducing active logical volume to 1.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg_test_01/lv_test_01? [y/n]: yG                 
  Size of logical volume vg_test_01/lv_test_01 changed from 3.00 GiB (768 extents) to 1.00 GiB (256 extents).
  Logical volume vg_test_01/lv_test_01 successfully resized.
[root@centos7 ~]$ mount /dev/vg_test_01/lv_test_01  /mnt/test_01/            # 恢复挂载
[root@centos7 ~]$ ll /mnt/test_01/
total 28
drwxr-xr-x. 140 root root 12288 Dec  7 13:54 etc
drwx------.   2 root root 16384 Dec  7 15:47 lost+found
[root@centos7 ~]$ df -h                                                     # 检查下
Filesystem                         Size  Used Avail Use% Mounted on
/dev/sda3                           48G  4.9G   41G  11% /
devtmpfs                           979M  4.0K  979M   1% /dev
tmpfs                              993M     0  993M   0% /dev/shm
tmpfs                              993M   22M  971M   3% /run
tmpfs                              993M     0  993M   0% /sys/fs/cgroup
/dev/sda1                          976M  130M  780M  15% /boot
/dev/sda5                           20G  307M   18G   2% /app
tmpfs                              199M   32K  199M   1% /run/user/0
/dev/sr0                           8.1G  8.1G     0 100% /run/media/root/CentOS 7 x86_64
/dev/mapper/vg_test_01-lv_test_01  944M   52M  825M   6% /mnt/test_01

迁移LVM的vg

移动vg到另外一个机器上

主要步骤:

  1. 检查和分析

  2. 一些预处理工作

  3. umount文件系统
      

  4. 设置卷组非活动
      
  5. 导出卷组
      
  6. 取出设备,插入到新机器
      
  7. 导入卷组
      
  8. 激活卷组
      
  9. 挂载文件系统

检查分析

[root@centos7 ~]$ vgs
  VG         #PV #LV #SN Attr   VSize VFree
  vg_test_01   4   1   0 wz--n- 3.98g 2.98g
[root@centos7 ~]$ pvs
l  PV         VG         Fmt  Attr PSize    PFree   
  /dev/sdb1  vg_test_01 lvm2 a--  1020.00m       0 
  /dev/sdb2             lvm2 ---     1.00g    1.00g
  /dev/sdc1  vg_test_01 lvm2 a--  1020.00m 1016.00m
  /dev/sdc2             lvm2 ---     1.00g    1.00g
  /dev/sdd1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sdd2             lvm2 ---     5.00g    5.00g
  /dev/sde1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sde2             lvm2 ---     2.00g    2.00g
[root@centos7 ~]$ lvs
  LV         VG         Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_test_01 vg_test_01 -wi-ao---- 1.00g                                                    

我们使用lvs,vgs,pvs分别查看信息。发现我们vg是3G的大小。lv是1G的大小。但是vg的pv来自不同的磁盘的。我们要迁移vg。不能把包含pv都迁移过去把。 那这一下子需要4个盘的。

我们把pv数据迁移下,到时候摘盘的时候只那一个就可以多好。 发现/dev/sdd2是一个5G的盘。 打算使用/dev/sdd这个盘作为迁移盘来迁移数据。

一些预处理工作

[root@centos7 ~]$ umount /mnt/test_01/                                    # 去除挂载
[root@centos7 ~]$ vgchange  -an vg_test_01                                # 设置vg不激活
  0 logical volume(s) in volume group "vg_test_01" now active
[root@centos7 ~]$ pvmove /dev/sd{b1,c1,e1}                                 # 迁移pv数据
  /dev/sdb1: Moved: 0.00%
  /dev/sdb1: Moved: 100.00%
[root@centos7 ~]$ pvs                                                      # 确保pv都是空的,没有数据存放了。
  PV         VG         Fmt  Attr PSize    PFree   
  /dev/sdb1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sdb2             lvm2 ---     1.00g    1.00g
  /dev/sdc1  vg_test_01 lvm2 a--  1020.00m 1016.00m
  /dev/sdc2             lvm2 ---     1.00g    1.00g
  /dev/sdd1  vg_test_01 lvm2 a--  1020.00m       0 
  /dev/sdd2  vg_test_01 lvm2 a--    <5.00g   <5.00g
  /dev/sde1  vg_test_01 lvm2 a--  1020.00m 1020.00m
  /dev/sde2             lvm2 ---     2.00g    2.00g

[root@centos7 ~]$ vgreduce vg_test_01  /dev/sd{b1,c1,e1}                   # 缩减vg 去除b1,c1,e1
  Removed "/dev/sdb1" from volume group "vg_test_01"
  Removed "/dev/sdc1" from volume group "vg_test_01"
  Removed "/dev/sde1" from volume group "vg_test_01"
[root@centos7 ~]$ pvremove /dev/sd{b1,c1,e1}                               # 移除pv,这里提示,
  Lables on physical volume "/dev/sdb1" sucdessfully wiped.
  Labels on physical volume "/dev/sdc1" successfully wiped.
  Labels on physical volume "/dev/sde1" successfully wiped.

导出vg

[root@centos7 ~]$ vgdisplay                                       # 导出前的确认
  --- Volume group ---
  VG Name               vg_test_01
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  24
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               5.99 GiB
  PE Size               4.00 MiB
  Total PE              1534
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       1278 / 4.99 GiB
  VG UUID               sZwHea-LabA-SJaV-Wz40-qFp3-Um2w-pvmJAY

[root@centos7 ~]$ vgexport vg_test_01                                    # 导出vg发现有激活的设备,需要关闭
  Volume group "vg_test_01" has active logical volumes
[root@centos7 ~]$ vgchange -an vg_test_01                                # 设置为非激活
  0 logical volume(s) in volume group "vg_test_01" now active
[root@centos7 ~]$ vgexport vg_test_01                                    # 导出, 要看到成功导出才可以,这里注意了, 如果这个vg名字和目标机器有重名的话, 这里使用rename改下在导出
  Volume group "vg_test_01" successfully exported

[root@centos7 ~]$ sync                                                   # 多执行几次sync。 防止内存和磁盘没有同步的问题。
[root@centos7 ~]$ sync
[root@centos7 ~]$ sync
[root@centos7 ~]$ sync

我这里把这个磁盘取出来安装到另外一个机器上面。下面的一部分操作在新机器上执行。注意啦。

识别硬件

[root@centos6 ~]$ /git/Bash/other/scan_scsi_device.sh                             # 执行下扫描硬件脚本,我自己写的,后面把这个bash脚本贴出来
start scan
/sys/devices/pci0000:00/0000:00:07.1/host0/scsi_host/host0/scan scan finished.
/sys/devices/pci0000:00/0000:00:07.1/host1/scsi_host/host1/scan scan finished.
/sys/devices/pci0000:00/0000:00:10.0/host2/scsi_host/host2/scan scan finished.
end  scan
please use lsblk check
[root@centos6 ~]$ lsblk                                                           # 使用lsblk查看,可以发现,识别出来就是那个/dev/sdc
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  3.7G  0 rom  /media/CentOS_6.9_Final
sr1     11:1    1  8.1G  0 rom  /media/CentOS 7 x86_64
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0 48.8G  0 part /
├─sda3   8:3    0 19.5G  0 part /app
├─sda5   8:5    0    2G  0 part [SWAP]
├─sda4   8:4    0    2M  0 part 
└─sda6   8:6    0    1G  0 part 
sdb      8:16   0  100G  0 disk 
├─sdb1   8:17   0    1G  0 part 
├─sdb2   8:18   0   20G  0 part 
├─sdb3   8:19   0    1G  0 part 
├─sdb4   8:20   0    1K  0 part 
├─sdb5   8:21   0   20G  0 part 
├─sdb6   8:22   0    1G  0 part 
└─sdb7   8:23   0    1G  0 part 
sr2     11:2    1  3.7G  0 rom  /media/CentOS_6.9_Final_
sr3     11:3    1    2G  0 rom  /media/CentOS_6.9_Final__
sdc      8:32   0   20G  0 disk 
├─sdc1   8:33   0    1G  0 part 
└─sdc2   8:34   0    5G  0 part 

脚本内容如下

[root@centos6 ~]$ cat /git/Bash/other/scan_scsi_device.sh 
#!/bin/bash
#================================================
#FileName   :scan_scsi_device
#Author     :zhaojiedi
#Description:如果你添加了一个新的硬盘设备, 但是没有被系统识别,使用如下脚本可以识别出来, 
#DateTime   :2017-11-30 18:03:27
#Version    :V1.0
#Other      :最新版本建议从这里获取https://github.com/zhaojiedi1992/Bash
#================================================
#!/bin/bash
echo "start scan"
for i in `find /sys/devices/ -name scan`; do 
    echo "- - -" > $i
    echo  $i scan finished.
done
echo "end  scan"
echo -e "33[32mplease use lsblk check33[0m"

导入并挂载

[root@centos6 ~]$ vgscan                                               # vg扫描
  Reading all physical volumes.  This may take a while...
  Found exported volume group "vg_test_01" using metadata type lvm2
[root@centos6 ~]$ pvscan                                               # pv扫描
  PV /dev/sdc1    is in exported VG vg_test_01 [1020.00 MiB / 0    free]
  PV /dev/sdc2    is in exported VG vg_test_01 [5.00 GiB / 4.99 GiB free]
  Total: 2 [5.99 GiB] / in use: 2 [5.99 GiB] / in no VG: 0 [0   ]
[root@centos6 ~]$ vgimport vg_test_01                                  # 确认无错误的就导入。
  Volume group "vg_test_01" successfully imported
[root@centos6 ~]$ vgs                                                  # 查看下vg信息
  VG         #PV #LV #SN Attr   VSize VFree
  vg_test_01   2   1   0 wz--n- 5.99g 4.99g
[root@centos6 ~]$ vgchange -ay vg_test_01                              # 激活vg
  1 logical volume(s) in volume group "vg_test_01" now active
[root@centos6 ~]$ mkdir /mnt/new_test                                  # 创建挂载点
[root@centos6 ~]$ mount /dev/vg_test_01/lv_test_01  /mnt/new_test/     # 挂载
[root@centos6 ~]$ du -sh /mnt/new_test/                                # 确认文件没有丢失
45M    /mnt/new_test/

快照LVM

分析下当前环境,我把vg移动到centos6上了。一下操作在centos6上执行的。

[root@centos6 ~]$ vgs                                        # 查看下vg信息, 一共6G,还有5G呢。
  VG         #PV #LV #SN Attr   VSize VFree
  vg_test_01   2   1   0 wz--n- 5.99g 4.99g
[root@centos6 ~]$ pvs                                       # 有2个pv
  PV         VG         Fmt  Attr PSize    PFree
  /dev/sdc1  vg_test_01 lvm2 a--u 1020.00m    0 
  /dev/sdc2  vg_test_01 lvm2 a--u    5.00g 4.99g

我们刚才给/mnt/new_test目录挂载逻辑卷vg_test_01。假如我们的/mnt/new_test的内容一直在变化。想去备份数据就需要快照卷了。

创建快照

[root@centos6 etc]$ lvcreate  -L 500M -s -p r -n vg_test_01_snapshot /dev/vg_test_01/lv_test_01       # -L指定大小, -s 表示创建快照而不是普通逻辑卷,-p r 指定权限为只读的, -n指定名字
  Logical volume "vg_test_01_snapshot" created.

注意: 如果使用的xfs文件系统, 挂载的时候需要加入nouuid,ro选项,且创建快照的时候不能指定-p r选项。具体参考: http://tldp.org/HOWTO/LVM-HOWTO/snapshots_backup.html

模拟一些数据修改操作

[root@centos6 etc]$ echo "zhaojiedi1992" >>/mnt/new_test/zhaojiedi1992.txt                            # 制作一些修改情况
[root@centos6 etc]$ vim /mnt/new_test/etc/motd

监控快照情况

[root@centos6 ~]$ lvdisplay  /dev/vg_test_01/vg_test_01_snapshot 
  --- Logical volume ---
  LV Path                /dev/vg_test_01/vg_test_01_snapshot
  LV Name                vg_test_01_snapshot
  VG Name                vg_test_01
  LV UUID                pZ8x2u-lqPA-uLef-P816-dS8V-wZ0y-PKWWwL
  LV Write Access        read only                                         #只读的
  LV Creation host, time centos6.magedu.com, 2017-12-02 06:11:56 +0800
  LV snapshot status     active destination for lv_test_01                 # 这是lv_test_01的快照
  LV Status              available
  # open                 0
  LV Size                1.00 GiB                                          # 快照的总大小
  Current LE             256
  COW-table size         500.00 MiB
  COW-table LE           125
  Allocated to snapshot  0.01%                                             # 这个地方可以看当前快照占用情况。 
  Snapshot chunk size    4.00 KiB
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

挂载快照并备份

[root@centos6 etc]$ mkdir /mnt/test_bak                                            # 创建一个快照挂载目录
[root@centos6 etc]$ mount /dev/vg_test_01/vg_test_01_snapshot  /mnt/test_bak/      # 挂载,因为我们上面创建快照的时候指定-pr只读的
mount: block device /dev/mapper/vg_test_01-vg_test_01_snapshot is write-protected, mounting read-only
[root@centos6 etc]$ cat /mnt/test_bak/                                             # 快照后的zhaojiedi1992.txt没有的。
etc/        lost+found/ 
[root@centos6 etc]$ cat /mnt/test_bak/etc/motd                                     # 这个地方的文件也是快照前的样子。没有问题
Welcom you this system
[root@centos6 etc]$ tar -jcvf /root/test.tar.bz --acl --selinux  --xattrs /mnt/test_bak/   # 备份数据赶紧的

移除快照

[root@centos6 etc]$ umount /mnt/test_bak/                                    # 取消挂载
[root@centos6 etc]$ lvremove /dev/vg_test_01/vg_test_01_snapshot             # 移除了快照卷
Do you really want to remove active logical volume vg_test_01_snapshot? [y/n]: y
  Logical volume "vg_test_01_snapshot" successfully removed

Linux两块磁盘挂载指向一个文件夹LVM磁盘管理(三)

注意:任何磁盘的操作有可能损坏里面数据,请提前备份数据,切记!切记!切记!

0x00:LVM常用命令对照。

针对LVM底层PV的一些基本操作

对于底层的PV而言,操作的命令如下表所示:

未分类

针对LVM中层VG的一些基本操作

对于中层的VG而言,操作的命令如下表所示

未分类

针对LVM上层LV的一些基本操作

对于上层的LV而言,操作命令如下表所示:

未分类

Linux两块磁盘挂载指向一个文件夹LVM磁盘管理(二)

注意:任何磁盘的操作有可能损坏里面数据,请提前备份数据,切记!切记!切记!

0x00:前言

VG卷组的总空间是受物理磁盘大小限制,本教程有3块物理磁盘分别是100M、200M、300M,那么VG卷组总空间就是600M;而VG下所有的LV累加的总空间又受限于VG。

使用过程中LV早晚会用完,那么上面的/LVM挂载点只能同时挂载一个,而有些程序不能支持有两个文件目录,比如WEB只有一个/,还有MySQL。

0x01:扩展VG卷组、缩小VG卷组

1)扩展VG卷组

上一章讲我看到添加了3块物理磁盘,第一块(/dev/sdb1)已经加入VG组,这次来把第二块(/dev/sdc1)加入到之前的那个vgdata的VG组里。

首先还是格式化磁盘,并创建磁盘分区/dev/sdc1。这里图略,和之前一样。

# fdisk /dev/sdc  //显示创建磁盘并和格式化,略去一些命令

略。

# pvcreate /dev/sdc1   //普通磁盘转换成PV
# pvs  //查看VG组信息
# vgextend vgdata /dev/sdc1   //加入VG组,vgdata要加入VG组名,/dev/sdc1新PV

图里可以看到磁盘第一次pvs里只有一个PV,添加后,第二次pvs就又有多出一块PV。

未分类

# vgdisplay  //查看VG卷组详细信息,VG的总空间已经由之前100M变成300M

未分类

2).缩小卷组

实际使用中,因为磁盘损坏,或空间分配问题,我们需要从VG卷组删除一个PV物理卷。用过的PV物理卷肯定会被写入数据,那么在移走PV前,我们要先迁移数据。

先用pvdisplay命令看看上面PE块被写了多少数据,假如/dev/sdb1是要移走的物理硬盘。

注意,目的地空闲空间要大于/dev/sdb1。

我们准备了/dev/sdd1来存放迁移过来的数据。

未分类

从上图可以看出sdb1总空间是100M,然后空闲是0M,也就是使用了100M。

# pvmove -i 1 /dev/sdb1 /dev/sdd1  //将sdb1数据移动到sdd1里,
                                              -i 1是每1秒钟报告一次数据迁移的进度。
# vgreduce vgdata /dev/sdb1  //将/dev/sdb1从vgdata卷组中移除
#  pvremove /dev/sdb1  //将/dev/sdb1移除出PV

未分类

结果:数据没有任何丢失。

未分类

0x02:扩展LV、缩小LV逻辑卷

1)VG卷组又有新的空间,而刚才创建的lvData(/dev/sdb1)已经使用完了,我们来扩展LV。

# lvextend –L +50M /dev/vgdata/lvData
或者
# lvextend –l 150M /dev/vgdata/lvData

-L和-l区别,-L后是写你要增加多少,而-l是写你要增加到的总数。

执行命令后我们发现LV size变成150M了。

未分类

LV扩容完系统还没有识别,需要用resize2fs来更新,系统才能识别到。

# resize2fs /dev/vgdata/lvData

未分类

2)缩小LV(逻辑卷)空间。

使用过程中LV空间总会分配不合理或大或小,如果分配大了,不用又造成空间浪费,现在将LV(逻辑卷)缩小以分配给其他LV(逻辑卷)用。

我们之前创建了一个LV(逻辑卷),挂载到了/LVM下。

未分类

调整钱我们先要卸载挂载点,因为挂载后是使用状态,不允许操作。如图,卸载成功。

# umount /LVM

未分类

检查文件系统是否有坏块,这部检查必须要做。

# e2fsck -f /dev/mapper/vgdata-lvData

未分类

从上面df -h 知道,总空间287M,使用128M,剩余146M空间。我们缩小总空间到250M,做演示。

注意:缩小LV前,先要缩小PV,resize2fs在前,lvreduce在后,顺序不能错。

# resize2fs /dev/mapper/vgdata-lvData 250M  //缩小PV

未分类

# lvreduce -L 250M /dev/mapper/vgdata-lvData
或
# lvreduce -L -50M /dev/mapper/vgdata-lvData  //-50M,在原基础上减去50M空间。

未分类

好了,缩减成功,挂载看看。

# mount -a

# mount /dev/vgdata/lvData  /lvm

因为PE默认4M,我们给的250M的PE不一定对其,所以系统会从新计算PE倍数来对其,显示的数就会小于我们写的数。

未分类

注意:/dev/mapper/vgdata-lvData和/dev/vgdata/lvData是一样的,指向同一路径。

查看PV有多少空闲空间。显示多出48M的空闲空间。

# pvs

未分类

0x03:LV测试篇

写此文章的时候,我就在想如果物理磁盘空间不够,但是LV分配很大,会发生什么现象。

看下图,我在虚拟机里创建了一个5G的虚拟磁盘文件放到D盘。我的电脑D盘,用一些其他东西故意填满,只留下了很少的空闲空间。

下面还有个3G的磁盘,我放到了C盘,C盘空闲空间充足。

未分类

接着将上面创建两个盘在系统里转换成PV物理卷->加入VG卷组->加入LV卷。

未分类

LVM的存放数据的规律是由那个PV先被添加就先存放到哪个PV上,直到PV存满才到下一个PV上存。

sde1就是我们放到上图显示D盘的那个文件,一会写文件先往sde1里写,然后在往sdf1里写。

我们找来一个ISO镜像(大于4G的文件),来往里面拷贝数据,看看发生什么?

未分类

上传数据的过程中,D盘空间用完了,LVM而并没有尝试切换到sdf1的3G这空间去复制,而是直接报了系统错误,而且系统因为没有空间,直接退出了,重新启动都没成功,只好将D盘里删除一些文件,才将系统重新启动。

未分类

总结,PV的设置最大值不能超过物理磁盘的空间,否则会出现丢失数据的问题。

0x04:LVM快照

(转:http://www.linuxidc.com/Linux/2017-05/143774.htm)。

LVM快照是一种以空间换时间时间的方式制作的lvm卷副本。它只在lvm中工作,并只在源逻辑卷发生改变时占用快照卷的空间。如果源卷的变化达到1GB这么大,快照卷同样也会产生这样大的改变。因而,对于空间有效利用的最佳途径,就是总是进行小的修改。如果快照将存储空间消耗殆尽,我们可以使用lvextend来扩容。而如果我们需要缩减快照所占用卷的大小,可以使用lvreduce。实验如下:目标逻辑卷信息如下:

$ pvs
PV         VG   Fmt  Attr PSize PFree
/dev/sdb   vg0  lvm2 a--  7.00g    0 
/dev/sdd1  vg0  lvm2 a--  7.00g 1.99g
$ vgs
VG   #PV #LV #SN Attr   VSize  VFree
vg0    2   1   0 wz--n- 13.99g 1.99g
$ lvs
LV   VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv0  vg0  -wi-ao---- 12.00g

现在对逻辑卷lv0创建快照,命名为snaplv0

$ lvcreate -s -n snaplv0 -p r -L 1G /dev/vg0/lv0
Logical volume "snaplv0" created.
$ vgs
VG   #PV #LV #SN Attr   VSize  VFree   
vg0    2   2   1 wz--n- 13.99g 1016.00m
$ lvs
LV   VG   Attr   LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv0     vg0  owi-aos--- 12.00g 
snaplv0 vg0  sri-a-s---  1.00g      lv0    0.00

这里/dev/vg0/lv0的挂载点为/mnt。往/mnt里面写入300MB的随机文件,再观察快照情况,可以看 到,快照对应的Data一项有所增长:

$ dd if=/dev/urandom of=/mnt/2.txt bs=1M count=300
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 27.5877 s, 11.4 MB/s
$ ls
1.txt  2.txt  data
$ lvs
LV   VG   Attr   LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
lv0  vg0  owi-aos--- 12.00g
snaplv0 vg0  sri-a-s---  1.00g      lv0    29.42

用snaplv0对逻辑卷进行恢复,注意恢复之前需要先将对应的逻辑卷卸载。恢复之后可以看到,原有的snaplv0消失,因此可以得出结论,LVM的快照是一次性的:

$ umount /mnt
$ lvconvert --merge /dev/vg0/snaplv0
Merging of volume snaplv0 started.
lv0: Merged: 71.0%
lv0: Merged: 91.9%
lv0: Merged: 100.0%
$ ls /dev/vg0
lv0
$ mount /dev/vg0/lv0 /mnt
$ ls /mnt
1.txt  data

如果想要删除LVM快照,用lvremove命令,后面跟上快照设备文件的绝对路径即可,例如:

$ lvremove /dev/vg0/snaplv0

0x05:删除LVM

删除LVM,先取消开机自动挂载,在取消挂载、取消LV、取消VG、取消PV,还原磁盘83类型。

# umount /lvm                            //取消挂载
# lvremove /dev/vgdata/lvData                //删除LV
# vgremove vgdata                            //删除vgdata组
# pvremove /dev/sdb1 /dev/sdc1 /dev/sdd1   //磁盘还原成普通磁盘
#  fdisk /dev/sdb1  //执行t ID输入83,让磁盘恢复普通磁盘。

Linux两块磁盘挂载指向一个文件夹LVM磁盘管理(一)

注意:任何磁盘的操作有可能损坏里面数据,请提前备份数据,切记!切记!切记!

0x00:前言

在Linux使用过程中,发现一个文件很大,比如5G,但是有两块物理磁盘一个剩下4G,一个剩3G,磁盘空间不够,这样肯定不能放进去。如果把5G文件分割了是可以放进去,但是如果有很多文件呢!这时候就可以用LVM来帮我们来管理文件是放到哪个磁盘里。

注意:LVM用于单块硬盘小于2TB的分区,如果超过2TB用part分区,不建议用LVM会识别不了。

0x01:文本对照

物理磁盘:即你购买来能拿在手里的那一块磁盘。

PV:物理卷(physical volume)。物理磁盘创建成普通磁盘83后,将类型修改成8e时,其成为LVM磁盘系统,也就是我们说的PV。

VG:逻辑卷组(Volume Group)。是将一个个的PV放到一个组里统一管理。

LV:逻辑卷(logical volume)。也就是从VG中划分的逻辑分区,在这上我们可以当成普通磁盘去使用,新建一个文件或文件夹。

0x02:版本说明

1)VMware Workstation 12 Pro 12.5.7 build-5813279
2)CentOS release 6.9 (Final)

0x03:实验环境搭建

1)安装VM虚拟机以及CentOS系统安装网上很多,略。

2)在VM里创建模拟物理磁盘,虚拟机里会自动识别。

未分类

未分类

未分类

因为做实验节省时间,所以我们将3个磁盘只分了100M、200M、300M,

从容量上我们也可以直观看到在操作的磁盘。

未分类

注意文件名不要重复

未分类

另外2个创建是一样的,重复上面步骤即可。

未分类

在系统中用命令查看,多出几块未分配的磁盘。

# fdisk -l

未分类

3)首先,把磁盘格式化成普通磁盘。

#fdisk /dev/sda

未分类

未分类

0x04:安装LVM,及创建。

将一块普通磁盘类型修改成8e时,其已经成为LVM磁盘系统里,也就是我们说的PV。

磁盘创建好了,但是LVM并不是系统自带的,尤其是2.6.9以下,需要我们自己安装。

查看系统是否安装。

rpm -qa | gre lvm

并查看内核版本。

uname -a

系统显示没有安装,我们用命令安装。

yum -y install lvm2

未分类

1)创建PV。

LVM提示已经安装完成,用pvscan命令提示没有发现PV(physical volumes)

未分类

创建PV,并重新扫描,发现了一个新的PV。

# pvcreate /dev/sdb1
# pvscan

未分类

显示PV信息,因为只创建一个PV,所以只有一个。

# pvdisplay

未分类

好了,现在将一块普通磁盘改变成LVM里最基本物理磁盘。下面我们来创建VG(磁盘管理组)。

2)创建VG(卷组),来管理PV。

# vgscan  //因为之前没有创建过VG,所以扫描没有显示。
# vgcreate vgdata /dev/sdb1   //创建vgdata并将/dev/sdb1加入
#  vgcreate vgdata /dev/sdb1  -s 8M //-s是指定PE大小,默认是4M
# vgdisplay  //显示VG信息

未分类

再次扫描,发现上面创建的“vgdata”卷组VG了。

未分类

3)有了卷组我们就可以创建LV,LV是我们真正用来写数据的,比如新建一个文本等。

# lvscan //扫描LV,之前没有建立过LV,什么也没显示
# lvcreate -L 100M -n lvData vgdata //创建LV,-L 指定LV大小为100M,-n LV名字方便区分,
vgdata 加入到vgdata组,上面创建的。
# lvdisplay

未分类

4)格式化LV及挂载

# mkfs.ext4 /dev/vgdata/lvData  //格式化lvData为ext4格式。
#  mkdir /LVM  //创建挂载点
#  mount /dev/vgdata/lvData  /LVM  //挂载到LVM下
#  df -h  显示挂载成功100M空间系统占用1.6M还要卷组占用一些,实际占用2%。

未分类

好了,到此一个完整的LVM就创建完了。

0x05:开机自动挂载

挂载点的磁盘,在重启后就会丢失,需要将配置写入/etc/fstab,让系统自动挂载。

# echo "/dev/vgdata/lvData  /LVM    ext4    defaults 0 0" >> /etc/fstab

未分类

新玩法,CentOS7中LVM通过扩展逻辑卷扩展swap空间

在我们日常运维工作中,偶尔也会遇到需要扩展swap空间的操作。扩展swap空间的方法很多,现在让我们一起来探讨一下,在LVM下扩展swap空间的方法。

1、查看一下卷组,是否还有空闲空间能用于扩展swap空间。

[root@Geeklp201 ~]# vgdisplay

未分类

从倒数第二行,我们可以看到,本机centos卷组的空闲空间小于5GB,分出1GB来扩展swap空间足够了。
  
2、查看逻辑卷。

[root@Geeklp201 ~]# lvdisplay

未分类
  
逻辑卷swap的路径为/dev/centos/swap。扩展逻辑卷swap。
  

[root@Geeklp201 ~]# lvextend -L 2GB /dev/centos/swap
Size of logical volume centos/swap changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
Logical volume centos/swap successfully resized.

扩展成功!然而,用free命令看一下,当前swap空间并未增加。还需要执行以下几步:
  

[root@Geeklp201 ~]# swapoff /dev/centos/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

未分类

增加成功!都不用去修改fstab文件,是不是很方便?

简述linux下lvm 磁盘扩容

查看扩容之前的磁盘状况

[root@localhost ~]# df -h

[root@localhost ~]# fdisk -l

创建物理卷(PV)

#pvcreate /dev/sdc ---输入磁盘实际路径

格式化新硬盘

[root@localhost ~]# mkfs.ext4 /dev/sdc

mke2fs 1.41.12 (17-May-2010)

/dev/sda is entire device, not just one partition!

Proceed anyway? (y,n) y

***询问是否继续,输入Y,确定

查看系统PV的情况:

[root@localhost ~]# pvdisplay

--- NEW Physical volume ---

PV Name               /dev/sdc

VG Name                //新建的PV的VG name是空的,下一步就是把PV加入VG

PV Size               15.00 GiB

Allocatable           NO

......

查看原VG的情况

[root@localhost ~]# vgdisplay

--- Volume group ---

VG Name               VolGroup //注意记录此名字,扩容时将新的pv加入指定的名字

System ID

Format                lvm2

Metadata Areas        1

Metadata Sequence No  3

......

扩展卷组,将/dev/sdc物理卷添加到VolGroup卷组中

[root@localhost ~]# vgextend VolGroup /dev/sdb

Volume group "VolGroup" successfully extended

至此完成新硬盘扩展!

LVM扩展空间步骤

当LV空间利用率较大即将耗尽LV空间时,我们可以将一块新的磁盘或者一块磁盘上的free空间加入LV,步骤如下:

现在/home空间如下:

[root@localhost ~]# df -h
文件系统                      容量    已用   可用   已用%    挂载点
/dev/mapper/rootvg-rootlv    7.6G   2.0G   5.2G   28%     /
/dev/sda1                    99M    11M    83M    12%     /boot
tmpfs                        125M   0      125M   0%      /dev/shm
/dev/mapper/rootvg-homelv    496M   19M    452M   4%      /home

1、新建LVM类型分区:

[root@localhost ~]# fdisk /dev/sda              \对硬盘sda进行分区操作

Command (m for help): n             \创建新的分区
First cylinder (1160-1305, default 1160):1160            \指定起始柱面
Last cylinder or +size or +sizeM or +sizeK(1160-1305, default 1305): 1305     \指定终止柱面

Command (m for help): p      \查看当前分区表信息

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280bytes

  Device Boot      Start         End      Blocks  Id  System
/dev/sda1  *           1          13      104391  83  Linux
/dev/sda2              14         395    3068415   8e  Linux LVM
/dev/sda3            396         777    3068415   8e  Linux LVM
/dev/sda4             778        1305    4241160    5  Extended
/dev/sda5             778        1159    3068383+  8e  Linux LVM
/dev/sda6            1160        1305    1172713+  83  Linux  \刚刚新建的分区

Command (m for help): t       \改变分区类型
Partition number (1-6): 6       \指定分区编号
Hex code (type L to list codes): 8e        \更改为LVM类型分区
Changed system type of partition 6 to 8e(Linux LVM)

Command (m for help): w     \保存退出
The partition table has been altered!

2、创建新的PV

[root@localhost ~]# partprobe            \使用partprobe指令更新内核的中硬盘分区表信息
[root@localhost ~]# pvcreate /dev/sda6              \创建新的PV-----------lsblk查看硬盘,可以不执行第一步,直接建立PV
 Physical volume "/dev/sda6" successfully created
[root@localhost ~]# pvscan
  PV/dev/sda2   VG rootvg   lvm2 [2.93 GB / 0    free]
  PV/dev/sda3   VG rootvg   lvm2 [2.93 GB / 0    free]
  PV/dev/sda5   VG rootvg   lvm2 [2.93 GB / 0    free]
 PV /dev/sda6               lvm2[1.12 GB]     \新创建的PV但是尚未加入任何VG组
 Total: 4 [9.90 GB] / in use: 3 [8.78 GB] / in no VG: 1 [1.12 GB]

3、将PV加入VG组

[root@localhost ~]# vgextend rootvg /dev/sda6
 Volume group "rootvg" successfully extended

[root@localhost ~]# pvscan
  PV/dev/sda2   VG rootvg   lvm2 [2.93 GB / 0    free]
  PV/dev/sda3   VG rootvg   lvm2 [2.93 GB / 0    free]
  PV/dev/sda5   VG rootvg   lvm2 [2.93 GB / 0    free]
 PV /dev/sda6   VG rootvg   lvm2 [1.12 GB / 1.12 GB free]    \已经加入rootvg组
 Total: 4 [9.89 GB] / in use: 4 [9.89 GB] / in no VG: 0 [0   ]

4、将VG组中的空闲空间划出100M到/home分区所在的LV

[root@localhost ~]# lvextend -L +100M /dev/rootvg/homelv
 Extending logical volume homelv to 612.00 MB
 Logical volume homelv successfully resized

5、使用resizefs2命令重新加载逻辑卷的大小才能生效

[root@localhost ~]# resize2fs /dev/rootvg/homelv
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/rootvg/homelv is mountedon /home; on-line resizing required
Performing an on-line resize of/dev/rootvg/homelv to 626688 (1k) blocks.
The filesystem on /dev/rootvg/homelv is now626688 blocks long.

查看增加空间后的/home空间

[root@localhost ~]# df -h
文件系统                      容量    已用   可用   已用%    挂载点
/dev/mapper/rootvg-rootlv    7.6G   2.0G   5.2G   28%     /
/dev/sda1                    99M    11M    83M    12%     /boot
tmpfs                        125M   0      125M   0%      /dev/shm
/dev/mapper/rootvg-homelv    593M   19M    544M   4%      /home