标签:
一、LVM简介
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其 中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。
与传统的磁盘与分区相比,LVM为计算机提供了更高层次的 磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升 级)。LVM也允许按用户组对存储卷进行管理,允许管理员用更直观的名称(如"sales‘、 ‘development‘)代替物理磁盘名(如‘sda‘、‘sdb‘)来标识存储卷。
如图所示LVM模型:
由四个磁盘分区可以组成一个很大的空间,然后在这些空间上划分一些逻辑分区,当一个逻辑分区的空间不够用的时候,可以从剩余空间上划分一些空间给空间不够用的分区使用。
二、 LVM基本术语
前面谈到,LVM是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。首先我们讨论以下几个LVM术语:
物理存储介质(The physical media):这里指系统的存储设备:硬盘,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
简单来说就是:
PV:是物理的磁盘分区
VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘。
LV:也就是从VG中划分的逻辑分区
如下图所示PV、VG、LV三者关系:
三、 安装LVM
首先确定系统中是否安装了lvm工具:
[root@www root]# rpm –qa|grep lvm
lvm-1.0.3-4
如果命令结果输入类似于上例,那么说明系统已经安装了LVM管理工具;如果命令没有输出则说明没有安装LVM管理工具,则需要从网络下载或者从光盘装LVM rpm工具包。
四、 创建和管理LVM
1、物理卷PV
pvcreate 创建pv 例:pvcreate /dev/sda1
pvs 查看pv信息 例:直接在命令行里输入pvs
pvdisplay 查看pv详细信息 例:pvdisplay /dev/sda1
pvmove 将pv数据移动到其他pv 例:pvmove /dev/sda1 /dev/sda4
pvremove 将pv删除 例:pvremove /dev/sda1
2、卷组VG
2.1 创建、查看、删除vg
vgcreate 创建vg 例:vgcreate myvg /dev/sda{m,n}
vgs 查看vg信息 例:直接在命令行里输入vgs
vgdisplay 查看vg详细信息 例:vgdisplay myvg
vgremove 将vg删除 例:vgremove myvg
2.2 扩展vg
首先准备好一个PV;
然后使用vgextend命令即可完成扩展;
格式: vgextend VG_NAME /PATH/TO/PV
vgextend myvg /dev/sdb2 扩展myvg卷组,把/dev/sdb2加进去
2.3 缩减vg
1)确定要移除的PV;
2)将此PV上的数据转移至其它PV;
pvmove /path/to/pv
3)从卷组中将此PV移除;
格式:vgreduce VG_NAME /PATH/TO/PV
vgreduce myvg /dev/sdb2 缩减myvg卷组,把/dev/sda2去掉
3 逻辑卷LV
3.1 创建、查看、删除lv
lvcreate 创建lv 例:lvcreate lv1 /dev/myvg
lvs 查看lv信息 例:直接在命令行里输入lvs
lvdisplay 查看lv详细信息 例:vgdisplay lv1
lvremove 将lv 移除 例:lvremove /dev/myvg/lv1
3.2 扩展lv
确定扩展多大
确定当前逻辑卷所在的卷组有足够的空闲空间;
扩展:
1、物理边界
lvextend -L [+]SIZE /path/to/lv
2、逻辑边界
resize2fs /path/to/device
3.3 缩减lv
确定缩减的大小,但前提是至少能容纳原有的所有数据。
缩减:
1)卸载并强行检测文件系统;
e2fsck -f
2)逻辑边界
resize2fs /path/to/device SIZE
3)物理边界
lvreduce -L [-]SIZE /path/to/lv
4、快照卷
1) 生命周期为整个数据时长;在这段时长内,数据的增长量不能超出快照卷大小;
2) 快照卷应该是只读的;
3) 跟原卷在同一卷组内;
lvcreate
-L 指定快照卷的大小
-s 创建快照卷
-p r 创建的快照卷为只读访问
格式:
lvcreate -L SIZE -s -p r -n LV_NAME /path/to/lv
三、lv之示例
1、创建一个分区
[root@stau11 ~]# fdisk -l //查看分区的情况
[root@stau11 ~]# fdisk /dev/sda //进行分区
Command (m for help): n //n为添加一个分区,p查看分区
First cylinder (2898-10443, default 2898): //按【Enter】键决定
Using default value 2898 //起始柱面选择默认 值
Last cylinder or +size or +sizeM or +sizeK (289810443, default 10443): +2G // 给2G的大小
Command (m for help): t //更改分区类型
Partition number (1-5): 5 //选着分区
Hex code (type L to list codes): l //分区类型列表
Hex code (type L to list codes):8e //将新添加的分区标注成lvm
Command (m for help): p //查看分区表
/dev/sda5 2756 2999 1959898+ 8e Linux LVM
Command (m for help): w //保存
[root@localhost ~]# partprobe /dev/sda //是系统识别分区(代替重启)
[root@localhost ~]# mkfs.ext3 /dev/sda5 //格式化新添加的分区
2、PV的创建
[root@localhost ~]# pvcreate /dev/sda5 //创建pv
Writing physical volume data to disk "/dev/sda5"
Physical volume "/dev/sda5" successfully created
[root@localhost ~]# pvs //查看当前pv的信息
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a-- 1.87G 1.87G
3、VG的创建
[root@localhost ~]# vgcreate vg0 /dev/sda5 //vg0为当前vg的名
Volume group "vg0" successfully created
[root@localhost ~]# vgs //查看vg的信息
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz--n- 1.87G 1.87G
4、lv的创建
[root@localhost ~]# lvcreate -L 500M -n lv01 vg0
Logical volume "lv01" created
[root@localhost ~]# lvs //查看lv的信息
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M
You have mail in /var/spool/mail/root
[root@localhost ~]# mkfs.ext3 /dev/vg0/lv01 //格式化
lvm的使用
5、lv的增大
[root@localhost ~]# lvextend -L +300M /dev/vg0/lv01 //(原来lv大小500M ,拉伸分区到 800M) Extending logical volume lv01 to 800.00 MB
Logical volume lv01 successfully resized
[root@localhost ~]# resize2fs /dev/vg0/lv01 //拉伸文件系统
[root@localhost ~]# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-ao 800.00M //大小变成了800M
6、lv的减小
# umount /dev/vg0/lv01 //卸载逻辑卷/dev/vg0/lv01
# df -h //查看
# e2fsck -f /dev/vg0/lv01 //磁盘校验
# resize2fs /dev/vg0/lv01 500M //回缩文件系统到 500M
# lvreduce -L 500M /dev/vg0/lv01 //回缩分区到 500M
WARNING: Reducing active logical volume to 500.00 MB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv01? [y/n]: y
# lvs
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
lv01 vg0 -wi-a- 500.00M //此时已变成500M大小
# mount /dev/vg0/lv01 /mnt/lv01 //重新挂载分区
# df -h //查看
# ls /mnt/lv01 //查看文件
四、lvm的系统快照
1、挂载lvm
[root@localhost ~] # mount /dev/vg0/lv01 /mnt/lv01
[root@localhost ~]# cd /mnt/lv01
[root@localhost lv01]# touch {a,b,c}{a,b,c}
[root@localhost lv01]# ls
aa ab ac ba bb bc ca cb cc lost+found lv.file restoresymtable
2、为lvm创建快照
[root@localhost lv01]# lvcreate -L 64M -s -n lv-backup /dev/vg0/lv01
Logical volume "lv-backup" created
3、挂载快照
[root@localhost lv01]# mkdir /mnt/lv-backup
[root@localhost mnt]# mount -o ro /dev/vg0/lv-backup /mnt/lv-backup/
4、备份快照
[root@localhost tmp]# dump -0u -f /tmp/lv-backup.dump /mnt/lv-backup/ //备份
DUMP: Date of this level 0 dump: Sun Nov 11 14:53:31 2012
DUMP: Dumping /dev/mapper/vg0-lv--backup (/mnt/lv-backup) to /tmp/lv-backup.dump
5、删除快照
[root@localhost tmp]# umount /mnt/lv-backup/
[root@localhost tmp]# lvremove /dev/vg0/lv-backup
Do you really want to remove active logical volume lv-backup? [y/n]: y
Logical volume "lv-backup" successfully removed
6、清空/dev/vg0/lv01下得内容
[root@localhost tmp]# umount /mnt/lv01
[root@localhost tmp]# mkfs.ext3 /dev/vg0/lv01
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
7、lvm的关闭
[root@localhost ~]# umount /mnt/lv01
[root@localhost ~]# lvremove /dev/vg0/lv01 //删除lv
Do you really want to remove active logical volume lv01? [y/n]: y
Logical volume "lv01" successfully removed
[root@localhost ~]# vgchange -a n vg0 //使vg0不具有active标志
0 logical volume(s) in volume group "vg0" now active
[root@localhost ~]# vgremove vg0 //删除vg
Volume group "vg0" successfully removed
[root@localhost ~]# pvremove /dev/sda5 //删除pv
Labels on physical volume "/dev/sda5" successfully wiped
Linux LVM硬盘管理及LVM扩容
标签:
原文地址:http://www.cnblogs.com/zydev/p/5139794.html