建立基于LVM的文件系统

 

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 volume group),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logical volumes),并进一步在逻辑卷组上创建文件系 统。

 

主体思路分为三步:新建 Physical Volume(PV);用几个PV建立一个Volume Group(VG);再由VG划分Logical Volume(LV)LV就是最终可以挂载的分区。

LVM的好处:在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。

下面以ubuntu 12.04 server来演示:

这里,我新建了45G大小的PVPhysical Volume),选择逻辑分区,并设置为供LVM所用。

 

值得注意的是/boot分区时不能放在基于LVM的文件系统上的,因此此处/boot分区建立,ext4格式的主分区。并留下一部分空闲空间,以备今后扩展分区之用。

接下来我们用新建的4PV来组成一个VG

选择Create volume group

并给即将建立的VG取个名字

用空格键选中我们要包含进VG中的PV.

接下来就是新建LV,这里我新建了/home, / , swap三个分区分别用来挂载相应的文件系统,分区明细如下图。

   接下来设置LV,使之挂在在相应的挂载点上,如下图,选择

挂载点设置好之后的预览表如下图

点击finish即可完成基于LVM文件系统,并在此文件系统上安装操作系统。

 

登陆系统后用sudo权限使用pvdisplay查看当前PV情况

op@localhost:~$ sudo pvdisplay

  --- Physical volume ---

  PV Name               /dev/sda5

  VG Name               VG-ubuntu

  PV Size               4.66 GiB / not usable 3.00 MiB

  Allocatable           yes (but full)

  PE Size               4.00 MiB

  Total PE              1191

  Free PE               0

  Allocated PE          1191

  PV UUID               3GgY2A-SF0x-Amar-GQop-YOGd-mOGD-0AG9qY

 

  --- Physical volume ---

  PV Name               /dev/sda6

  VG Name               VG-ubuntu

  PV Size               4.66 GiB / not usable 3.00 MiB

  Allocatable           yes (but full)

  PE Size               4.00 MiB

  Total PE              1191

  Free PE               0

  Allocated PE          1191

  PV UUID               eO1UPT-OndC-DgKg-LCKD-VI6U-WCOe-ib8wFp

 

  --- Physical volume ---

  PV Name               /dev/sda7

  VG Name               VG-ubuntu

  PV Size               4.66 GiB / not usable 3.00 MiB

  Allocatable           yes (but full)

  PE Size               4.00 MiB

  Total PE              1191

  Free PE               0

  Allocated PE          1191

  PV UUID               6Tssor-gFR4-ySaV-Cmss-KuqM-gECT-Kz5dAq

 

  --- Physical volume ---

  PV Name               /dev/sda8

  VG Name               VG-ubuntu

  PV Size               4.66 GiB / not usable 3.00 MiB

  Allocatable           yes (but full)

  PE Size               4.00 MiB

  Total PE              1191

  Free PE               0

  Allocated PE          1191

  PV UUID               aNtKz2-XGCt-aOic-j3yQ-r1t7-rnBJ-8CXD3b

 

使用vgdisplay命令查看VG情况。

op@localhost:~$ sudo vgdisplay

  --- Volume group ---

  VG Name               VG-ubuntu

  System ID

  Format                lvm2

  Metadata Areas        4

  Metadata Sequence No  8

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                3

  Open LV               3

  Max PV                0

  Cur PV                4

  Act PV                4

  VG Size               18.61 GiB

  PE Size               4.00 MiB

  Total PE              4764

  Alloc PE / Size       4764 / 18.61 GiB

  Free  PE / Size       0 / 0

  VG UUID               xDkLVy-0wEv-FKN5-ePuI-Z2mV-4MYk-3nRoOI

 

使用lvdisplay命令查看LV情况

op@localhost:~$ sudo lvdisplay

  --- Logical volume ---

  LV Name                /dev/VG-ubuntu/VG-swap

  VG Name                VG-ubuntu

  LV UUID                v4Ut41-7kWG-3bDH-NSeJ-sW2D-8NKe-AYTXdo

  LV Write Access        read/write

  LV Status              available

  # open                 2

  LV Size                976.00 MiB

  Current LE             244

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           252:0

 

  --- Logical volume ---

  LV Name                /dev/VG-ubuntu/VG-home

  VG Name                VG-ubuntu

  LV UUID                Uls8lX-e3l1-1US2-iHrZ-EzAF-H4kN-s0kWo3

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                3.69 GiB

  Current LE             944

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     256

  Block device           252:1

 

  --- Logical volume ---

  LV Name                /dev/VG-ubuntu/VG-rootsys

  VG Name                VG-ubuntu

  LV UUID                uOUtcz-pjH9-2UvO-ql8p-uY6I-v2cR-Hp8Fdq

  LV Write Access        read/write

  LV Status              available

  # open                 1

  LV Size                13.97 GiB

  Current LE             3576

  Segments               4

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to       256

  Block device           252:2

 

使用fdisk命令新建PV对现存的LV进行扩展

op@localhost:~$ sudo fdisk /dev/sda

 

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition

   l   list known partition types

   m   print this menu

   n   add a new partition

   o   create a new empty DOS partition table

   p   print the partition table

   q   quit without saving changes

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit

   x   extra functionality (experts only)

 

Command (m for help): n

Partition type:

   p   primary (1 primary, 1 extended, 2 free)

   l   logical (numbered from 5)

Select (default p): p

Partition number (1-4, default 3):

Using default value 3

First sector (39450624-41943039, default 39450624):

Using default value 39450624

Last sector, +sectors or +size{K,M,G} (39450624-41943039, default 41943039): +512M

 

修改分区类型 8eLinux下的LVM

Command (m for help): t

Partition number (1-8): 3

Hex code (type L to list codes): 8e

 

然后w保存

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

 

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

然后执行partprobe重新读取分区表或者重启刷新分区表

这样就利用未利用的磁盘空间新建了一个512M大小的分区

 

接下来把这个分区转换成PV

op@localhost:~$ sudo pvcreate /dev/sda3

  Physical volume "/dev/sda3" successfully created

 

接下来把PV加进VG里。

op@localhost:/dev$ sudo vgextend /dev/VG-ubuntu /dev/sda3

  Volume group "VG-ubuntu" successfully extended

 

先查看下当前分区挂载情况

op@localhost:/dev$ df -h

Filesystem                          Size  Used Avail Use% Mounted on

/dev/mapper/VG--ubuntu-VG--rootsys   14G  1.4G   12G  10% /

udev                                114M   12K  114M   1% /dev

tmpfs                                49M  344K   49M   1% /run

none                                5.0M     0  5.0M   0% /run/lock

none                                122M     0  122M   0% /run/shm

/dev/mapper/VG--ubuntu-VG--home     3.7G  415M  3.1G  12% /home

/dev/sda2                           190M   36M  144M  20% /boot

/dev/sr0                            218M  218M     0 100% /mnt

op@localhost:/dev$ sudo lvextend -L +300M /dev/mapper/VG--ubuntu-VG--home

  Extending logical volume VG-home to 3.98 GiB

  Logical volume VG-home successfully resized

 

然后在线扩展文件系统

op@localhost:/dev$ sudo resize2fs /dev/mapper/VG--ubuntu-VG--home

resize2fs 1.42 (29-Nov-2011)

Filesystem at /dev/mapper/VG--ubuntu-VG--home is mounted on /home; on-line resizing required

old_desc_blocks = 1, new_desc_blocks = 1

Performing an on-line resize of /dev/mapper/VG--ubuntu-VG--home to 1043456 (4k) blocks.

The filesystem on /dev/mapper/VG--ubuntu-VG--home is now 1043456 blocks long.

如果正在使用的文件系统,需要先卸载文件系统,再扩展,再挂载文件系统。