您的位置:首页 > 运维架构 > Linux

【Linux】Linux下建立和管理逻辑卷

2012-12-21 15:46 274 查看
目录:

---------------------------------------------------

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。以上减小逻辑卷容量的动作,逻辑卷上的数据是不会丢失的。注:这里必须要严格按照上面的步骤来做,顺序如果反了话逻辑卷里面的数据将会损坏或者丢失。


5,结束语

这里只是简单的对LVM做了一下介绍,并且做了一个在我们日常工作中经常会碰到的增加,减少逻辑卷大小的例子。更多关于LVM的管理和维护可以参照系统自带的man
lvm帮助文档来查看或者登陆[| http://sources.redhat.com/lvm2/].
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: