LVM 利用 linux 内核的 device-mapper 来实现存储系统的虚拟化(系统分区独立于底层硬件)。 通过 LVM ,你可以实现存储空间的抽象化并在上面建立虚拟分区( virtual partitions ),可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间, without getting caught up in the problems of fdisking a disk that is in use (and wondering whether the kernel is using the old or new partition table) and without having to move other partition out of the way. LVM 是用来方便管理的,不会提供额外的安全保证。 However, it sits nicely with the other two technologies we are using.
LVM 的基本组成块( building blocks )如下:
1, 物理卷 Physical volume (PV) :可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件( loopback file )。物理卷包括一个特殊的 header ,其余部分被切割为一块块物理区域( physical extents )。 Think of physical volumes as big building blocks which can be used to build your hard drive.
2, 卷组 Volume group (VG) :将一组物理卷收集为一个管理单元。 Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.
3, 逻辑卷 Logical volume (LV) :虚拟分区,由物理区域( physical extents )组成。 A "virtual/logical partition" that resides in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.
4, 物理区域 Physical extent (PE) :硬盘可供指派给逻辑卷的最小单位(通常为 4MB )。 A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.
5, 逻辑区域 LE(logical extent) : 逻辑区域是逻辑卷中可用于分配的最小存储单元,逻辑区域的大小取决于逻辑卷所在卷组中的物理区域的大小。

二、优 点
比起正常的硬盘分区管理, LVM 更富于弹性:
1 ), 使用卷组 (VG) ,使众多硬盘空间看起来像一个大硬盘。
2 ), 使用逻辑卷( LV ),可以创建跨越众多硬盘空间的分区。
3 ), 可以创建小的逻辑卷( LV ),在空间不足时再动态调整它的大小。
4), 在调整逻辑卷( LV )大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。
5), 可以在线( online )对逻辑卷( LV )和卷组( VG )进行创建、删除、调整大小等操作。 LVM 上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。
6), 无需重新启动服务,就可以将服务中用到的逻辑卷( LV )在线( online ) / 动态( live )迁移至别的硬盘上。
7), 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间( downtime )降低到最小。
三、创建分区 (dev/sda#)~]# fdisk /dev/sda ; 创建 3 个分区,并调为 linux lvm ,保存退出,加载到内核中(命令多执行两次 ^_^ )



四、创建物理卷 (PV)(可以创建在磁盘上,分区上,RAID上…)

pvcreate: 创建物理卷, pvmove :移动物理卷上的数据到另一个物理卷上,以方便拆物理卷(磁盘 )
pvs,psdisplay: 显示物理卷信息; pvremove ;移除物理卷, pvscan :扫描; pvck :检测
一般命名规则: /dev/VG_NAME-LV_NAME
~]# pvcreate -v /dev/sda{13,14,15} ; -v 表示显示过程

~]# pvremove DEVICE ; 直接删除指定物理卷
五、创建卷组 (VG)Vgcreate: 创建; vgsplit :切割; vgreduce :缩减; vgextend :扩展; vgremove :移除; vgdisplay :显示
vgcreate [-s| physicalextentsize PhysicalExtentSize[bBsSkKmMgGtTpPeE]]( 指定 PE 大小 ) VolumeGroupName ( 逻辑卷名 ) PhysicalDevicePath( 指定物理卷 )~]# vgcreate -s 8M smile_vg /dev/sda13 ; 指定 PE 为 8M( 默认是 4M)( 只要创建,就不能在上层改变 ) , 命名逻辑卷 smile_vg

六、扩增卷组容量
扩展 VG 容量:指定卷组和需要加入进来的 pv 卷, PE 大小创建时候已经指定了
~]# vgextend smile_vg /dev/sda14 ; 扩展 VG 的容量,就是把物理卷加入进来

七、缩小卷组容量
1 ,先 pvmove 移动数据到其它物理卷中,以免数据丢失 ( 就是备份数据)
~]#pvmove [-n| name LogicalVolume] [SourcePhysi-calVolume[:PE[-PE]…] [DestinationPhysicalVolume[:PE[-PE]…]…]]~]# pvmove -n smile_vg /dev/sda14 /dev/sda13 ;( 如果数据多,需要时间
2 ,再从卷组 (smile_vg) 中移除物理卷 (/dev/sda14)
~]#vgreduce smile_vg /dev/sda14 ; 移除 pv 物理卷
八、创建逻辑卷 (LV)Lvdispaly: 显示信息, lvcreate 创建;
-L :指定大小, -l :指定分几个
Lvcreate -L #[mMgGtT] -n NAME VolumeGroup [PhysicalVolumePath]( 还可以指定 PV 卷 )~]# lvcreate -L 2G -n lv_users smile_vg ; 创建一个 2G 的逻辑卷

九、建立文件系统并挂载到到系统上
~]# mke2fs -t ext4 -b 1024 -L MYDATA /dev/smile_vg/my_users ; 建立文件系统
~]# mkdir /mydata ~]# mount /dev/smile_vg/my_users /mydata
十、扩展逻辑卷
~]#lvextend -L +2G /dev/mapper/smile_vg-my_users ; , + 号表示增加,不用就表示扩展到多大
~]# resize2fs /dev/smile_vg/my_users ; 改变原有的文件系统识别到的大小到扩展后的大小;这里重新挂载是解决不了问题的
