LVM : 扩展文件系统的容量
如果发现文件系统的容量不足了,可以通过 LVM 轻松的进行扩展(当然也可以进行缩减操作)。本文将紧接前文中的 demo 详细的介绍扩展文件系统的操作过程。说明:本文的演示环境为 ubuntu 16.04。
警报:可用磁盘空间不足
当我们收到可用磁盘空间不足的警报时,就需要去诊断磁盘空间相关的问题了。一般的结果是:增加磁盘容量(简单有效,清理掉一些看似没用的文件是件风险极大的事情)!
df 命令可以帮助我们查看文件系统的容量:

上图中的 LV nicklv00 的总容量为 15G,此时可用容量已经不足 1G了,我们接下来扩展这个 LV。
查看当前系统中磁盘的概况
在动手扩展文件系统的容量前,我们需要先搞清楚当前系统中磁盘的基本情况。lsblk 命令可以帮助我们查看系统上的所有块设备列表(下面命令中笔者通过 -e 选项排除了 loop 设备和光驱):
$ lsblk -e ,

我们比较关注挂载点 /home/doc 对应的文件系统的情况:它的磁盘类型为 LVM,对应的 LV 名称为 nicklv00,LV 在名称为 nickvg 的 VG 中。其中磁盘的整个容量为 20G,而 LV 的容量只有 15G。我们先用 lvdisplay 命令来观察下 LV 的详细信息:
$ sudo lvdisplay nickvg/nicklv00

这里比较重要的两点是 LV 的容量为 15G,它所属的 VG 名称为 nickvg。接下来用 vgdisplay 命令查看名称为 nickvg 的 VG 的详细信息:
$ sudo vgdisplay nickvg

上图显示 VG 的容量为 19.97G,已经分配了 15G,还有 4.97G 是空闲的。如果我们的要求不高,可以直接把 VG 中空闲的 4.97G 分配给 LV nicklv00,但是我们希望给 nicklv00 多分些空间,比如 50G。所以我们需要继续查看 VG 的底层构成。
通过 pvs 可以查看 pv 与 vg 的组成关系:
$ sudo pvs

VG nickvg 是由 PV /dev/sdd1 构成的,/dev/sdd1 的容量为 19.97G。要查看 PV 的详细信息,可以使用 pvdisplay 命令:
$ sudo pvdisplay /dev/sdd1

至此我们已经搞清楚了系统当前的存储系统(忽略了我们不太关心的磁盘),总结一下:硬盘设备 /dev/sdd 的容量为 20G,其上创建了一个 20G 的硬盘分区 /dev/sdd1,硬盘分区 /dev/sdd1 被创建为 LVM 的物理卷(PV,PV 的名称依然是 /dev/sdd1),大小仍然为 20G。在物理卷 /dev/sdd1 上创建了容量为 20G 的卷组(VG) nickvg,在 nickvg 中有一个 15G大小的逻辑卷(LV) nickvg/nicklv00。文件系统就建立在 LV 上,挂载点为 /home/doc。
扩展方案
我们打算为 /home/doc 下挂载的文件系统增加 50G 的容量,因此仅仅利用 VG 中剩余的 4.97G 空间时不够的。简单起见,我们直接新增一块容量为 50G 的硬盘(此处为虚拟磁盘),通过 LVM 添加到 VG 中,然后扩展 LV,并最终完成扩展文件系统的任务。
添加磁盘并创建物理卷(PV)
在虚拟机中添加虚拟磁盘并非难事,这里不再细说,笔者添加的磁盘设备文件为 /dev/sde:

接下来请参照前文《LVM : 简介》中的介绍创建磁盘分区,并用磁盘分区创建 LVM 物理卷(PV)。
笔者创建的磁盘分区为 /dev/sde1:
创建的物理卷如下所示:

扩展卷组(VG)
接下来我们需要通过 vgextend 命令扩展卷组。vgextend 命令可以把一个或多个物理卷(LV)加入到 VG 中:
$ sudo vgextend nickvg /dev/sde1

检查 VG nickvg 的详细信息:

此时 VG 的容量已经变成了 69.94G,可用的容量有 54.94G,扩展 VG 成功了!再看看 VG 与 PV 的关系:

VG nickvg 由 /dev/sdd1 和 /dev/sde1 两个 PV 组成,当前总的可用空间为 4.97G + 49.97G。
扩展逻辑卷(LV)
LVM 最主要的功能就是能动态地调整分区的大小,其实也就是修改逻辑(LV)的容量。修改 LV 容量的命令有 lvextend(扩展逻辑卷)和 lvreduce(缩减逻辑卷),这两个命令的用法差不多,这里我们只介绍 lvextend 命令。lvextend 命令的格式如下:
lvextend [-L (+size) -l (+PE 数)] 逻辑卷名称
-L 选项表示为 LV 增加指定 size 的容量。
-l 选项表示为 LV 增加指定数目的 PE。
我们通过下面的命令来扩展 LV:
$ sudo lvextend -L 65G nickvg/nicklv00
或者:$ sudo lvextend -L 65G /dev/nickvg/nicklv00

然后检查下 LV 的详细信息:

nickvg/nicklv00 逻辑卷的大小已经变成了 65G。再看看 PV 的信息:

哈哈,居然不是直接用光 /dev/sde1 上的空间,而是先用光 /dev/sdd1 上的空间,然后从 /dev/sde1 上分配剩余的空间。
缩减逻辑卷的方式和扩展逻辑卷的方式差不多,只不过使用的是 lvreduce 命令。
扩展文件系统
resize2fs 命令用来扩展或收缩文件系统的容量,但是这个命令只支持 ext2、ext3、ext4 格式的文件系统。笔者的文件系统为 ext4,所以可以使用 resize2fs 命令进行扩展。这个命令还有一个特点,如果是扩展文件系统的容量,那么不管目标文件系统是否处于挂载状态都可以执行。如果是缩减文件系统的容量,则只能先卸载文件系统,缩减容量后再重新挂载文件系统。下面的命令把文件系统的容量扩展至 LV 的总容量:
$ sudo resize2fs /dev/nickvg/nicklv00

再去查看下文件系统的信息:

目标文件系统已经显示被扩展到了 64G(各种开销),至此我们完成了文件系统的扩容任务。
总结
使用 LVM 管理磁盘让文件系统的扩展/缩减变得非常容易,特别是可以自由的组合硬件磁盘为更大的容量单位(VG),使系统维护者的工作变得轻松不少。除此之外,LVM 还支持快照等特色功能,笔者将在接下来的文章中介绍如何使用 LVM 的快照。
参考:
在Linux中扩展/缩减LVM(第二部分)
vgextend man page
resize2fs man page
LVM : 扩展文件系统的容量的更多相关文章
- LVM : 缩减文件系统的容量
有扩展就有缩减,我们在前文<LVM : 扩展文件系统的容量>中介绍了通过 LVM 扩展文件系统的方法,本文我们接着前文的 demo 介绍通过 LVM 缩减文件系统的方法.说明:本文的演示环 ...
- LVM扩展学习日志
lvm是逻辑卷管理的简称,它将一个或多个物理硬盘分区(PV)组成一个逻辑硬盘(VG)来使用, 然后从这个VG中划分出逻辑分区(LV), 以上概念是我理解的东西,可能和书上的不一样. 以下所有命令都是 ...
- Ubuntu 15.04 无损扩展分区(目录)容量的方法 (无需格式化, 文件不丢失)
源 起 用了一段时间Ubuntu,碰到了UBuntu磁盘空间不足的问题, 最初我只给Ubuntu分配了30个G的空间, 昨天试用了一下VirtualBox安装了一个xp虚拟系统,用以解决Ubuntu下 ...
- linux 扩展文件系统
1. 创建新分区 [root@localhost ~]# fdisk -l Disk /dev/sda: bytes, sectors Units = sectors of * = bytes Sec ...
- Linux系统使用lvm扩展根分区
Linux系统使用lvm扩展根分区 背景:买的云主机虚拟机封装镜像是40G的系统盘,后期适用不规范或者其他需求需要扩展系统盘,而非挂载在一个盘至新建目录. 1.原本目录磁盘等信息: 2.使用vgdis ...
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...
- AIX扩展文件系统的大小
由于AIX系统空间不够需要增加硬盘,希望增加文件系统的空间,折腾了好几天怎么都不能扩展文件系统的空间,原来是把硬盘加错了卷组 首先,确定文件系统所在的LV /dev/datalv 270.0 ...
- aix 扩展文件系统
今天发现公司的oracle测试 数据库不能启动,检查警告日志日志,提示归档空间不足,不能归档,于是扩展文件系统: 1.检查rootvg卷组的剩余空间[p2704u]:[/dsg/oracle11]$ ...
- Linux LVM 扩展磁盘分区
系统:centos 6.3--新建分区 fdisk -l /dev/sdc # 查看分区 fdisk /dev/sdc # 创建分区 :n ...
随机推荐
- [20180316]共享服务模式和直接路径读.txt
[20180316]共享服务模式和直接路径读.txt --//在共享服务器模式下,执行计划不会选择直接路径读,通过例子证明. 1.环境:SYS@book> @ &r/ver1PORT_S ...
- MySQL 并行复制演进及 MySQL 8.0 中基于 WriteSet 的优化
MySQL 8.0 可以说是MySQL发展历史上里程碑式的一个版本,包括了多个重大更新,目前 Generally Available 版本已经已经发布,正式版本即将发布,在此将介绍8.0版本中引入的一 ...
- HDU ACM 1856 More is better(并查集)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1856 [解题思路]给的数据有点大,干脆少开点数组,直接上set存储有朋友的孩子的编号,同时根据编号初 ...
- Django学习---笔记一
一. 新建虚拟机在虚拟中完成项目 1.新建虚拟机 mkvirtalenv 虚拟机名称 2.进入虚拟机 cd 新建的虚拟机名称 3.安装Django pip install django 4.Dj ...
- python学习-判断是否是私网IP地址
判断是否是私网IP地址 私网IP地址范围如下: 192.168.0.0-192.168.255.255 172.16.0.0-172.31.255.255 10.0.0.0-10.255.255.25 ...
- debian 7.4 安装配置
改用debian差不多有半年了,之前一直用fedora,大概3年多,虽然软件包都很新,总是不太稳定,有点软件用着用着就自动退出了. 换了debain之后,这半年还真是一直没啥问题,这里总结了一些安装配 ...
- VRS生成的虚拟观测值存在的问题
目前生成的虚拟观测值. 天津的版本,如果有数据库中有天线类型,那么会对天线类型改正了两次. 解决方法:在生成虚拟观测值编码的部分,注释掉天线改正的部分. 对结果的影响:错误版本生成的虚拟观测值,移动站 ...
- MySql/Oracle和SQL Server的分页查
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: 1 SELECT 2 * 3 ...
- SDE ST_Geometry SQL st_intersects查询很慢的解决方法
环境:服务端 SDE 10.0 oracle 11.2,客户端 PLSQL 11,oracle 11.2 为了调试方便,以下测试都是把sql提取出来在PLSQL上做 需求是已知一个多边形的点坐标,要在 ...
- linux的压缩解压命令全解
.tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)——————————————— .zip解压:un ...