Linux下建立和管理逻辑卷

来源:百度文库 编辑:神马文学网 时间:2024/04/27 15:17:04

目录:

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

1,概述 1

2,基本原理 1

3,建立逻辑卷     1

建立物理卷     1

建立卷组         2

建立逻辑卷     3

4,动态增加和减小逻辑卷大小       4

动态增加逻辑卷容量     4

动态减小逻辑卷大小     6

5,结束语      7

 

正文:

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

1,概述

逻辑卷管理(Logic Volume Manager),简称LVM,它是与传统的静态分区完全不同的磁盘管理方式,LVM是把实际的物理磁盘数据影射到一个简单而灵活的虚拟性的逻辑存储视图上,借以控制磁盘资源。这样,也就是重新考虑了管理文件系统和卷的方法,系统在文件系统管理中增加了一个额外的抽象层,不需要深入细节的了解,可以实现虚拟分区或者动态建立一个逻辑卷以及动态更改卷的大小,并且实现了允许文件系统跨越磁盘等功能。

2,基本原理

·物理卷

物理卷 physical volumePV),通常一个物理卷就是一块硬盘,或者是一个磁盘的某一个分区,或者看起来象一块硬盘的设备,如软件raid设备。

·卷组

卷组 Volume GroupVG),卷组是lvm里的最高抽象级。它把逻辑卷和物理卷集中在一个管理单位里面。

·逻辑卷

逻辑卷(Logical VolumeLV):等同于非lvm系统下的分区lv可以看作标准的块设备,可以包含一个文件系统(如/home)。

·物理盘区

物理盘区(Physical ExtentsPE)):每个物理卷被划分为称为PE(PhysicalExtents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元PE的大小是可以设置的,默认为4MB

·逻辑盘区

逻辑盘区(logical extentLE)):逻辑卷也被划分为被称为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

 

建立卷组

然后再将sdcsdd分别加入到一个名叫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 size1.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.5GBdf -h 看到现在我们的/data 目录大小已经变成了1.5G。这样我们就能继续使用data目录而不需要

重新卸载个挂载文件系统了。

 

动态减小逻辑卷大小

减小逻辑卷就没有增大那么容易了,因为系统在经过长期的删除增加文件以后,文件系统的block的顺序已经比较混乱了。所以不能像增加容量那样在线的动态增加。必须要先将文件系统卸载掉,然后用"fsck -f /dev/vg_bkeep/data" 强制检查和整理一下文件系统的inodeblock.然后再减小容量。如图-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

 

如上图所见,我们lvdisplaydata卷大小已经变成了1G,并且我们再挂载/dev/vg_bkeep/data/data,然后用“df -h”查看我们的/data目录也减小1008MB。以上减小逻辑卷容量的动作,逻辑卷上的数据是不会丢失的。注:这里必须要严格按照上面的步骤来做,顺序如果反了话逻辑卷里面的数据将会损坏或者丢失。