标签:lvm2
LVM2
一.LVM2简单介绍
LVM2:LVM是逻辑卷管理(Logical Volume Manager)的缩写,它最大的作用就是动态的扩展或缩减文件系统的使用空间,以此来提高磁盘分区管理的灵活性。将多块物理磁盘组织成一个逻辑设备,这个逻辑设备在用户看来就是一个大的存储设备。但更像是扩展分区,要想使用的话,得在上面建立逻辑分区。虽然它能实现简单快速的扩展和缩减,但并不能实现文件系统。 封装底层的物理存储设备,并向上提供一个统一的界面或接口。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。逻辑卷才是真正意义上可以动态扩展或缩减的设备。而这设备本身有两种边界,物理边界和逻辑边界(文件系统边界)。所以,一个逻辑卷就相当于一个文件系统,当做一个分区来使用。
二.LVM基本概念
PV(Physical Volume,物理卷):LVM由3层构成,最底层的是PV。创建PV时,可以是分区,磁盘或是RAID,只要是块设备就行。逻辑卷完全可以创建在硬件RAID上(在软RAID上体现不出来优势)。
VG(Volume Group,卷组):卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,PV组合起来的大小就是VG的大小。在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。将一个PV放进VG后,就意味着将PV提供的存储空间划分为一个个的存储单元,叫做PE(物理盘区,逻辑存储单位),类似于RAID中的chunk。在创建卷组时,可以指定PE大小。因此,可以说VG是由一大堆PE组成的。而在逻辑卷上,叫做LE(逻辑盘区)。一个逻辑卷里的PE很可能来自不同物理卷里的PE,因此逻辑卷里存储的数据很可能是来自于不同的磁盘上的。所以,当某个磁盘损坏时,很可能会影响到某个逻辑卷。
LV(Logical Volume,逻辑卷):逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组,一个卷组中也可以只有一个逻辑卷。
三.创建LVM2
准备好磁盘
2.安装LVM管理工具
# rpm -qa | grep "lvm"
# yum install lvm*
3.创建分区并调整分区类型为8e
# fdisk /dev/sdb
[root@localhost ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to switch off the mode (command ‘c‘) and change display units to sectors (command ‘u‘). Command (m for help): n Command action e extended p primary partition (1-4) e Partition number (1-4): 3 First cylinder (1309-7832, default 1309): Using default value 1309 Last cylinder, +cylinders or +size{K,M,G} (1309-7832, default 7832): Using default value 7832 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (1309-7832, default 1309): Using default value 1309 Last cylinder, +cylinders or +size{K,M,G} (1309-7832, default 7832): +5G Command (m for help):
创建了2个5G大小的分区,然后再调整分区类型为8e
Command (m for help): t Partition number (1-6): 5 Hex code (type L to list codes): 8e Changed system type of partition 5 to 8e (Linux LVM) Command (m for help): t Partition number (1-6): 6 Hex code (type L to list codes): 8e Changed system type of partition 6 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 64.4 GB, 64424509440 bytes 255 heads, 63 sectors/track, 7832 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: 0xbf6e8224 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ fd Linux raid autodetect /dev/sdb2 655 1308 5253255 fd Linux raid autodetect /dev/sdb3 1309 7832 52404030 5 Extended /dev/sdb5 1309 1962 5253223+ 8e Linux LVM /dev/sdb6 1963 2616 5253223+ 8e Linux LVM Command (m for help):
4.创建PV
# pvcreate /dev/sd{5,6}
# pvdisplay | pvs | pvscan
[root@localhost ~]# pvcreate /dev/sdb{5,6} Physical volume "/dev/sdb5" successfully created Physical volume "/dev/sdb6" successfully created [root@localhost ~]#
5.创建VG
# vgcreate -s 32 myvg2 /dev/sdb{5,6}
[root@localhost ~]# vgcreate -s 32 /dev/myvg2 /dev/sdb{5,6} Volume group "myvg2" successfully created [root@localhost ~]#
6.创建LV
# lvcreate -L 5G -n testlv myvg2
[root@localhost ~]# lvcreate -L 5G -n testlv myvg2 Logical volume "testlv" created [root@localhost ~]#
7.格式化LV并挂载
# mke2fs -t ext4 /dev/myvg2/testlv
# moutn /dev/myvg2/testlv /mnt
# df -lh
[root@localhost ~]# mke2fs -t ext4 /dev/myvg2/testlv 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 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 31 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@localhost ~]# mount /dev/myvg2/testlv /mnt [root@localhost ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-root 20G 290M 19G 2% / tmpfs 935M 0 935M 0% /dev/shm /dev/sda1 190M 33M 148M 19% /boot /dev/mapper/vg0-usr 9.8G 2.1G 7.2G 23% /usr /dev/mapper/vg0-var 20G 204M 19G 2% /var /dev/md0 9.8G 23M 9.3G 1% /backup /dev/mapper/myvg2-testlv 4.8G 10M 4.6G 1% /mnt [root@localhost ~]#
这样一个逻辑卷就可以被挂载使用了。
四.VG扩容
1.新创建一个PV
# pvcreate /dev/sdb7
[root@localhost ~]# pvcreate /dev/sdb7 Device /dev/sdb7 not found (or ignored by filtering). [root@localhost ~]# partx -a /dev/sdb 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 BLKPG: Device or resource busy error adding partition 5 BLKPG: Device or resource busy error adding partition 6 [root@localhost ~]# partx -a /dev/sdb # 让内核识别下新建的分区 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 BLKPG: Device or resource busy error adding partition 5 BLKPG: Device or resource busy error adding partition 6 BLKPG: Device or resource busy error adding partition 7 [root@localhost ~]# clear [root@localhost ~]# pvcreate /dev/sdb7 Physical volume "/dev/sdb7" successfully created [root@localhost ~]#
2.扩容VG
# vgs
# vgextend myvg2 /dev/sdc
# vgs
[root@localhost ~]# vgextend myvg2 /dev/sdb7 Volume group "myvg2" successfully extended [root@localhost ~]#
如果PV中有RAID设备时,对VG进行扩容时,可以通过扩展RAID设备的容量来间接对VG进行扩容。注意:RAID设备/dev/md#大小变化后,需要调整PV大小,操作如下:
# pvresize /dev/md#
以下的VG缩减,LV扩展,移除和删除一个LVM和上面内容大同小异,只需执行相关命令即可。
五.VG缩减
1.卸载文件系统
# umount /mnt
# pvs
2.移除PV
# vgreduce myvg2 /dev/sdb5
# pvs
# vgs
六.LV扩展
1.先扩展物理边界
# lvs
# lvextend -L +5G /dev/myvg2/testlv
# lvs
2.扩展逻辑边界
# resize2fs -p /dev/myvg2/testlv
七.LV缩减
1.先卸载文件系统
# umount /mnt
2.对文件系统进行检测
# fsck -t ext4 /dev/myvg2/testlv
3.先缩减逻辑边界
# resize2fs /dev/myvg2/testlv 3G # 这里将testlv缩减到3G
4.后扩展物理边界
# lvreduce -L 3G /dev/myvg2/testlv
# mount /dev/myvg2/testlv /mnt
八.删除一个LVM
1.卸载文件系统
# umount /mnt
2.移除LV
# lvs
# lvremove /dev/myvg22/testlv
# lvs
3.移除VG
# vgs
# vgremove myvg2
# vgs
4.移除PV
# pvs
# pvremove /dev/sd{5,6,7}
# pvs
p
标签:lvm2
原文地址:http://ccc1912.blog.51cto.com/9370277/1689843