LVM的配置

什么是LVM?

LVM是Logical Volume Management的缩写,表示逻辑卷的管理。在linux系统中,传统方式是对一块硬盘进行分区,然后管理分区,构建文件系统,而LVM则是更加先进和灵活的硬盘管理方式。

基本概念:

  • 卷组(Volume Groups): a volume group is a named collection of physical and logical volumes. Typical systems only need one Volume Group to contain all of the physical and logical volumes on the system.
  • 物理卷(Physical Volumes): correspond to disks. They are block devices that provide the space to store logical volumes.
  • 逻辑卷(Logical Volumes): correspond to partitions, they hold a file system. Unlike partitions though, logical volumes get names rather than numbers, they can span across multiple disks, and do not have to be physically contiguous.
为什么要用LVM?

使用gparted也可以挪动和扩展分区,为什么一定要用lvm呢?LVM最大的好处就是大多数操作都可以在系统运行的时候进行,而gparted要求操作对应的分区不能同时正在被使用,因此只能从gparted livecd boot才能操作。而且也会经常碰到msdos partition table format的局限,包括只有四个主分区表,以及所有逻辑分区都必须被包含在一个连续的可扩展分区里。但是LVM可以使用Volume Group里任何地方的空间,即使是在另一块硬盘上。而对于gparted来说,我们只能将多个分区挪到一起才能够扩展。对于挪动分区,不像gparted,LVM可以在一块分区正在使用时挪动它,而且即使中间被打断了也不会损失数据。如果在挪动过程中,突然系统崩溃或者断电,你只要重启系统,它就可以正常工作了。比如我拿到一块SSD时,只是插上它,连接它,然后告诉lvm把正在运行的boot filesystem在后台挪到到新的盘中,而我可以在前台继续工作。另一个使用场景就是你也许需要用一个新的更大的硬盘替换原先的硬盘。这时你可以在使用过程中将整个系统挪动到新盘上,然后将旧盘去除。

有了LVM,你可以创建任意多个逻辑卷。通常人们在第一次安装时会将整个硬盘设置成一个分区(partition),但是用LVM来扩展分区是非常容易的,最好先分配一块够用的空间,剩余的空间以后随时可以扩展或者分配它用。

使用LVM你还可以获得某个逻辑卷在任何时刻的快照(snapshot),即使是在系统运行过程中。你可以正常使用原始卷,而将快照卷做为image来备份还不用shut down the system。

如何使用LVM?

通常在linux系统安装过程中就可以设置LVM。也可以在现在的系统中安装lvm2包。

首先,你需要一个物理卷,通常是一块硬盘,然后在它上面创建LVM分区。你可以用gparted或者fdisk为整个硬盘创建一个分区,因为LVM可以把它划分成多个逻辑分区。

一旦你有了LVM分区,首先要将它初始化为一个物理卷。假定这个分区是/dev/sda1:

sudo pvcreate /dev/sda1

这个操作将LVM header写到这个分区上将其定义为一个物理卷,创建一个小空间保存metadata用来描述Volume Group的信息,分区剩下的部分做为未使用的物理扩展。

下面,我们创建一个名为foo的volume group:

sudo vgcreate foo /dev/sda1

现在我们有了一个叫做foo的卷组,里面只有一个物理卷。现在你想创建一个逻辑卷,只使用foo中的部分空间:

sudo lvcreate -n bar -L 5g foo

这条命令用卷组foo中的5g空间创建了一个叫做bar的逻辑卷。如果你正在安装系统,你也许想要创建一个逻辑卷给root,一个给swap,也许还有一个给home。你可能会用到lvs(for logical valumes)和pvs(for physical volumes),还有他们的变形lvdisplay和pvdisplay。

我们可以用下面的命令扩展逻辑卷:

sudo lvextend -L +5g foo/bar

这条命令给卷组foo中的逻辑卷bar增加5g的空间。你也可以明确地指定一个空间大小,而不是用+号来表示相对增加,也可以使用百分比,例如-l +100%FREE。新分配的空间可以从卷组的任意地方获得。如果你有多个物理卷,你可以在命令的末尾指定从某个或某几个卷中分配空间。

扩展完逻辑卷之后你需要扩展文件系统来使用新的空间。对于ext 3/4,只要运行命令:

sudo resize2fs /dev/foo/bar

如果你需要从物理卷/dev/sda1将逻辑卷bar挪出来,你可以运行命令:

sudo pvmove -n bar /dev/sda1

如果省略-n bar参数,在物理卷/dev/sda1上的所有逻辑卷都会被挪动。如果你只有两个物理卷,那么另一个物理卷就是挪动的目的地,否则你需要明确地指定目的地物理卷。参数-b表示在后台(background)运行,可以用lvs命令检查进度。

如果要创建快照(snapshot),首先要创建一个新的逻辑卷做为原始逻辑卷的克隆。克隆卷一开始不占用任何空间,但是如果原始卷上有任何改动,这些修改的block会在修改之前copy到快照卷保存。也就是说,你在原始卷上做的改动越多,快照卷需要的空间就越多。如果快照卷用光了所有分配给它的空间,它就会broken,并且不能再被使用,这之后对于原始卷的修改也不会再被保存了。使用lvs命令可以告诉你快照卷已经用掉了多少空间,如果空间满了,你可以用lvextend命令来扩展它。

要创建名为snap的逻辑卷bar的快照卷,运行命令:

sudo lvcreate -s -n snap -L 5g foo/bar

这条命令会创建一个名为snap的针对逻辑卷bar的快照卷,分配的空间是5g。因为快照卷只保存从创建时候开始的所有改动,它比原始卷要小得多。

有了快照卷,你就可以mount它并且可以看到原始卷当时的快照样子。在上面的例子中,你可以mount /dev/foo/snap,你可以修改快照卷而不会影响原始卷或者修改原始卷而不影响快照卷。如果你对root逻辑卷创建快照,然后升级某些包(packages),或者更新到新的release版本,然后发现更新版本有问题,这时候你可以将快照merge回原始卷,从而有效地将系统状态回滚到创建快照时的样子。要做到这一点,只需要运行命令:

sudo lvconvert --merge foo/snap

如果foo/snap对应的原始卷正在使用,那么reboot之后回滚就会生效。

常用命令:

1. fdisk 来检查机器上有那些硬盘:

sudo fdisk -l

2. 用lvs检查卷组和逻辑卷

sudo lvs

3. 用df检查硬盘空间的使用情况。通常显示总容量,每部分分区已使用的空闲的空间。

df

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值