一、LVM简介
LVM 是 Logical Volume Manager(逻辑卷管理)的简写,LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算机提供了更高层次的磁盘存储。它使系统管理员可以更方便的为应用与用户分配存储空间。在LVM管理下的存储卷可以按需要随时改变大小与移除(可能需对文件系统工具进行升级)。
lvm物理与(pv、vg、lv)逻辑对照
二、 LVM基本术语
PV
物理卷(physical volume):物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
VG
卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
LV
逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
PV:是物理的磁盘分区
VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG中、可以将VG理解为一个仓库或者是几个大的硬盘。
LV:也就是从VG中划分的逻辑分区
三、 安装LVM
首先确定系统中是否安装了lvm工具,没有安装的话要安装之后才能使用,否则没有命了功能支持,我的是centos6.5默认安装了。如果输入命令没有提示没有查询到就要安装lvm程序啦。
[root@localhost ~]# rpm -qa | grep lvm 查询是否安装lvm
mesa-private-llvm-3.3-0.3.rc3.el6.x86_64
lvm2-libs-2.02.100-8.el6.x86_64
lvm2-2.02.100-8.el6.x86_64
四、实验
实验是划分三个3g的硬盘,演示pv、vg、lv、的创建、扩容、删除
1、添加磁盘用虚拟机添加一个20g的硬盘,此处省略
2、创建分区
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n 创建主分区
Command action
e extended 逻辑分区
p primary partition (1-4)
p
Partition number (1-4): 1 第一个分区
First cylinder (1-2610, default 1): 开始块
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +3G 划分3g容量
Command (m for help): t 修改文件类型
Selected partition 1
Hex code (type L to list codes): 8e 文件类型(Linux LVM)
Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p 查看分区
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0xba762e8d
Device Boot Start End Blocks Id System
/dev/sdb1 1 393 3156741 8e Linux LVM
按此照做分区结果如下
分区结果
Device Boot Start End Blocks Id System
/dev/sdb1 1 393 3156741 8e Linux LVM
/dev/sdb2 394 786 3156772+ 8e Linux LVM
/dev/sdb3 787 1179 3156772+ 8e Linux LVM 主分区
/dev/sdb4 1180 2610 11494507+ 5 Extended
/dev/sdb5 1180 1572 3156741 8e Linux LVM 逻辑分区
3、查看所创建分区系统是否识别到、没有识别到要 partx -a /dev/sdbx直到识别到或者重启系统。
[root@localhost ~]# cat /proc/partitions 查看创建分区
major minor #blocks name
8 0 83886080 sda
8 1 204800 sda1
8 2 62914560 sda2
8 3 39163 sda3
8 4 1 sda4
8 5 40131 sda5
8 16 20971520 sdb
8 17 3156741 sdb1
8 18 3156772 sdb2
8 19 3156772 sdb3
8 20 1 sdb4
8 21 3156741 sdb5
4、创建pv
[root@localhost ~]# pvcreate /dev/sdb{2,3,5} 创建2,3,5三块磁盘的pv
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
Physical volume "/dev/sdb5" successfully created
5、创建vg
[root@localhost ~]# vgcreate dd /dev/sdb2 创建名为dd的vg
Volume group "dd" successfully created
[root@localhost ~]# vgcreate dd /dev/sdb3 增加 vg dd的容量
A volume group called dd already exists.
[root@localhost ~]# vgcreate ee /dev/sdb3 创建名为ee的vg
Volume group "ee" successfully created
[root@localhost ~]# vgextend dd /dev/sdb5 给dd这个vg增加容量
Volume group "dd" successfully extended
root@localhost ~]# vgs 查看创建的vg
VG #PV #LV #SN Attr VSize VFree
dd 2 0 0 wz--n- 6.02g 6.02g 创建后dd ee的大小
ee 1 0 0 wz--n- 3.01g 3.01g
vg0 1 4 0 wz--n- 59.99g 7.99g
6、创建lv
[root@localhost ~]# lvcreate -L 2G -n yy dd 在dd这个卷组中创建名为yy2g的lv
Logical volume "zz" created
root@localhost ~]# lvs 查看lv
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
yy dd -wi-a----- 2.00g
root vg0 -wi-ao---- 20.00g
swap vg0 -wi-ao---- 2.00g
usr vg0 -wi-ao---- 10.00g
var vg0 -wi-ao---- 20.00g
[root@localhost ~]# lvcreate -L 2G -n zz dd 在dd这个卷组中创建名为zz2g的lv
Logical volume "zz" created
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
yy dd -wi-a----- 2.00g
zz dd -wi-a----- 2.00g
root vg0 -wi-ao---- 20.00g
swap vg0 -wi-ao---- 2.00g
usr vg0 -wi-ao---- 10.00g
var vg0 -wi-ao---- 20.00g
7、格式化
[root@localhost ~]# mkfs -t ext4 /dev/dd/zz 格式化lv
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
8、挂载
[root@localhost ~]# mount /dev/dd/zz /tmp/mnt 挂载lv
[root@localhost ~]# cd /tmp/mnt
[root@localhost mnt]# ls -a
. .. lost+found
[root@localhost mnt]# cd /
至此lv就可以分配给用户使用啦
四、扩展逻辑卷
1、先确定扩展的目标大小、并确保对应的卷组中有足够的空闲空间可用;
2、扩展物理边界
3、扩展逻辑边界
[root@localhost /]# lvextend -L 4G /dev/dd/zz 对zz物理边界进行在线扩容为4g
Extending logical volume zz to 4.00 GiB
Logical volume zz successfully resized
[root@localhost /]# resize2fs /dev/dd/zz 对zz逻辑边界进行在线扩容为4g
[root@localhost /]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
yy dd -wi-a----- 2.00g
zz dd -wi-ao---- 4.00g 扩容后的显示
root vg0 -wi-ao---- 20.00g
swap vg0 -wi-ao---- 2.00g
usr vg0 -wi-ao---- 10.00g
var vg0 -wi-ao---- 20.00g
root@localhost ~]# mount 查看挂载信息
/dev/mapper/vg0-root 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)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/mapper/vg0-usr on /usr type ext4 (rw)
/dev/mapper/vg0-var on /var type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/dd-zz on /tmp/mnt type ext4 (rw) 查看挂载信息
五、缩小逻辑卷
缩减很危险!!!!
缩减要离线
1、先确定缩减后的目标大小;并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据;
2、先强制检测文件系统,并要执行强制检测
3、缩减逻辑边界
4、缩减物理边界
[root@localhost ~]# umount /tmp/mnt 卸载
[root@localhost ~]# e2fsck -f /dev/dd/zz 强制检测文件系统,并要执行强制检测
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/dd/zz: 11/131072 files (0.0% non-contiguous), 25388/524288 blocks 信息显示
[root@localhost /]# resize2fs /dev/dd/zz 3G 离线缩减逻辑 lv zz为3g
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/dd/yy to 786432 (4k) blocks.
The filesystem on /dev/dd/yy is now 786432 blocks long.
[root@localhost ~]# lvreduce -L 3G /dev/dd/zz 离线缩减物理 lv zz为3g
WARNING: Reducing active logical volume to 3.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce zz? [y/n]: y 提示
Reducing logical volume zz to 3.00 GiB
Logical volume zz successfully resized
[root@localhost ~]# lvs 查看缩减后的信息
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
yy dd -wi-a----- 2.00g
zz dd -wi-a----- 3.00g
root vg0 -wi-ao---- 20.00g
swap vg0 -wi-ao---- 2.00g
usr vg0 -wi-ao---- 10.00g
var vg0 -wi-ao---- 20.00g
这样就实现了lv的缩减啦
然后在挂载就可以使用啦
本文出自 “天涯海角” 博客,谢绝转载!