加载中…
个人资料
OpenWrt
OpenWrt
  • 博客等级:
  • 博客积分:0
  • 博客访问:65,986
  • 关注人气:10
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

使用LVM进行磁盘扩容(fdisk, LVM, pvcreate, lvcreate, parted)

(2014-10-04 22:06:18)
标签:

lvm

partition

fdisk

磁盘扩容

扩展磁盘

本文的所有操作届在Ubuntu 12.04 LTS上验证成功,其他发行版请自行查阅相关命令。
给某台服务器或者虚拟机VM进行LVM扩容的前提是,这台机器在安装创建的时候开启了LVM功能。
对于服务器来说,需要扩容时,你可能已经准备好了一个新的磁盘,系统检测到为/sdb,而对于云服务器或者虚拟机来说,可能是vm控制器已经将你的虚拟物理磁盘扩容了,只不过你的系统还没有利用到这些空间而已。比如用vmware fusion,点击扩容功能之后进入系统输入fdisk,发现磁盘分区没有变化,但是多出了一块未使用的物理空间。

首先介绍LVM的几个概念:
    1. 物理卷Physical volume (PV):可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)。 Think of physical volumes as big building blocks which can be used to build your hard drive.
    2. 卷组Volume group (VG):将一组物理卷收集为一个管理单元。Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.
    3. 逻辑卷Logical volume (LV):虚拟分区,由物理区域(physical extents)组成。A "virtual/logical partition" that resides in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.
    4. 物理区域Physical extent (PE):硬盘可供指派给逻辑卷的最小单位(通常为4MB)。A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.


02@02-vm:~$ sudo df
Filesystem                        1K-blocks    Used Available Use% Mounted on
/dev/mapper/02--vm--vg-root  38057472 3501084  32802424  10% /
udev                                1011124       4   1011120   1% /dev
tmpfs                                204196     500    203696   1% /run
none                                   5120       0      5120   0% /run/lock
none                                1020968       0   1020968   0% /run/shm
cgroup                              1020968       0   1020968   0% /sys/fs/cgroup
/dev/sda1                            240972   34482    194049  16% /boot
/dev/loop0                          4872572   32928   4839644   1% /srv/node/vdb

输入df可发现,/挂载点使用的设备是/dev/mapper/xxx,并不是传统的/dev/sdax。

输入lvdisplay,显示当前正在使用的logical volume(注意这里目前有两个,一个是文件系统所在的volume,另一个是swap分区使用的volume,当然,我们需要扩容的是第一个):

02@02-vm:~$ sudo lvdisplay
  --- Logical volume ---
  LV Name                /dev/02-vm-vg/root
  VG Name                02-vm-vg
  LV UUID                vC3dCP-ynJq-qwbf-ZwwX-T1ca-tOo6-5FYVNg
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                19.00 GiB
  Current LE             9472
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Name                /dev/02-vm-vg/swap_1
  VG Name                02-vm-vg
  LV UUID                PT5spg-Ll4p-WAij-g2QB-PSmu-qaIr-gxc6Nf
  LV Write Access        read/write
  LV Status              available
  # open                 2
  LV Size                2.00 GiB
  Current LE             511
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

输入vgdisplay,显示当前的volume group,注意VG SIZE,这里应该是你当前的可用空间大小,待扩容完毕,这里显示的应该是最终的大小。
02@02-vm:~$ sudo vgdisplay
  --- Volume group ---
  VG Name               02-vm-vg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.75 GiB
  PE Size               4.00 MiB
  Total PE              10177
  Alloc PE / Size       9983 / 39.00 GiB
  Free  PE / Size       194 / 776.00 MiB
  VG UUID               GFrHkW-EZFQ-vuCo-b4Pp-F1Lm-FV8B-NcbMmD

输入pvdisplay,显示当前的physical volume,

02@02-vm:~$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               02-vm-vg
  PV Size               19.76 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              5058
  Free PE               0
  Allocated PE          5058
  PV UUID               RsGi6C-g0lm-SzJ1-9rw4-dMEi-Q633-9wo1Gd 

现在开始进行LVM扩容:

1. 首先查看fdisk
$ sudo fdisk -l
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      499711      248832   83  Linux
/dev/sda2          501760    41940991    20719616    5  Extended
/dev/sda5          501760    41940991    20719616   8e  Linux LVM

因为这台机器默认开启了LVM,所以目前有一个extended分区和一个LVM分区,并且他们是完全重叠的。
这是因为,LVM分区作为一个虚拟的分区,完全占用了这个extended分区,原理图见下:

使用LVM进行磁盘扩容(fdisk, <wbr>LVM, <wbr>pvcreate, <wbr>lvcreate, <wbr>parted)

因此,现在需要做的就是将extended partition (sda2)扩展到最大,然后创建一个新的LVM logical partition (sda6),用它来填满sda2。

使用parted命令来扩展sd2:进入parted交互模式后,可以使用help xxx来提示帮助。

help resize
resize NUMBER START END                  resize partition NUMBER and its file system

这里number输入2, start和end参见fdisk的数据(不过parted已经足够智能地将start默认值设置成了sda5的结束,end默认值设置成物理磁盘的末尾)

接着,回到fdisk,使用它创建一个新的logical分区
n(new) -> l(logical);再选择t,更改这个分区的类型id,设置成8e,即LVM,默认创建的类型不是LVM;w,保存退出;重启。

这时候,再查看fdisk,发现已经多了一个sda6了,现在要做的就是将sda6作为一个pv,加入到vg里来,从而能够给lv扩容。(忘了关键词的话请查上文)

sudo pvcreate /dev/sda6

pvdisplay

# vgextend - add physical volumes to a volume group
# 将新的pv加入到原有的vg
sudo vgextend your_vg_name /dev/sda6

vgdisplay,发现free size多了一块。

# lvresize - resize a logical volume
# 扩大当前正在使用的lv,从vg中取剩余空间

最后一步,磁盘扩容完毕了,需要扩容文件系统。目前较新的内核都支持在线扩容了,不需要像以前那样mount umount来回折腾了。

resize2fs [ -fFpPM ] [ -d debug-flags ] [ -S RAID-stride ] device [ size ]

只需要输入device就行了,size参数不填的话,默认使用整个分区的size。

注意这里的device是虚拟设备lv的名称,并不是sdax这样的物理设备了,我的环境下是/dev/02-vm-vg/root

扩容完文件系统后重启,再查看df命令,发现占用量百分比降低了,新的空间生效了。
使用LVM进行磁盘扩容(fdisk, <wbr>LVM, <wbr>pvcreate, <wbr>lvcreate, <wbr>parted)





0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有