目录:
—————————————————
1,概述1
2,基本原理1
3,建立逻辑卷1
建立物理卷1
建立卷组2
建立逻辑卷3
4,动态增加和减小逻辑卷大小4
动态增加逻辑卷容量4
动态减小逻辑卷大小6
5,结束语7
正文:
—————————————————-
1,概述
逻辑卷管理(Logic Volume Manager),简称LVM,它是与传统的静态分区完全不同的磁盘管理方式,LVM是把实际的物理磁盘数据影射到一个简单而灵活的虚拟性的逻辑存储视图上,借以控制磁盘资源。这样,也就是重新考虑了管理文件系统和卷的方法,系统在文件系统管理中增加了一个额外的抽象层,不需要深入细节的了解,可以实现虚拟分区或者动态建立一个逻辑卷以及动态更改卷的大小,并且实现了允许文件系统跨越磁盘等功能。
2,基本原理
·物理卷
物理卷physical volume(PV),通常一个物理卷就是一块硬盘,或者是一个磁盘的某一个分区,或者看起来象一块硬盘的设备,如软件raid设备。
·卷组
卷组Volume Group(VG),卷组是lvm里的最高抽象级。它把逻辑卷和物理卷集中在一个管理单位里面。
·逻辑卷
逻辑卷(Logical Volume(LV):等同于非lvm系统下的分区,lv可以看作标准的块设备,可以包含一个文件系统(如/home)。
·物理盘区
物理盘区(Physical Extents(PE)):每个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可以设置的,默认为4MB。
·逻辑盘区
逻辑盘区(logical extent(LE)):逻辑卷也被划分为被称为LE(LogicalExtents)的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
3,建立逻辑卷
思路:建立物理卷–à建立卷组–à建立逻辑卷–à格式化–àmount(删除的话刚好反过去)
建立物理卷
要把分区做成LVM分区,首先应先把我们的物理设备加入到物理卷中,我们这里有sdc,和sdd两个分区,我们现在用pvcreate命令分别将这两个分区加入到一个pv(物理卷中),如图-1:
# pvcreate /dev/sdb /dev/sdc
/dev/cdrom: open failed: Read-only file system
Attempt to close device ‘/dev/cdrom’ which is not open.
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
# pvdisplay
— Physical volume —
PV Name/dev/sdc
VG Namevg_bkeep
PV Size8.00 GB / not usable 4.00 MB
Allocatableyes
PE Size (KByte)4096
Total PE2047
Free PE2047
Allocated PE0
PV UUIDSFLz2x-NEa0-sjHa-KxKd-kQWg-NYSJ-V8qWmB
— Physical volume —
PV Name/dev/sdb
VG Namevg_bkeep
PV Size8.00 GB / not usable 4.00 MB
Allocatableyes
PE Size (KByte)4096
Total PE2047
Free PE2047
Allocated PE0
PV UUIDgvuO0s-0p8c-PpL1-in75-uaaQ-vvB6-NEv0sm
建立卷组
然后再将sdc和sdd分别加入到一个名叫vg_bkeep的卷组里,并用vgdisplay命令查看已经添加好的名为vg_bkeep的卷组。
# pvcreate /dev/sdb /dev/sdc
/dev/cdrom: open failed: Read-only file system
Attempt to close device ‘/dev/cdrom’ which is not open.
Physical volume "/dev/sdb" successfully created
Physical volume "/dev/sdc" successfully created
# vgcreate vg_bkeep /dev/sdc /dev/sdb
Volume group "vg_bkeep" successfully created
# vgdisplay
— Volume group —
VG Namevg_bkeep
System ID
Formatlvm2
Metadata Areas2
Metadata Sequence No1
VG Accessread/write
VG Statusresizable
MAX LV0
Cur LV0
Open LV0
Max PV0
Cur PV2
Act PV2
VG Size15.99 GB
PE Size4.00 MB
Total PE4094
Alloc PE / Size0 / 0
FreePE / Size4094 / 15.99 GB
VG UUIDdCZcOf-nnfz-O5Ea-lW0C-dcIA-rnkt-pbXdCp
建立逻辑卷
当物理磁盘已经加入物理卷,并且我们将加入物理卷的两个磁盘创建成一个名叫vg_bkeep的卷组后,我们就可以在vg_bkeep卷组上划分逻辑卷了。上图可以看到目前我们
的VG size是1.99GB,我们用lvcreate命令划分一个1G大小,名字叫data的逻辑卷,并且格式化然后挂在到根目录下的data目录中。
# lvcreate -n data -L 4G vg_bkeep
/dev/cdrom: open failed: Read-only file system
Logical volume "data" created
# lvdisplay
— Logical volume —
LV Name/dev/vg_bkeep/data
VG Namevg_bkeep
LV UUIDBvb0DG-tMaP-5uVS-8GrZ-KAPv-ZLSs-hfdmr9
LV Write Accessread/write
LV Statusavailable
# open0
LV Size4.00 GB
Current LE1024
Segments1
Allocationinherit
Read ahead sectorsauto
– currently set to256
Block device253:0
从上图我们可以看到,已经成功划分一个名为data的逻辑卷。lvcreate的具体用法可以用man lvcreate来查看。然后我们执行mkfs.ext3 /dev/vg_bkeep/data
将vg_bkeep卷组中的data格式化为ext3文件系统。再执行mount /dev/vg_bkeep/data /data,执行df -h命令就可以看到我们建立的逻辑卷已经挂载到了/data目录
下大小为1000MB。
# mkfs.ext3 /dev/vg_bkeep/data
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
524288 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
16384 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 28 mounts or
180 days, whichever comes first.Use tune2fs -c or -i to override.
# mount /dev/vg_bkeep/data /data
# df -hl
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda23.8G1.9G1.8G53% /
/dev/sda334G3.1G30G10% /home
/dev/sda146M11M34M24% /boot
tmpfs252M0252M0% /dev/shm
/dev/hdc2.9G2.9G0 100% /media/RHEL_5.2 i386 DVD
/dev/mapper/vg_bkeep-data4.0G137M3.7G4% /data
4,动态增加和减小逻辑卷大小动态增加逻辑卷容量
OK,到了重要的环节。我们建立逻辑卷的目的其实就是为了在分区空间快满时或者分区空间分多了需要动态增加或者减小时用到。比如我的home分区和var分区都
是挂在逻辑卷上。有一天home不够用了,那我们只需要动态将它放大。下面我们还以data目录为例来增大逻辑卷data的容量到1.5G。
# vgdisplay
— Volume group —
VG Namevg_bkeep
System ID
Formatlvm2
Metadata Areas2
Metadata Sequence No2
VG Accessread/write
VG Statusresizable
MAX LV0
Cur LV1
Open LV1
Max PV0
Cur PV2
Act PV2
VG Size15.99 GB
PE Size4.00 MB
Total PE4094
Alloc PE / Size1024 / 4.00 GB
FreePE / Size3070 / 11.99 GB
VG UUIDdCZcOf-nnfz-O5Ea-lW0C-dcIA-rnkt-pbXdCp
# lvextend -L +2G /dev/vg_bkeep/data
/dev/cdrom: open failed: Read-only file system
Extending logical volume data to 6.00 GB
Logical volume data successfully resized
# lvdisplay
— Logical volume —
LV Name/dev/vg_bkeep/data
VG Namevg_bkeep
LV UUIDBvb0DG-tMaP-5uVS-8GrZ-KAPv-ZLSs-hfdmr9
LV Write Accessread/write
LV Statusavailable
# open1
LV Size6.00 GB
Current LE1536
Segments1
Allocationinherit
Read ahead sectorsauto
– currently set to256
Block device253:0
# df -hl
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda23.8G1.9G1.8G53% /
/dev/sda334G3.1G30G10% /home
/dev/sda146M11M34M24% /boot
tmpfs252M0252M0% /dev/shm
/dev/hdc2.9G2.9G0 100% /media/RHEL_5.2 i386 DVD
/dev/mapper/vg_bkeep-data4.0G137M3.7G4% /data
如上图我们看到的,我们用”lvextend -L +500M /dev/vg_bkeep/data“这个命令给data增加了500MB的空间,并且lvdisplay也看到/dev/vg_bkeep/data的大小确实是1.49GB。但是我们”df -h“看到的/data目录大小仍然是1008MB。这里说点小常识,我们刚刚的命令只是增加了/dev/vg_bkeep/data这个逻辑卷的大小,但是在mkfs.ext3格式化data时程序已经默认按照1G的大小将/data格式化成了ext3文件系统。所以我们还要用到resize2fs这个命令将文件系统的大小也放大到1.5G左右。
# resize2fs /dev/vg_bkeep/data 6G
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/vg_bkeep/data is mounted on /data; on-line resizing required
Performing an on-line resize of /dev/vg_bkeep/data to 1572864 (4k) blocks.
The filesystem on /dev/vg_bkeep/data is now 1572864 blocks long.
# df -hl
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda23.8G1.9G1.8G53% /
/dev/sda334G3.1G30G10% /home
/dev/sda146M11M34M24% /boot
tmpfs252M0252M0% /dev/shm
/dev/hdc2.9G2.9G0 100% /media/RHEL_5.2 i386 DVD
/dev/mapper/vg_bkeep-data6.0G137M5.5G3% /data
如上图所示我们已经成功将文件系统的大小也改到了1.5GB,df -h看到现在我们的/data目录大小已经变成了1.5G。这样我们就能继续使用data目录而不需要
重新卸载个挂载文件系统了。
动态减小逻辑卷大小
减小逻辑卷就没有增大那么容易了,因为系统在经过长期的删除增加文件以后,文件系统的block的顺序已经比较混乱了。所以不能像增加容量那样在线的动态增加。必须要先将文件系统卸载掉,然后用"fsck -f /dev/vg_bkeep/data"强制检查和整理一下文件系统的inode和block.然后再减小容量。如图-7:
# df -hl
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda23.8G1.9G1.7G53% /
/dev/sda334G3.1G30G10% /home
/dev/sda146M11M34M24% /boot
tmpfs252M0252M0% /dev/shm
/dev/hdc2.9G2.9G0 100% /media/RHEL_5.2 i386 DVD
/dev/mapper/vg_bkeep-data3.0G69M2.8G3% /data
# umount /data//这一步很重要哦!
# fsck -f /dev/vg_bkeep/data
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
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/vg_bkeep/data: 11/393216 files (9.1% non-contiguous), 29902/786432 blocks
# resize2fs /dev/vg_bkeep/data 1G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/vg_bkeep/data to 262144 (4k) blocks.
The filesystem on /dev/vg_bkeep/data is now 262144 blocks long.
# lvreduce -L -2G /dev/vg_bkeep/data
/dev/cdrom: open failed: Read-only file system
WARNING: Reducing active logical volume to 1.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce data? [y/n]: y
Reducing logical volume data to 1.00 GB
Logical volume data successfully resized
# mount /dev/vg_bkeep/data /data
# df -hl
FilesystemSizeUsed Avail Use% Mounted on
/dev/sda23.8G1.9G1.7G53% /
/dev/sda334G3.1G30G10% /home
/dev/sda146M11M34M24% /boot
tmpfs252M0252M0% /dev/shm
/dev/hdc2.9G2.9G0 100% /media/RHEL_5.2 i386 DVD
/dev/mapper/vg_bkeep-data1008M68M900M8% /data
如上图所见,我们lvdisplay后data卷大小已经变成了1G,并且我们再挂载/dev/vg_bkeep/data到/data,然后用“df -h”查看我们的/data目录也减小1008MB。以上减小逻辑卷容量的动作,逻辑卷上的数据是不会丢失的。注:这里必须要严格按照上面的步骤来做,顺序如果反了话逻辑卷里面的数据将会损坏或者丢失。
5,结束语
这里只是简单的对LVM做了一下介绍,并且做了一个在我们日常工作中经常会碰到的增加,减少逻辑卷大小的例子。更多关于LVM的管理和维护可以参照系统自带的man lvm帮助文档来查看或者登陆[| http://sources.redhat.com/lvm2/].
君子当权积福,小人仗势欺人。