烦恼一般都是想太多了。

0%

LVM的介绍及使用

LVM是Linux内核中的一个 逻辑卷组管理工具;其管理磁盘驱动器或类似的块存储设备。其利用了内核的 device-mapper 特性来给系统提供独立于底层磁盘的分区。使用LVM,抽象了你的存储然后拥有的是虚拟分区,这使 扩展/收缩 更加容易。

基本概念

  • 物理卷(PV/Physical volume)
    可在其上建立卷组的分区或硬盘。每个PV都有一个特殊的头部,并且被分隔成PE。把PV想象成用来建立硬盘驱动的巨大块。

  • 卷组(VG/Volume group)
    一组用来当作存储卷的PV(像一个硬盘一样提供服务)。其包含LV。可以把vg想象成硬盘驱动器。

  • 逻辑卷(LV、Logical volume)
    存在于卷组内的虚拟/逻辑 分区,由PE组成。把PV想象成常规分区。
  • 物理扩展(PE、Physical extend)
    PV中的最小单位,可以被分配给LV(默认是 4MB)。PE是硬盘的一部分,然后可以被分配给任何分区。

例子
Various elements of the LVM

Physical disks

Disk1 (/dev/sda):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 50 GiB (Physical volume) |Partition2 80 GiB (Physical volume) |
|/dev/sda1 |/dev/sda2 |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |

Disk2 (/dev/sdb):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Partition1 120 GiB (Physical volume) |
|/dev/sdb1 |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
LVM logical volumes

Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|Logical volume1 15 GiB |Logical volume2 35 GiB |Logical volume3 200 GiB |
|/dev/MyStorage/rootvol |/dev/MyStorage/homevol |/dev/MyStorage/mediavol |
|_ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
```

![nner workings of the version 1 of LVM. In this diagram, PE stands for a Physical Extent.](/res/500px-LVM1.svg.png)

# LV类型
除了简单的LV外,LVM支持 *snapshots(快照)、LV缓存(logical volume caching)、预分配的LV、RAID*,

## Snapshots(快照)
LVM允许你对系统以一个更效率的方式做快照。其利用了一种叫做 **COW(copy-on-write)**技术。初始建立的快照只是简单的包含对真实数据inodes的 **硬链接**。因此,如果数据一直没有改变,快照几乎只是包含了Inode的指针,而不是数据本身。当修改一个快照指向的文件或者目录,LVM会自动克隆被快照引用老的数据。所以,可以使用35GB来快照一个系统,当预计修改少于2GB的时候,可以只留下2G的空闲空间(在原始和快照分区上都要)。想要创建快照,必须在 VG内有未分配的空间。快照也会像其他卷一样消耗VG的空间。因此,如果想要使用快照来备份 root 分区,那么不要把VG的空间全部分配给 root LV。

### 配置
如此简单的就可以建立一个 快照LV:

```bash
lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-vg

上面建立这个快照,在快照卷充满以前我们只能修改100M的数据。

snap01 建立后就可以把 pv 这个LV恢复到之前的状态:

lvconvert --merge /dev/mapper/vg0-snap01

如果原始的LV是活跃的,合并会在下一次重启时发生。

合并后 快照不会继续存在。

可以建立多个快照,然后每个都可以任意合并到原始的LV。

快照可以挂载或以 dd, tar 命令备份。以 dd 备份的文件尺寸将会是 快照卷内存在的数据尺寸。想要恢复的时候,建立一个快照,挂载,接着把备份的文件解压过去。最后,和原始的LV合并。

快照的主要用途是用来提供对文件系统的冷备份。

简单命令

lvmdiskscan  # list all your devices capable of being used as a physical volume
pvcreate DEVICE # Create a physical volume on them
pvcreate /dev/sda2 #
pvdisplay # track created physical volumes

vgcreate VolGroup00 /dev/sda2 # create vg on pvs
vgextend VolGroup00 /dev/sdb1 # add vg /dev/sdb1 to vg VolGroup00
vgdisplay # track vg

vgcreate VolGroup00 /