--------------------------------------------------- 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 Name vg_bkeep PV Size 8.00 GB / not usable 4.00 MB Allocatable yes PE Size (KByte) 4096 Total PE 2047 Free PE 2047 Allocated PE 0 PV UUID SFLz2x-NEa0-sjHa-KxKd-kQWg-NYSJ-V8qWmB
--- Physical volume --- PV Name /dev/sdb VG Name vg_bkeep PV Size 8.00 GB / not usable 4.00 MB Allocatable yes PE Size (KByte) 4096 Total PE 2047 Free PE 2047 Allocated PE 0 PV UUID gvuO0s-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 Name vg_bkeep System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 15.99 GB PE Size 4.00 MB Total PE 4094 Alloc PE / Size 0 / 0 Free PE / Size 4094 / 15.99 GB VG UUID dCZcOf-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 Name vg_bkeep LV UUID Bvb0DG-tMaP-5uVS-8GrZ-KAPv-ZLSs-hfdmr9 LV Write Access read/write LV Status available # open 0 LV Size 4.00 GB Current LE 1024 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253: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 Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.8G 1.9G 1.8G 53% / /dev/sda3 34G 3.1G 30G 10% /home /dev/sda1 46M 11M 34M 24% /boot tmpfs 252M 0 252M 0% /dev/shm /dev/hdc 2.9G 2.9G 0 100% /media/RHEL_5.2 i386 DVD /dev/mapper/vg_bkeep-data 4.0G 137M 3.7G 4% /data 4,动态增加和减小逻辑卷大小动态增加逻辑卷容量OK,到了重要的环节。我们建立逻辑卷的目的其实就是为了在分区空间快满时或者分区空间分多了需要动态增加或者减小时用到。比如我的home分区和var分区都 是挂在逻辑卷上。有一天home不够用了,那我们只需要动态将它放大。下面我们还以data目录为例来增大逻辑卷data的容量到1.5G。 # vgdisplay --- Volume group --- VG Name vg_bkeep System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 2 Act PV 2 VG Size 15.99 GB PE Size 4.00 MB Total PE 4094 Alloc PE / Size 1024 / 4.00 GB Free PE / Size 3070 / 11.99 GB VG UUID dCZcOf-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 Name vg_bkeep LV UUID Bvb0DG-tMaP-5uVS-8GrZ-KAPv-ZLSs-hfdmr9 LV Write Access read/write LV Status available # open 1 LV Size 6.00 GB Current LE 1536 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
# df -hl Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.8G 1.9G 1.8G 53% / /dev/sda3 34G 3.1G 30G 10% /home /dev/sda1 46M 11M 34M 24% /boot tmpfs 252M 0 252M 0% /dev/shm /dev/hdc 2.9G 2.9G 0 100% /media/RHEL_5.2 i386 DVD /dev/mapper/vg_bkeep-data 4.0G 137M 3.7G 4% /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 Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.8G 1.9G 1.8G 53% / /dev/sda3 34G 3.1G 30G 10% /home /dev/sda1 46M 11M 34M 24% /boot tmpfs 252M 0 252M 0% /dev/shm /dev/hdc 2.9G 2.9G 0 100% /media/RHEL_5.2 i386 DVD /dev/mapper/vg_bkeep-data 6.0G 137M 5.5G 3% /data
如上图所示我们已经成功将文件系统的大小也改到了1.5GB,df -h 看到现在我们的/data 目录大小已经变成了1.5G。这样我们就能继续使用data目录而不需要 重新卸载个挂载文件系统了。
动态减小逻辑卷大小减小逻辑卷就没有增大那么容易了,因为系统在经过长期的删除增加文件以后,文件系统的block的顺序已经比较混乱了。所以不能像增加容量那样在线的动态增加。必须要先将文件系统卸载掉,然后用"fsck -f /dev/vg_bkeep/data" 强制检查和整理一下文件系统的inode和block.然后再减小容量。如图-7: # df -hl Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.8G 1.9G 1.7G 53% / /dev/sda3 34G 3.1G 30G 10% /home /dev/sda1 46M 11M 34M 24% /boot tmpfs 252M 0 252M 0% /dev/shm /dev/hdc 2.9G 2.9G 0 100% /media/RHEL_5.2 i386 DVD /dev/mapper/vg_bkeep-data 3.0G 69M 2.8G 3% /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 Filesystem Size Used Avail Use% Mounted on /dev/sda2 3.8G 1.9G 1.7G 53% / /dev/sda3 34G 3.1G 30G 10% /home /dev/sda1 46M 11M 34M 24% /boot tmpfs 252M 0 252M 0% /dev/shm /dev/hdc 2.9G 2.9G 0 100% /media/RHEL_5.2 i386 DVD /dev/mapper/vg_bkeep-data 1008M 68M 900M 8% /data
如上图所见,我们lvdisplay后data卷大小已经变成了1G,并且我们再挂载/dev/vg_bkeep/data到/data,然后用“df -h”查看我们的/data目录也减小1008MB。以上减小逻辑卷容量的动作,逻辑卷上的数据是不会丢失的。注:这里必须要严格按照上面的步骤来做,顺序如果反了话逻辑卷里面的数据将会损坏或者丢失。 |
|