chenchuang 2011-03-27
Linux 逻辑卷管理器简介
LVM : 是Linux 逻辑卷管理器的英文缩写,它表示逻辑的磁盘,区别于传统的物理磁盘;
LVM 技术的产生是由于传统磁盘分区满足不了日益高速增长的数据存储需求, 传统磁盘分区大小是固定的,每个分区容量是死的.随着数据的增加,总有一天数据会添满你的磁盘. 当更换磁盘时,也是相当繁琐,首先要关闭机算机,然后重新分区,然后格式化分区,然后才能 copy数据.
有了LVM技术,我们就可以不需要关闭机算机, 不用重新分区. 利用现有的物理设备直接增加物理空间,我们可以随意放大或缩小存储空间.我们称之这样的空间为逻辑块或逻辑区.
在LVM中有几个重要的概念需要理解:
pv: phisical volume (最基本的概念), 要创建PV 我们使用 pvcreate 命令
vg: volume group 要创建GV 我们使用 vgcreate 命令
lv : logical volume 要创建LV 我们使用 lvcreate 命令
它们三者的组成关系是,先创建PV, 然后基于PV创建VG, 然后就可以在VG在分配LV了.其中LV的大小可以增加直至VG的大小.要放大LV,我们使用e2fsadm , 例如在VG名称为vg1的中增加名称为data的LV的大小
e2fsadm -L +10M /dev/vg1/data
当然如果VG不够了,那么我们也需要增加它,使用如下命令:
vgextend vg1 /dev/sdb1
牢记VG和LV都是可以动态放大的
创建并使用逻辑卷管理器
我的实验环境为虚拟机环境 openSUSE 11.2 操作系统, 添加了两块物理磁盘 /dev/sda 和 /dev/sdb.现在我在 /dev/sdb中增加LV
1. 首先为 /dev/sdb增加3个分区
linux-0eob:~ # fdisk /dev/sdb
Partition number (1-4): 3
Firstcylinder(29-261,default29):+100M
Valueoutofrange.
Firstcylinder(29-261,default29):
Usingdefaultvalue29
Last cylinder, +cylinders or +size{K,M,G} (29-261, default 261): +20MCommand (m for help): p
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255heads,63sectors/track,261cylinders
Units=cylindersof16065*512=8225280bytes
Disk identifier: 0xdc3e63ccDevice Boot Start End Blocks Id System
/dev/sdb1114112423+83Linux
/dev/sdb2152811245583Linux
/dev/sdb3 29 32 32130 83 Linux2. 初始化这3个分区为pv
在改之前还得做一件事情就是 change a partition's system id ,就是 Id 这一栏的值,我们使用fdisk命令提供的t子命 令来完成即可:
Command (m for help): t
Partitionnumber(1-4):1
Hexcode(typeLtolistcodes):8e
Changed system type of partition 1 to 8e (Linux LVM)Command (m for help): t
Partitionnumber(1-4):2
Hexcode(typeLtolistcodes):8e
Changed system type of partition 2 to 8e (Linux LVM)Command (m for help): t
Partitionnumber(1-4):3
Hexcode(typeLtolistcodes):8e
Changedsystemtypeofpartition3to8e(LinuxLVM)
保存退出后
如果该磁盘没有被使用那么就不用重启操作系统, 否则必须重启操作系统.要不然接下来这一步不会成功哦
linux-0eob:~ # pvcreate /dev/sdb[1-3]
Physicalvolume"/dev/sdb1"successfullycreated
Physicalvolume"/dev/sdb2"successfullycreated
Physical volume "/dev/sdb3" successfully created这样pv就创建成功了
3. 创建VG
如果是第一次创建,那么要先运行vgsan命令,这个命令会新建vg数据库的东东.
linux-0eob:~ # vgscan Reading all physical volumes. This may take a while...
linux-0eob:~ # vgcreate vg0 /dev/sdb1 /dev/sdb2 Volume group "vg0" successfully created
linux-0eob:~ # vgdisplay vg0
---Volumegroup---
VGNamevg0
SystemID
Formatlvm2
MetadataAreas2
MetadataSequenceNo1
VGAccessread/write
VGStatusresizable
MAXLV0
CurLV0
OpenLV0
MaxPV0
CurPV2
ActPV2
VGSize104.00MB
PESize4.00MB
TotalPE26
AllocPE/Size0/0
FreePE/Size26/104.00MB
VGUUIDMrDrOT-rGKL-QonT-XaSJ-Ob1H-lHSx-6ASxuY
4. 创建LVlinux-0eob:~ # lvcreate -n lvdata -L 20M vg0 Logical volume "lvdata" created
linux-0eob:/ # lvdisplay /dev/vg0/lvdata
---Logicalvolume---
LVName/dev/vg0/lvdata
VGNamevg0
LVUUIDtYWFX0-Msor-q6I3-dZjE-W06M-UKyj-McRdpP
LVWriteAccessread/write
LVStatusavailable
#open1
LVSize20.00MB
CurrentLE5
Segments1
Allocationinherit
Readaheadsectorsauto
-currentlysetto256
Blockdevice253:0
LV就相当于磁盘分区,所以接下来我们就格式化它
linux-0eob:/#mke2fs-Text3/dev/vg0/lvdata
mke2fs1.41.1(01-Sep-2008)
Filesystemlabel=
OStype:Linux
Blocksize=4096(log=2)
Fragmentsize=4096(log=2)
1280inodes,5120blocks
256blocks(5.00%)reservedforthesuperuser
Firstdatablock=0
Maximumfilesystemblocks=8388608
1blockgroup
32768blockspergroup,32768fragmentspergroup
1280 inodes per groupWriting inode tables: done
Creatingjournal(1024blocks):done
Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 30 mounts or
180days,whichevercomesfirst.Usetune2fs-cor-itooverride.
5. 测试lvlinux-0eob:/ # mount /dev/vg0/lvdata /mnt/
linux-0eob:/#ll/mnt/
total16
drwx------2rootroot16384Mar2717:20lost+found
linux-0eob:/#touch/mnt/1.txt
linux-0eob:/#ll/mnt/
total16
-rw-r--r--1rootroot0Mar2717:231.txt
drwx------ 2 root root 16384 Mar 27 17:20 lost+foundlinux-0eob:/ # lvscan ACTIVE '/dev/vg0/lvdata' [20.00 MB] inherit
对我这个初学者来说终于可以了