Linux如何在线对逻辑分区扩容


1.前言

目前绝大部分IaaS平台基本都会选择类似Vmware Vsphere+SAN存算分离的架构,或者选择类似Nutanix、Vmware Vsan或者深信服等存算一体的超融合架构。

不管何种方式,都会遇到已挂载目录磁盘空间不足的情况,部分分区空间使用不够情况。

希望在不影响现有业务的情况下,动态将某个挂载点目录扩容。

如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容。

1.1 环境介绍

条目 内容
操作系统 Red Hat Enterprise Linux Server release 7.8 (Maipo)
CPU 4C
内存 16G
硬盘1(原有硬盘) 120G
硬盘2(拟添加的硬盘) 500G  ,希望挂载在/root下,将原有/root进行动态扩容

2.几个常用命令介绍

2.1 fdisk命令

fdisk一般用来磁盘分区,也可以用来查看磁盘分区情况。

/dev/sda1和/dev/sda2是两个主分区,其中前者是启动分区。

注意/dev/sda2是LVM文件系统,这个是后续动态扩容的关键点。

后续两个就是逻辑卷分别是:

Disk /dev/mapper/rhel-root: 119.2 GB

Disk /dev/mapper/rhel-swap: 8455 MB

[root@test1 ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bcae5

   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *        2048     2099199     1048576   83  Linux/dev/sda2         2099200   251412479   124656640   8e  Linux LVM

Disk /dev/mapper/rhel-root: 119.2 GB, 119185342464 bytes, 232783872 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/rhel-swap: 8455 MB, 8455716864 bytes, 16515072 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes

2.2 lsblk命令

lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,这个命令很好用,因为可以让电脑上的磁盘和分区信息很清晰。

[root@test1 ~]# lsblkNAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda             8:0    0   120G  0 disk├─sda1          8:1    0     1G  0 part /boot└─sda2          8:2    0 118.9G  0 part  ├─rhel-root 253:0    0   111G  0 lvm  /  └─rhel-swap 253:1    0   7.9G  0 lvm  [SWAP]sr0            11:0    1  1024M  0 rom 

这里同样看出系统已有一块硬盘sda,具备两个分区,分别是sda1和sda2。

其中sda2分区有两个逻辑卷,分别就是上述对应的rhel-root和rhel-swap。

注意:这里rhel-root和rhel-swap,两者都被“-”分割开。

rhel是vg,是卷组(Volume Group, VG)

后者root和swap是逻辑卷(Logical Volume, LV)。

正是在逻辑卷上做文件系统。也正是逻辑卷创建之后,其大小可以伸缩。

2.3 df命令

linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。显示指定磁盘文件的可用空间。

df这个命令读取的数据计划都是针对整个文件系统的,主要在super block内信息,因此读取速度非常快速。

[root@test1 ~]# df -ThFilesystem            Type      Size  Used Avail Use% Mounted ondevtmpfs              devtmpfs  3.9G     0  3.9G   0% /devtmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shmtmpfs                 tmpfs     3.9G  8.9M  3.9G   1% /runtmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup/dev/mapper/rhel-root xfs       111G   98G   13G  89% //dev/sda1             xfs      1014M  137M  878M  14% /boottmpfs                 tmpfs     799M     0  799M   0% /run/user/0

注:

1、tmpfs,临时文件系统,是一种基于内存的文件系统。和ramdisk不同,后者是个块设备,前者是个文件系统。

2、df下是不显示swap分区的。所以这里只显示/dev/mapper/rhel-root。

可以看出来rhel-root是xfs文件系统

在RHEL7系统中比较大的变化之一就是在文件系统方面使用XFS替换了Ext4,XFS作为最新RHEL7中默认的文件管理系统,它的日志型文件管理系统的优势在意外宕机后尤其明显,可以快速的恢复可能被破坏的文件,另外经过优化后日志功能对硬盘性能影响非常小,同时最大支持18EB的存储容量满足了几乎所有需求。

3.正式扩容

热添加一块硬盘

在虚拟机管理平台上,热添加一块硬盘。

【验证】

[root@test1 ~]# fdisk -l

Disk /dev/sda: 128.8 GB, 128849018880 bytes, 251658240 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000bcae5

   Device Boot      Start         End      Blocks   Id  System/dev/sda1   *        2048     2099199     1048576   83  Linux/dev/sda2         2099200   251412479   124656640   8e  Linux LVM

Disk /dev/mapper/rhel-root: 119.2 GB, 119185342464 bytes, 232783872 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/rhel-swap: 8455 MB, 8455716864 bytes, 16515072 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 536.9 GB, 536870912000 bytes, 1048576000 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes

从最后可以看出/dev/sdb为536.9 GB容量,这里是没有任何分区的。

查看当前pv、vg以及lv的情况。

[root@test1 ~]# pvdisplay  --- Physical volume ---  PV Name               /dev/sda2  VG Name               rhel  PV Size               118.88 GiB / not usable 3.00 MiB  Allocatable           yes  PE Size               4.00 MiB  Total PE              30433  Free PE               1  Allocated PE          30432  PV UUID               6c2uwi-e0el-9kdl-UexC-5Qut-LbCv-eNfrQ0
[root@test1 ~]# vgdisplay  --- Volume group ---  VG Name               rhel  System ID  Format                lvm2  Metadata Areas        1  Metadata Sequence No  3  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                2  Open LV               2  Max PV                0  Cur PV                1  Act PV                1  VG Size               <118.88 GiB  PE Size               4.00 MiB  Total PE              30433  Alloc PE / Size       30432 / <118.88 GiB  Free  PE / Size       1 / 4.00 MiB  VG UUID               UeFmSr-CGD1-JNp1-XwtC-40xI-SVF6-CezPm6
[root@test1 ~]# lvdisplay  --- Logical volume ---  LV Path                /dev/rhel/swap  LV Name                swap  VG Name                rhel  LV UUID                4k1EM3-EYGL-0BKL-oei6-UNBW-BOBC-259HY4  LV Write Access        read/write  LV Creation host, time localhost.localdomain, 2020-09-20 15:25:16 +0800  LV Status              available  # open                 2  LV Size                <7.88 GiB  Current LE             2016  Segments               1  Allocation             inherit  Read ahead sectors     auto  - currently set to     8192  Block device           253:1

  --- Logical volume ---  LV Path                /dev/rhel/root  LV Name                root  VG Name                rhel  LV UUID                wEU6li-W6fr-7TfV-3OJ2-5o0i-mbez-rptO1M  LV Write Access        read/write  LV Creation host, time localhost.localdomain, 2020-09-20 15:25:16 +0800  LV Status              available  # open                 1  LV Size                111.00 GiB  Current LE             28416  Segments               1  Allocation             inherit  Read ahead sectors     auto  - currently set to     8192  Block device           253:0

关于pv、vg以及lv的关系详见下图:


# 创建一个新的pv[root@test1 ~]# pvcreate /dev/sdbWARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y  Wiping dos signature on /dev/sdb.  Physical volume "/dev/sdb" successfully created.

# 验证[root@test1 ~]# pvscan  PV /dev/sda2   VG rhel            lvm2 [<118.88 GiB / 4.00 MiB free]  PV /dev/sdb                       lvm2 [500.00 GiB]  Total: 2 [<618.88 GiB] / in use: 1 [<118.88 GiB] / in no VG: 1 [500.00 GiB]

注意要选择dev/sdb这个新加的硬盘

扩展vg

[root@test1 ~]# vgextend rhel /dev/sdb  Volume group "rhel" successfully extended[root@test1 ~]# pvscan  PV /dev/sda2   VG rhel            lvm2 [<118.88 GiB / 4.00 MiB free]  PV /dev/sdb    VG rhel            lvm2 [<500.00 GiB / <500.00 GiB free]  Total: 2 [<618.88 GiB] / in use: 2 [<618.88 GiB] / in no VG: 0 [0   ]

扩展lv

# 扩展前[root@test1 ~]# lvscan  ACTIVE            '/dev/rhel/swap' [<7.88 GiB] inherit  ACTIVE            '/dev/rhel/root' [111.00 GiB] inherit # 扩展500G[root@test1 ~]# lvextend -L +500G /dev/rhel/root  Size of logical volume rhel/root changed from 111.00 GiB (28416 extents) to 611.00 GiB (156416 extents).  Logical volume rhel/root successfully resized.# 验证[root@test1 ~]# lvscan  ACTIVE            '/dev/rhel/swap' [<7.88 GiB] inherit  ACTIVE            '/dev/rhel/root' [611.00 GiB] inherit

这时候通过lsblk查看,/root已经扩展到611G空间

[root@test1 ~]# lsblkNAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTsda             8:0    0   120G  0 disk├─sda1          8:1    0     1G  0 part /boot└─sda2          8:2    0 118.9G  0 part  ├─rhel-root 253:0    0   611G  0 lvm  /  └─rhel-swap 253:1    0   7.9G  0 lvm  [SWAP]sdb             8:16   0   500G  0 disk└─rhel-root   253:0    0   611G  0 lvm  /sr0            11:0    1  1024M  0 rom 

但是通过df命令发现实际并没有正式扩容

[root@test1 ~]# df -ThFilesystem            Type      Size  Used Avail Use% Mounted ondevtmpfs              devtmpfs  3.9G     0  3.9G   0% /devtmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shmtmpfs                 tmpfs     3.9G  8.9M  3.9G   1% /runtmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup/dev/mapper/rhel-root xfs       111G   99G   13G  89% //dev/sda1             xfs      1014M  137M  878M  14% /boottmpfs                 tmpfs     799M     0  799M   0% /run/user/0

这里需要用xfs_growfs对逻辑分区做最后调整

[root@test1 ~]# xfs_growfs /dev/rhel/rootmeta-data=/dev/mapper/rhel-root  isize=512    agcount=4, agsize=7274496 blks         =                       sectsz=512   attr=2, projid32bit=1         =                       crc=1        finobt=0 spinodes=0data     =                       bsize=4096   blocks=29097984, imaxpct=25         =                       sunit=0      swidth=0 blksnaming   =version 2              bsize=4096   ascii-ci=0 ftype=1log      =internal               bsize=4096   blocks=14208, version=2         =                       sectsz=512   sunit=0 blks, lazy-count=1realtime =none                   extsz=4096   blocks=0, rtextents=0data blocks changed from 29097984 to 160169984# 验证,可以看到这里已经是611G空间大小了。[root@test1 ~]# df -ThFilesystem            Type      Size  Used Avail Use% Mounted ondevtmpfs              devtmpfs  3.9G     0  3.9G   0% /devtmpfs                 tmpfs     3.9G     0  3.9G   0% /dev/shmtmpfs                 tmpfs     3.9G  8.9M  3.9G   1% /runtmpfs                 tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup/dev/mapper/rhel-root xfs       611G   99G  513G  17% //dev/sda1             xfs      1014M  137M  878M  14% /boottmpfs                 tmpfs     799M     0  799M   0% /run/user/0

需要注意的是,针对部分老系统,还是用ext3或者ext4的,最后一步逻辑分区调整大小的命令有所区别。

1、针对的是ext2、ext3、ext4文件系统,使用resize2fs 命令。增大和缩小都支持

2、针对的是xfs文件系统,使用的事xfs_growfs 命令,但是只支持增大。

至此,针对使用lvm文件分区前提下的在线扩容使用完毕,对现有业务和应用是没有影响的。

生产环境下不建议,所需要的空间不应该由缩容其他分区得到,而是直接利用IaaS平台的虚拟化手段热添加硬盘。

by 2020年10月11日 张诚

boot lvm 分区_Linux如何在线对逻辑分区扩容相关推荐

  1. linux分区_Linux系统 fdisk管理MBR分区

    前言 fdisk是一条以交互的方式进行操作的命令,在菜单中选择相应的功能键即可. 目录 一.添加新硬盘 二.新建分区 三.总结 四.思维导图 一.添加新硬盘 1.为了不影响正在运行的业务,需要在不关闭 ...

  2. linux用fdisk创建逻辑分区,Linux fdisk命令创建逻辑分区

    [root@localhost ~]# fdisk /dev/sdb -省略部分输出- Command (m for help): n #建立新分区 Command action l logical ...

  3. rhel配置磁盘分区_linux系统安装细节及磁盘分区划分

    本文主要讲述linux系统安装的细节以及磁盘分区怎么划分,以CentOS-6.9为例 1.进入系统安装向导.选择第一个Install or upgrade an existing system 2.是 ...

  4. emmc linux 识别分区_linux下给U盘分区并制作文件系统

    初探 不同于Ubuntu/Win等桌面发行版本,服务器型(非图形化系统)的linux系统通常不主动挂载U盘,因此当U盘插入后是不会有任何提示的,那我们如何知道U盘是否被系统所识别呢? 那就只能查看系统 ...

  5. boot lvm 分区_LVM磁盘逻辑卷管理

    微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 卷管理 LVM PV VG LV LVM与Device Mapper 01 卷管理 卷管理软件对待RAID提交给上层操作系 ...

  6. LVM逻辑卷,LVM管理工具集,LVM创建逻辑卷,调整现有磁盘的分区,使用逻辑分区做逻辑卷,扩展卷组大小,扩展逻辑卷的大小

    一.什么是LVM逻辑卷 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux ...

  7. linux 主分区转换 lvm,求教linux下 主分区和逻辑分区之间如何转换

    各位达人, 我在 windows xp下用虚拟机 vmware 装了 Redhat Enterprise Linux 5.0. 后来 Redhat linux磁盘空间不够,然后用虚拟机扩容了两次, 不 ...

  8. centos7磁盘逻辑分区命令_Centos7 磁盘分区概念

    1.分区的类型? MBR 最大支持2TB以内的硬盘 4个主分区 扩展分区:为了突破一块硬盘上只有4个主分区的限制,扩展分区最多一个,占用主分区的编号,不能够直接使用的 逻辑分区:在扩展分区上划分逻辑分 ...

  9. linux更新分区信息到内核,linux系统创建主分区、逻辑分区 、设置ext系列分区的参数以及检测分区的方法...

    linux对不同的磁盘设备的设备文件命名如下: IDE: /dev/hd[a-z] 对IDE分区的命名为/dev/hda1    /dev/hda2 -.. SCSI, SATA, SAS, USB: ...

最新文章

  1. go定时器 每天重复_通过测试学习Go:Hello, World
  2. SQL text字段的替换处理(无法批量更新,写法记录)
  3. 我的Linux成长路---001 Linux学习初期计划
  4. LVS/HAProxy/Nginx负载均衡对比
  5. 华为手机连接电脑显示无法连接服务器,无法连接到服务器电脑
  6. 华山论“件”:Kafka、RabbitMQ、RocketMQ技能大比拼
  7. HDFS QJM机制分析
  8. 运营商发展市场空间还剩下哪些模式?
  9. 高仿爱鲜蜂购物应用源码
  10. 【支付】第三方易宝支付
  11. 魔百和盒子、中兴盒子、咪咕盒子、华为盒子、华为悦盒、烽火盒子、创维盒子、天邑盒子等运营商盒子固件合集分享
  12. 服务器芯片的引脚功能,74ls06中文资料汇总(74ls06引脚图及功能_真值表及应用电路)...
  13. java.lang.UnsupportedOperationException: Required method instantiateItem was not overridden
  14. Excel中使用条件格式(比较两列将内容不同用颜色标识)
  15. HTML5从入门到精通(千锋教育)免费电子版+PDF下载
  16. 区块链如何改变出版商在学术传播中的角色
  17. 六、系统架构 - 高可用架构设计
  18. 如何判断一家公司是否靠谱
  19. linux spec文档解析
  20. 客户关系社区如何帮助销售?

热门文章

  1. 元宇宙“性骚扰”现象频出,Meta推出“个人结界”能保护好女玩家吗?
  2. BDTC 2019 | 七个开发者能干多大的事?​
  3. 这项技术:华为、BAT要力捧!程序员:我彻底慌了... ​
  4. 苹果支付60亿美元与高通和解?亚马逊不再运营中国国内市场业务;华为愿同德国签“无间谍软件协议”;Facebook开发语音服务...
  5. ps4看b站 f怎么调html5,b站html5,b站怎么切换到HTML5版播放器?
  6. linux内存管理的主要概念是虚拟内存,有关linux内存管理机制的相关内容,linux物理内存和虚拟内存,深入了解Linux内存运行 ......
  7. video怎么重新加载 vue_vue 事件中更改video的src成功,视频不加载
  8. 用python做tkinter_Python下用Tkinter进行GUI编程
  9. Elasticsearch7.15.2 分布式集群安装(linux环境)
  10. idea 编译Java heap space 内存溢出