ITPub博客

首页 > Linux操作系统 > Linux操作系统 > LVM磁盘管理

LVM磁盘管理

Linux操作系统 作者:lpwebnet 时间:2013-11-21 17:16:07 0 删除 编辑
LVM是Logical Volume Manager(逻辑卷管理器)的简写,它为主机提供了更高层次的磁盘存储管理能力。LVM可以帮助系统管理员为应用与用户方便地分配存储空间。在LVM 管理下的逻辑卷可以按需改变大小或添加移除。另外,LVM可以为所管理的逻辑卷提供定制的命名标识。因此,使用LVM主要是方便了对存储系统的管理,增加了系统的扩展性。
       目前LVM在Linux下有两个版本,分别是LVM 1和LVM 2,LVM2不仅仅是Linux逻辑卷管理在版本与功能上的升级,而且是架构在一个新的内核存储子系统(DM,device-mapper)之上的。这个 存储子系统提供了一个轻量级的、可扩展的卷管理设施。除了在原有LVM卷管理功能的基础上,Linux的逻辑卷管理将会为用户提供更多的存储管理方案,如 镜像、加密卷、多路径技术。
070711193149-thumb.jpg在上面的LVM结构图中,涉及到了很多LVM的相关术语,那么关于这些术语的详细说明如下:
物理卷(physical volume,PV)

物理卷就是指硬盘分区,也可以是整个硬盘或已创建的软RAID ,是LVM的基本存储设备,与普通物理存储介质的区别是该设备包含有LVM相关的管理参数。

卷组(volume group,VG)

卷组是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个"LVM分区"(逻辑卷)。只有通过PV将分区变成物理卷后, 我们才能将这变成的一个或多个物理卷组合成一个卷组.就相当于,将几个班的教室合并成一个年级(vgcreate).以后,就可以随意分配学生了 (LV).当然,前提就是将这些学生pvcreate成同一个年段(PV)了.

逻辑卷(logical volume,LV)

LVM 的逻辑卷类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件系统。可以做这样一个设想来理解以上三者的关 系:如果把PV比做地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,那么在地球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。
假设我们一个阵列,设备名为:/dev/sdb

    [root@SERVER2 dev]# fdisk /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel. Changes will remain in memory only,
    until you decide to write them. After that, of course, the previous
    content won't be recoverable.


    The number of cylinders for this disk is set to 145684.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
       (e.g., DOS FDISK, OS/2 FDISK)
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

    Command (m for help): p

    Disk /dev/sdb: 1198.2 GB, 1198295875584 bytes
    255 heads, 63 sectors/track, 145684 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

       Device Boot      Start         End      Blocks   Id  System

建立物理卷PV:

    [root@SERVER2 dev]# pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created

创建VG卷组:

    [root@SERVER2 dev]# vgscan
    Reading all physical volumes.  This may take a while...#一般我们初始建立卷组时都要先scan下.
    Found volume group "soleil" using metadata type lvm2
    Found volume group "VolGroup00" using metadata type lvm2

    [root@SERVER2 dev]# vgdisplay soleil
      --- Volume group ---
      VG Name               soleil
      System ID           
      Format                lvm2
      Metadata Areas        1
      Metadata Sequence No  26
      VG Access             read/write
      VG Status             resizable
      MAX LV                0
      Cur LV                1
      Open LV               1
      Max PV                0
      Cur PV                1
      Act PV                1
      VG Size               1.09 TB
      PE Size               4.00 MB
      Total PE              285695
      Alloc PE / Size       285695 / 1.09 TB
      Free  PE / Size       0 / 0 
      VG UUID               iEGRp4-yLeD-Thkj-4YRA-o0HP-82KY-W2YgTS

下面是建立逻辑卷:

    [root@localhost /]# lvcreate -n data -L 1.9TBM vg0  #建立名为data,大小1.9TB
      /dev/cdrom: open failed: Read-only file system
      Rounding up size to full physical extent 1.92TB
      Logical volume "data" created
    [root@SERVER2 dev]# lvdisplay
      --- Logical volume ---
      LV Name                /dev/soleil/data
      VG Name                soleil
      LV UUID                swZafx-tezV-rsMf-wdEb-vlb6-Ko8z-0gUTLU
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                1.09 TB
      Current LE             285695
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:2
     
      --- Logical volume ---
      LV Name                /dev/VolGroup00/LogVol00
      VG Name                VolGroup00
      LV UUID                Hnct0R-vp1y-tZPl-VMXU-AZ2C-Y6ru-umo4m0
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                134.59 GB
      Current LE             4307
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:0
     
      --- Logical volume ---
      LV Name                /dev/VolGroup00/LogVol01
      VG Name                VolGroup00
      LV UUID                VZuwuR-JFcA-MDM8-5OGM-yNVe-AXrK-1T1f23
      LV Write Access        read/write
      LV Status              available
      # open                 1
      LV Size                1.94 GB
      Current LE             62
      Segments               1
      Allocation             inherit
      Read ahead sectors     0
      Block device           253:1
    [root@SERVER2 dev]# mkfs.ext3 /dev/vg0/data #格式化成ext3格式.
    mke2fs 1.35 (28-Feb-2008)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    3072 inodes, 12288 blocks
    614 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=12582912
    2 block groups
    8192 blocks per group, 8192 fragments per group
    1536 inodes per group
    Superblock backups stored on blocks:
            8193
    Writing inode tables: done
    Creating journal (1024 blocks): done
    Writing superblocks and filesystem accounting information: done
    This filesystem will be automatically checked every 35 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    [root@SERVER2 dev]# mount /dev/vg0/data /mnt/  #mount到/mnt文件夹
    [root@SERVER2 dev]# cp /etc/hosts /mnt/  #拷贝个文件进去试下
    [root@SERVER2 dev]# ls /mnt/  #看下,里面已经有个hosts文件了.
    lost+found  hosts

    [root@SERVER2 dev]#umount /mnt/
    [root@SERVER2 dev]# lvextend -L +10M /dev/vg0/data  #扩展逻辑卷大小
      /dev/cdrom: open failed: Read-only file system
      Rounding up size to full physical extent 12.00 MB
      Extending logical volume data to 1.930TB
      Logical volume data successfully resized
    以上就是在Linux下创建逻辑卷的整个步骤。

LVM的维护
在LVM的日常维护工作中,通常会需要对逻辑卷扩容、添加新的物理卷等操作,下面将结合【实例1】中所创建的逻辑卷来介绍LVM常用的管理操作,如下:

1、激活卷组

卷组若不被激活,卷组和逻辑卷是不能被访问的,在LVM 2里创建的卷组默认是激活的,那么手动激活卷组的命令是:

# vgchange -a y vgtest

2 logical volume(s) in volume group "vgtest" now active

其中"-a"用于设置指定的卷组是否可用,参数"y"表示激活卷组,若设置为"n"则表示暂停卷组使用。

2、为卷组增加新的物理卷

当卷组空间不足时,可以加入新的物理卷来扩大卷组容量,这时可用"vgextend"命令来实现,如下:

# vgextend vgtest /dev/sde

Volume group "vgtest" successfully extended

其中"/dev/sde"是新增的物理卷,前提该设备已经使用"pvcreate"进行了初始化了。

3、从卷组中移除物理卷

要从一个卷组中移除一个物理卷,首先要确认要移除的物理卷没有被任何逻辑卷正在使用,通过"pvdisplay"命令可查看到该物理卷信息,如下:

#pvdisplay /dev/sde

-- Physical volume --

PV Name /dev/sde

VG Name vgtest

PV Size 100.00 MB / not usable 0

Allocatable yes

PE Size (KByte) 4096

Total PE 25

Free PE 25

Allocated PE 0

PV UUID ee2IFC-UHUq-Xg67-icwt-AhdJ-7kRz-JdDjiq

若其中的"Total PE"与" Free PE"相等,表明该物理卷没有被使用,如果某个物理卷正在被逻辑卷所使用,就需要将该物理卷的数据转移到其它地方,然后再移除。移除物理卷的命令为"vgreduce",如下:

# vgreduce vgtest /dev/sde

Removed "/dev/sde" from volume group "vgtest"

4、在物理卷间转移数据

当发现逻辑卷下的某个磁盘有错误,或有其它需求要转移其中物理卷的数据时(如,更换大容量或更高速的物理设备),那么可通过"pvmove"来实现在物理卷之间转移数据,例如,将物理卷"/dev/sdd"上的数据转移到"/dev/sde"具体操作如下:

# pvmove /dev/sdd /dev/sde

/dev/sdd: Moved: 100.0%

其中/dev/sde的大小一定要大于或等于/dev/sdd,其次在使用"pvmove "前需要用 "modprobe dm-mirror"命令来加载dm-mirror模块,因为"pvmove"在转移数据时需要用到该模块,而默认系统是不加载该模块的。

5、扩展逻辑卷

在前面提到过,LVM提供了方便调整逻辑卷大小的功能,扩展逻辑卷大小的命令是"lvextent",例如,将"lvtest2"的空间大小调整到160M,操作如下:

# lvextend -L 160M /dev/vgtest/lvtest2

Extending logical volume lvtest2 to 160.00 MB

Logical volume lvtest2 successfully resized

也可以在原来的基础增加相应的大小,如下:

# lvextend -L +40M /dev/vgtest/lvtest2

Extending logical volume lvtest2 to 160.00 MB

Logical volume lvtest2 successfully resized

逻辑卷扩展后并不会马上生效,需要使用"resize2fs"命令重新加载逻辑卷的大小,该命令只针对ext2/ext3的文件系统(若是reiserfs 的文件系统,则使用"resize_reiserfs"命令),如果该逻辑卷正在使用中,就应该先将该逻辑卷卸载后再执行"resize2fs"命令,操作如下:

# umount /dev/vgtest/lvtest2

# resize2fs /dev/vgtest/lvtest2

resize2fs 1.35 (28-Feb-2004)

The filesystem is already 163840 blocks long. Nothing to do!

# mount /dev/vgtest/lvtest2 /mnt/lvtest2/

以上这些操作可以通过"ext2online"命令直接来实现,这样就不用做卸载逻辑卷等操作了,如下:

# ext2online /dev/vgtest/lvtest2

ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b

6、删除逻辑卷

删除逻辑卷前首先需要将其卸载,其命令是"lvremove",如下:

# lvremove /dev/vgtest/lvtest2

Do you really want to remove active logical volume "lvtest2"? [y/n]: y

Logical volume "lvtest2" successfully removed

其中输入"y"确认确认删除该逻辑卷。

7、移除卷组

在移除卷组前首先要确认该卷组中已没有任何的逻辑卷了,或者可使用"vgchange"手工将卷组停止,移除卷组的具体操作如下:

# vgremove vgtest

Volume group "vgtest" successfully removed

8、删除物理卷

在删除物理卷前,必须确认该物理卷已从卷组中移除了,删除物理卷的命令是"pvremove",如下:

# pvremove /dev/sde

Labels on physical volume "/dev/sde" successfully wiped

除此之外,LVM还可以提供snapshot(快照)等功能,其snapshot能够快速的备份当前逻辑卷中的数据。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17172228/viewspace-777250/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-07-21

  • 博文量
    120
  • 访问量
    844560