Disk:磁盘管理之LVM和系统磁盘扩容
简介
- 小伙伴们好,好久不见,今天想给大家介绍一下关于磁盘管理的方法和心得;磁盘管理可谓运维工作中的重要内容,主要包括磁盘的合理规划以及扩缩容
- 常用的磁盘管理方法为LVM(Logical Volume Manager 逻辑卷管理),这种方法能够实现磁盘的灵活扩缩容,使得磁盘得以充分使用,节约成本;但LVM只适用于数据盘的管理,对于系统盘,则需要通过其他工具进行扩容,本文将从这两个方面展开介绍,不足之处,欢迎批评指正。
LVM逻辑卷管理
关于LVM的一些知识
- LVM利用Linux内核的
device-mapper来实现存储系统的虚拟化(系统分区独立于底层硬件)。通过LVM,你可以实现存储空间的抽象化并在上面建立虚拟分区,可以更简便地扩大和缩小分区,可以增删分区时无需担心某个硬盘上没有足够的连续空间。 - 简单来说:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。
LVM的基本组成块如下:
- 物理卷Physical volume (PV):可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)。
- 卷组Volume group (VG):将一组物理卷收集为一个管理单元。
- 逻辑卷Logical volume (LV):虚拟分区,由物理区域(physical extents)组成。
LVM的操作命令:
- 如图所示,为LVM的逻辑图,硬盘分区,分区创建为PV,PV创建为VG,VG创建为LV

下面举几个例子
创建逻辑卷和删除逻辑卷
fdisk /dev/sdb # 对磁盘进行分区
n, +3G, t, 8e, w
partprobe /dev/sdb
cat /proc/partitions
pvcreate /dev/sdb{5,6} # 创建PV
pvs # 查看PV
pvdisplay # 查看PV详情
pvdisplay /dev/sdb5 # 只显示一个PV
pvscan # 扫描存在的PV
vgcreate myvg /dev/sdb{5,6} # 创建vg
vgs # 显示创建的vg
vgdisplay myvg # 显示vg详情
pvdisplay /dev/sdb5 # 查看PE
vgremove myvg # 删除myvg
vgcreate -s 8M myvg /dev/sdb{5,6} # 创建PE为8MB的VG
pvs # 查看pv属于哪个vg
pvmove /dev/sdb5 # 移除一个pv
vgreduce myvg /dev/sdb5 # 从vg中移除一个pv
pvcreate /dev/sdb7 # 创建pv
vgextend myvg /dev/sdb7 # vg扩展
lvcreate -L 50M -n testlv myvg # 创建lv
lvs # 显示lv
lvdisplay # 显示lv详情
lvdisplay /dev/myvg/testlv # 显示testlv详情
mke2fs -j /dev/myvg/testlv # 格式化lv
mount /dev/myvg/testlv /mnt/ # 挂载lv
umount /mnt/ # 卸载mnt
lvremove /dev/myvg/testlv # 移除lv
扩展LG
lvcreate -L 2G -n testlv myvg # 创建lv
mke2fs -j /dev/myvg/testlv # 格式化lv
mkdir /users
vim /etc/fstab # 设定开机自动挂载
/dev/myvg/testlv /users ext4 defaults 0 0 # 将该条目添加到fstab
mount -a # 挂载fstab内容
mount # 查看挂载
df -lh # 查看挂载大小
vgs # 确保VFree足够
lvextend -L 5G /dev/myvg/testlv # 扩展lv
lvextend /dev/myvg/testlv /dev/sdb7 # 动态扩展lv
df -lhP # 查看文件系统磁盘利用率
lvs # 查看lv大小
resize2fs -p /dev/myvg/testlv # 更新逻辑磁盘扩展
df -lhP # 查看文件系统磁盘利用率
缩减LG
df -lhP # 查看文件系统磁盘利用率
umount /users/ # 先卸载
mount # 查看挂载
e2fsck -f /dev/myvg/testlv # 强行进行文件系统检测
resize2fs /dev/myvg/testlv 3G # 调整磁盘逻辑大小
lvreduce -L 3G /dev/myvg/testlv # 调整磁盘物理大小
mount -a # 重新挂载
df -lhP # 查看系统磁盘利用率
cat test.txt # 查看文件是否正常
快照卷
lvcreate -L 50M -n testlv-snap -s -p r /dev/myvg/testlv # 创建快照卷
mount /dev/myvg/testlv-snap /mnt/ # 挂载快照
cat test.txt # 查看文件是否正常
cd /mnt/
tar jcf /tmp/users.tar.bz2 ./* # 归档文件
umount /mnt/ # 卸载mnt
lvremove /dev/myvg/tetlv-snap # 移除快照
tar vxf /tmp/users.tar.bz2 -C ./ # 展开归档
系统盘扩容
- 系统盘一般在系统创建的时候生成,无法进行逻辑卷规划,但随着时间的推移,系统盘不够用的情况常有发生,因此系统盘的扩容则成为一个很重要的工作,下面就介绍扩容系统盘的方法
- 根据系统安装扩容工具
# CentOS 系统
yum install cloud-utils-growpart
yum install xfsprogs
# Ubuntu、Debain系统
apt install cloud-guest-utils
apt install xfsprogs
- 运行
fdisk -l命令查看现有云盘大小 - 如果磁盘不足,可先在云平台进行扩容
[root@ecshost ~]# fdisk -l
Disk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008d73a
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 41943039 20970496 83 Linux
- 运行
df -h命令查看云盘分区大小 - 也就是查看系统盘分区的大小
[root@ecshost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 20G 1.5G 18G 8% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 344K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
- 运行
growpart <DeviceName> <PartionNumber>命令调用growpart为需要扩容的云盘和对应的第几个分区扩容
[root@ecshost ~]# growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=41940992 end=41943040 new: size=209710462,end=209712510
- 运行
resize2fs <PartitionName>命令调用resize2fs扩容文件系统
[root@ecshost ~]# resize2fs /dev/vda1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 7
The filesystem on /dev/vda1 is now 26213807 blocks long.
- 运行df -h命令查看云盘分区大小
[root@ecshost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 99G 1.6G 93G 2% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 500K 7.8G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/0
- 系统盘的扩容实现了,但系统盘的缩容也时有需求,现在还不知道有什么好的解决方案,希望有见解的小伙伴留言讨论
总结
- 逻辑卷的管理方法可有效的实现数据盘的扩缩容,建议挂载数据盘以100G的标准添加,设定规范的PV大小,方便磁盘的管理
- 系统盘目前只能够实现扩容,建议初始系统盘设定规范,比如100G,使其不至于过大浪费或过小需要频繁扩容
参考文档
- 扩展分区和文件系统_Linux系统盘:https://help.aliyun.com/document_detail/111738.html
- LVM Configuration in Linux Redhat 6:http://asksupportguy.blogspot.com/2015/08/how-to-configure-lvm-in-linux-redhat-6.html
Disk:磁盘管理之LVM和系统磁盘扩容的更多相关文章
- 20190410Linux中磁盘管理及LVM(week2day1)
Linux磁盘管理及LVM讲解(week2_day2) 硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接 ...
- 【转载】Linux磁盘管理:LVM逻辑卷管理
Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理 这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一. ...
- Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理
一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该 ...
- Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用
在上一篇随笔里面 Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理,详细的讲解了Linux的动态磁盘管理LVM逻辑卷的基本概念以及LVM的工作原理, ...
- Linux系统磁盘管理(lvm逻辑卷管理)
linux系统用户常遇到的一个问题就是如何精准的评估分区的大小,已分配合适的磁盘空间:普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文 ...
- linux磁盘管理系列-LVM的使用
LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...
- Linux磁盘管理及LVM讲解(week2_day2)--技术流ken
硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS只在高端服务器上,价 ...
- Linux磁盘管理及LVM讲解
硬盘接口 硬盘接口分为IDE.SATA.SCSI和SAS四种, IDE接口硬盘多用于家用产品中,也部分应用于服务器.不支持热添加,比较老. SCSI接口的硬盘则主要应用于服务器市场.linux. 而S ...
- 末学者daylight__Linux磁盘管理及LVM
一.硬盘接口 从整体的角度上,硬盘接口分为IDE.SATA.SCSI和SAS四种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而SAS只在高端服务器上 ...
随机推荐
- Go中锁的那些姿势,估计你不知道
什么是锁,为什么使用锁 用俗语来说,锁意味着一种保护,对资源的一种保护,在程序员眼中,这个资源可以是一个变量,一个代码片段,一条记录,一张数据库表等等. 就跟小孩需要保护一样,不保护的话小孩会收到伤害 ...
- SpringMVC启动流程源码解密
我们知道,SpringMVC最后是通过Tomcat来进行部署的.当在Servlet中进行进行应用部署时,主要步骤为(引用来自http://download.oracle.com/otn-pub/jcp ...
- Kafka日志压缩剖析
1.概述 最近有些同学在学习Kafka时,问到Kafka的日志压缩(Log Compaction)问题,对于Kafka的日志压缩有些疑惑,今天笔者就为大家来剖析一下Kafka的日志压缩的相关内容. 2 ...
- hdu - 4965
One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...
- Jenkins-正则表达式提取Cookie
场景描述:用户登录查询数据:登录时响应头返回Cookie,将Cookie使用正则表达式提取出来,在下一个请求“查询数据”时,在请求头中使用此Cookie 1.添加“登录”http请求 2.在后置处理器 ...
- Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
MyBatis 今天大年初一,你在学习!不学习做什么,斗地主...人都凑不齐.学习吧,学习使我快乐!除了诗和远方还有责任,我也想担当,我也想负责,可臣妾做不到啊,怎么办?你说怎么办,为啥人家能做到你做 ...
- [bzoj4824][洛谷P3757][Cqoi2017]老C的键盘
Description 老 C 是个程序员. 作为一个优秀的程序员,老 C 拥有一个别具一格的键盘,据说这样可以大幅提升写程序的速度,还能让写出来的程序 在某种神奇力量的驱使之下跑得非常快.小 Q 也 ...
- python条件与循环-条件
1.条件和循环 主要讨论:if.while.for以及相关的搭配else.elif.break.continue和pass语句. 1.1 if语句 if语句由三部分组成:关键字本身.用于判断结果真假的 ...
- UVA A Spy in the Metro
点击打开题目 题目大意: 在一个有n个站台的地铁线路里,给你列车通向每相邻两个车站所花费的时间,从0时刻开始,从1号站出发,要在T这个时间点上,到达n号站,给你m1辆从1开到n的列车及其出发时间,和m ...
- 从DirectX SDK升级到Windows SDK
原来的DirectX SDK到June 2010,微软就不更新了.之后新的版本被集成到了Windows SDK中. 在微软的博客里找到一篇升级指南:http://blogs.msdn.com/b/ch ...