1 使用LVM,硬盘驱动器或硬盘驱动器集合就会分配给一个或多个物理卷(physical volumes),物理卷无法跨越一个以上驱动器。
2 物理卷被合并成逻辑卷组(logical volume group),唯一的例外是 /boot 分区。/boot 分区不能位于逻辑卷组,因为引导装载程序无法读取它。如果你想把 / 分区放在逻辑卷上,你需要创建一个分开的 /boot分区,它不属于卷组的一部分。
由于物理卷无法跨越多个驱动器,如果你想让逻辑卷组跨越多个驱动器,你就应该在每个驱动器上创建一个或多个物理卷。
3LVM基本概念
LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。以下LVM相关术语:
(1) 物理存储介质(The physical media)
这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
(2) 物理卷(physical volume)
物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
(3) 卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
(4)逻辑卷(logical volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
(5) PE(physical extent)
每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
(6) LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
图1
从图1可以看到,PE和LE有着一一对应的关系。一个卷组由一个或多个物理卷组成,逻辑卷建立在卷组上。首先可以看到,物理卷(PV)被由大小等同的基本单元PE组成。逻辑卷就相当于非LVM系统的磁盘分区,可以在其上创建文件系统。
和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。
系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。我们也可以按照图2简单地去理解。
图2
4逻辑卷的配置使用
1>.创建和使用新的LVM逻辑卷的步骤:
l 建立LVM类型的分区 (fdisk)
l 建立LVM物理卷 (pv)
l 建立LVM卷组 (vg)
l 建立LVM逻辑卷 (lv)
l 建立文件系统 (mkfs.ext2,3,4)
l 挂载文件系统 (mount)
l 使用文件系统
2>.相关命令:
(1)物理卷相关命令:
pvcreate :创建物理卷
pvscan:在系统的所有磁盘中搜索已存在的物理卷;
pvdisplay显示指定物理卷的属性;
pvremove:将数据移到某pv上;
pvmove:删除某pv
(2)卷组相关命令
vgcreate:创建一个新的vg;
vgmove:删除卷组;
vgscan:查看总卷组;
vgdisplay:查看单个卷组的详细情况;
vgextend:把物理卷加入卷组(扩展卷组);
vgreduce:从卷组中删除某pv(缩减卷组)
(3)逻辑卷相关命令:
lvcreate:创建lv
lvscan:查看逻辑卷;
lvdisplay:显示逻辑卷的详细信息;
lvremove:删除逻辑卷
lvextend:扩展逻辑卷大小
lvreduce:缩减逻辑卷大小
(4)创建快照卷:snapshot
#Lvcreate -L #[nMgGtT] –p r –s –n snapshot_lv_name original_lv_name
-s: 创建快照卷;
-n:快照卷名字
练习:
1.使用fdisk -l 查看分区信息,可以看得到已经有/dev/sda5,/dev/sda6,/dev/sda7,/dev/sda8已经被分区好了
[root@chang ~]# fdisk -l Disk /dev/sda: 128.8 GB, 128849018880 bytes 255 heads, 63 sectors/track, 15665 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00089c7b Device Boot Start End Blocks Id System /dev/sda1 * 1 128 1024000 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 128 1403 10240000 83 Linux /dev/sda3 1403 2040 5120000 82 Linux swap / Solaris /dev/sda4 2040 15665 109444088+ 5 Extended /dev/sda5 2040 2301 2097727 8e Linux LVM /dev/sda6 2302 2563 2104483+ 8e Linux LVM /dev/sda7 2564 3217 5253223+ 8e Linux LVM /dev/sda8 3218 3610 3156741 8e Linux LVM
2.创建物理卷:
[root@chang ~]# pvdisplay /dev/sda5 Failed to find device "/dev/sda5" [root@chang ~]# pvcreate /dev/sda5 Device /dev/sda5 not found (or ignored by filtering). 发现创建失败;原因新建分区么有写进内核;上一步的时候少一个执行命令。解决办法: [root@chang ~]# partx -a call: partx -opts [device] wholedisk [root@chang ~]# partx -a /dev/sda BLKPG: Device or resource busy error adding partition 1 BLKPG: Device or resource busy error adding partition 2 BLKPG: Device or resource busy error adding partition 3 [root@chang ~]# partx -a /dev/sda //partx -a 要用两次 此时再创建新的物理卷,会看创建成功; [root@chang ~]# pvdisplay /dev/sda5 Failed to find physical volume "/dev/sda5" [root@chang ~]# pvcreate /dev/sda5 Physical volume "/dev/sda5" successfully created [root@chang ~]# pvcreate /dev/sda6 Physical volume "/dev/sda6" successfully created
3.查看两个物理卷。
[root@chang ~]# pvscan PV /dev/sda5 lvm2 [2.00 GiB] PV /dev/sda6 lvm2 [2.01 GiB] Total: 2 [4.01 GiB] / in use: 0 [0 ] / in no VG: 2 [4.01 GiB]
4.创建卷组:
[root@chang ~]# vgcreate changvg /dev/sda{5,6} Volume group "changvg" successfully created
5.查看卷组:
[root@chang ~]# vgscan Reading all physical volumes. This may take a while... Found volume group "changvg" using metadata type lvm2 [root@chang ~]# pvscan PV /dev/sda5 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] PV /dev/sda6 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] Total: 2 [4.00 GiB] / in use: 2 [4.00 GiB] / in no VG: 0 [0 ]
此时发现物理卷/dev/sda5,/dev/sda6属于卷组changvg
6.从卷组中删除一个物理卷:
[root@chang ~]# pvmove /dev/sda6 //删除物理卷的时候先把之前PV的数据移走 No data to move for changvg [root@chang ~]# vgreduce changvg /dev/sda6 // pvmove只是将数据移走,但是物理卷还在VG中此时只需使用删除命令把物理卷从VG中删除就ok啦 Removed "/dev/sda6" from volume group "changvg" [root@chang ~]# pvscan PV /dev/sda5 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] PV /dev/sda6 lvm2 [2.01 GiB] PV /dev/sda7 lvm2 [5.01 GiB] Total: 3 [9.01 GiB] / in use: 1 [2.00 GiB] / in no VG: 2 [7.02 GiB] 使用pvscan可以知道/dev/sda6已经从卷组changvg中删除
7.增加一个物理卷:
[root@chang ~]# vgextend changvg /dev/sda7 Volume group "changvg" successfully extended [root@chang ~]# pvscan PV /dev/sda5 VG changvg lvm2 [2.00 GiB / 2.00 GiB free] PV /dev/sda7 VG changvg lvm2 [5.01 GiB / 5.01 GiB free] PV /dev/sda6 lvm2 [2.01 GiB] Total: 3 [9.01 GiB] / in use: 2 [7.00 GiB] / in no VG: 1 [2.01 GiB]
8.创建逻辑卷(单位:M):
[root@chang ~]# lvcreate -L 2G -n changlv changvg Logical volume "changlv" created [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.00 GiB] inherit 以同样的方式在guptVG1上建立guptLV2和guptLV3: [root@chang ~]# lvcreate -L 2G -n changlv1 changvg Logical volume "changlv1" created [root@chang ~]# lvcreate -L 2G -n changlv2 changvg //–L 100m是逻辑卷的大小,-n后面跟的是逻辑卷的名字。 Logical volume "changlv2" created [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.00 GiB] inherit ACTIVE '/dev/changvg/changlv1' [2.00 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit
9.建文件系统(格式化):
[root@chang ~]# mkfs.ext4 /dev/changvg/changlv [root@chang ~]# mkfs.ext4 /dev/changvg/changlv1 [root@chang ~]# mkfs.ext4 /dev/changvg/changlv2
10.挂载逻辑卷:
先在/tmp下创建changlv,changlv1,changlv2:
[root@chang ~]# mkdir /tmp/changl{v,v1,v2} 再把changlv挂载到/tmp/changlv,把changlv1和changlv2挂载到/tmp/changlv1和/tmp/changlv2上并查看挂载情况: [root@chang ~]# mount /dev/changvg/changlv /tmp/changlv [root@chang ~]# mount /dev/changvg/changlv1 /tmp/changlv1 [root@chang ~]# mount /dev/changvg/changlv2 /tmp/changlv2 [root@chang ~]# mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext4 (rw) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sr0 on /mnt type iso9660 (ro) /dev/mapper/changvg-changlv on /tmp/changlv type ext4 (rw) /dev/mapper/changvg-changlv1 on /tmp/changlv1 type ext4 (rw) /dev/mapper/changvg-changlv2 on /tmp/changlv2 type ext4 (rw)
11.自动加载文件系统
在/etc/fstab这个文件中加入以下内容: [root@chang ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sun Sep 6 02:18:09 2015 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=d5509200-4641-4e0c-a7ff-d424bdc56001 / ext4 defaults 1 1 UUID=fb394fa9-e2a8-4ed2-8cb1-c3728d685f10 /boot ext4 defaults 1 2 UUID=1a25e5fc-d479-445c-a4b4-e01208932468 swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/changvg/changlv /tmp/changlv ext4 defaults 0 0 /dev/changvg/changlv1 /tmp/changlv1 ext4 defaults 0 0 /dev/changvg/changlv2 /tmp/changlv2 ext4 defaults 0 0
12.删除一个逻辑卷
注意在删除前要先卸载这个逻辑卷。
操作如下:
[root@chang ~]# umount /tmp/changlv1 [root@chang ~]# lvremove /dev/changvg/changlv1 Do you really want to remove active logical volume changlv1? [y/n]: y Logical volume "changlv1" successfully removed [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.00 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit
13.扩展、缩减逻辑卷大小
[root@chang ~]# lvextend -L +1G /dev/changvg/changlv Size of logical volume changvg/changlv changed from 2.00 GiB (512 extents) to 3.00 GiB (768 extents). Logical volume changlv successfully resized [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [3.00 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit //以为只是使用扩展命令就行了吗。错了,这只是扩展了逻辑卷,并没有把物理卷给扩展 [root@chang ~]# e2fsck -f /dev/changvg/changlv //强制检查lv [root@chang ~]# resize2fs /dev/changvg/changlv //重新定义分区大小 把changlv增少100MB: 缩减逻辑卷恰好跟扩展逻辑卷相反 [root@chang ~]# e2fsck -f /dev/changvg/changlv //强制检查lv [root@chang ~]# resize2fs /dev/changvg/changlv 100M //缩减逻辑卷 [root@chang ~]# lvreduce -L -100M -n /dev/changvg/changlv //缩减物理边界 WARNING: Reducing active logical volume to 2.90 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce changlv? [y/n]: y //此时会出现一个对话框(因为缩减逻辑卷有风险) Size of logical volume changvg/changlv changed from 3.00 GiB (768 extents) to 2.90 GiB (743 extents). Logical volume changlv successfully resized [root@chang ~]# lvscan ACTIVE '/dev/changvg/changlv' [2.90 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit 然后挂载便可使用: [root@chang ~]# mount /dev/sda2 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda1 on /boot type ext4 (rw) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sr0 on /mnt type iso9660 (ro) /dev/mapper/changvg-changlv2 on /tmp/changlv2 type ext4 (rw) /dev/mapper/changvg-changlv on /tmp/changlv type ext4 (rw)
14.创建快照卷:
[root@chang changlv]# cp /etc/fstab ./ [root@chang changlv]# cp /etc/passwd ./ [root@chang changlv]# ls fstab lost+found passwd 先在之前的逻辑卷添加点东西 创建快照卷: [root@chang ~]# lvcreate -L 100M -s -n snap /dev/changvg/changlv Logical volume "snap" created [root@chang ~]# lvscan ACTIVE Original '/dev/changvg/changlv' [2.90 GiB] inherit ACTIVE '/dev/changvg/changlv2' [2.00 GiB] inherit ACTIVE Snapshot '/dev/changvg/snap' [100.00 MiB] inherit 挂载快照卷: [root@chang ~]# mkdir /tmp/snap [root@chang ~]# mount /dev/changvg/snap /tmp/snap [root@chang ~]# ls /tmp/snap fstab lost+found passwd //可以看得到快照卷已成功 [root@chang changlv]# rm -rf fstab // 破坏原卷内容 [root@chang changlv]# ls lost+found passwd [root@chang tmp]# cd snap/ [root@chang snap]# ls fstab lost+found passwd //可以看得到虽然原卷已经被破坏了,但是快照卷里面的东西还在此时只需要回复快照卷就ok了。