基础知识 -- Linux 逻辑卷管理技术1

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): +20M

Command (m for help): p

Disk /dev/sdb: 2147 MB, 2147483648 bytes

255heads,63sectors/track,261cylinders

Units=cylindersof16065*512=8225280bytes

Disk identifier: 0xdc3e63cc

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1114112423+83Linux

/dev/sdb2152811245583Linux

/dev/sdb3              29          32       32130   83  Linux

2. 初始化这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. 创建LV

linux-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 group

Writing inode tables: done                           

Creatingjournal(1024blocks):done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or

180days,whichevercomesfirst.Usetune2fs-cor-itooverride.

5. 测试lv

linux-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+found

 linux-0eob:/ # lvscan   ACTIVE            '/dev/vg0/lvdata' [20.00 MB] inherit

对我这个初学者来说终于可以了

相关推荐