本文的所有操作届在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分区,原理图见下:

因此,现在需要做的就是将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命令,发现占用量百分比降低了,新的空间生效了。

转载于:https://blog.51cto.com/martin001/1923453

磁盘 - 使用LVM进行磁盘扩容(fdisk, LVM, pvcreate, lvcreate, parted)相关推荐

  1. linux磁盘扩空间,Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  2. LVM动态磁盘扩容管理

    前: 最近经常有人反映之前由于对Linux的分区不太了解,基本上都是默认,现在公司项目服务器数据库,存储 某一个分区被写满了,不得不重新安装操作系统,在此分享一篇自己的动态扩容心得 简介: LVM是逻 ...

  3. centos 对已有卷扩容_centos LVM扩容 添加磁盘

    #创建物理卷,将新增磁盘加入到物理卷. [root@Template~]# pvcreate /dev/sdb Physical volume"/dev/sdb"successfu ...

  4. lvm讲解 磁盘故障小案例

    2019独角兽企业重金招聘Python工程师标准>>> LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux ...

  5. Linux之LVM与磁盘配额(quota)详解

    什么是LVM? LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的 ...

  6. 【AWSL】之LVM与磁盘配额(PV、VG、LV、mkfs)

    序言 这里我主要介绍一些Linux关于磁盘配额的一些问题 LVM与磁盘配额 序言 一.LVM概述 1.LVM的管理命令 2.LVM的操作实例 二.磁盘配额概述 三.磁盘配额管理 总结 一.LVM概述 ...

  7. LVM逻辑卷 (概述lvm,管理卷组 物理卷 逻辑卷,磁盘配额)

    文章目录 管理LVM逻辑卷 前言 lvm简述 pv物理卷 VG卷组 lv逻辑卷 管理LVM pv物理卷管理 pvscan命令--用于扫描系统中的物理卷 pvcreate命令--把整个硬盘转换成物理卷 ...

  8. Linux LVM与磁盘配额详解

    Linux LVM与磁盘配额 一.LVM概述 1.1Logical Volume Manager,逻辑卷管理 1.2LVM机制的基本概念 二.LVM的管理命令 三.LVM操作主要命令步骤 1.关闭主机 ...

  9. Linux磁盘管理——df、du、磁盘分区、格式化、挂载、LVM

    2019独角兽企业重金招聘Python工程师标准>>> Linux磁盘管理 一. df命令 df命令参数功能:检查文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间 ...

最新文章

  1. xml签名和普通数字签名
  2. mysql数据库备份报错145_mysql数据库导出时报错mysqldump: Got error: 145的解决方法
  3. float.equals_Java Float类equals()方法与示例
  4. (操作系统题目题型总结)第六章:文件管理
  5. 【java web】java执行预编译Groovy脚本
  6. java流错误的是什么_Java 流异常的标准处理 | 学步园
  7. CFileStatus 使用详解
  8. Snort里如何将一个tcpdump格式的二进制文件读取打印到屏幕上(图文详解)
  9. 浅谈局部敏感哈希LSH
  10. 使用PHP自带的ZipArchive的一些问题
  11. java 身份证地址提取籍贯_二代身份证信息提取方案的选择?
  12. 为什么今年高考数学又出编程题?
  13. 2020年国内外值得关注的15家PaaS平台与SaaS厂商!
  14. centos mysql 1146_MySQL 主从复制 出现1146error,求如何解决?
  15. 学习MySQL之数据库简介
  16. 计算机界面没磁盘驱动器,请将磁盘插入驱动器,电脑提示驱动器中没有磁盘怎么办...
  17. AutoCAD中凸度的概念以及求圆弧的凸度
  18. 读书笔记系列--VB2005-菜根谭
  19. 简练软考知识点整理-项目配置审核
  20. Kubernetes可视化界面及监控安装

热门文章

  1. Web安全原理剖析(一)——SQL注入原理
  2. 新手必看——Python代码运行的方法都在这里了
  3. 事件之触摸及手势事件
  4. 5分钟将Docker镜像部署到SAP云平台CloudFoundry
  5. http api设计规范
  6. 软考高级信息系统项目管理师系列之四十一:项目组合管理
  7. 2020软考信息系统项目管理师_项目管理(上) 视频培训教程-任铄-专题视频课程
  8. 如何安装JDK 7/8并进行Java编程
  9. WPF 基础控件之 TabControl样式
  10. javascript框架设计之种子模块