首页 > 其他分享 >磁盘扩容方法

磁盘扩容方法

时间:2024-11-19 22:19:48浏览次数:1  
标签:扩容 4.0 root dev 0% 磁盘 方法

在工作中,磁盘扩容问题是所有运维工程师都遇到过的问题,不同的磁盘分配方式会有不同的扩容方式。以下介绍几种生产环境常用的扩容方式。

一、在原有磁盘扩容
在原有磁盘下扩容也分两种情况,一种情况是扩容的磁盘是一个分区,另一种情况是扩容的磁盘是一整块盘。

【温馨提示】有些虚拟化平台或云平台不支持在原有磁盘增加容量,我工作遇到的几个云平台都是支持动态扩容的,视实际情况而定

这两种情况下的扩容方法是不同的,下面针对这两种情况分别讲解扩容方法。

切记:新手操作前做快照,避免扩容导致数据丢失!!老手请自便!

情况一:扩容的磁盘是一个分区
现有环境:要对/dev/vdb1设备扩容

 

 

目前分区有10G,但整个磁盘有20G,将剩余的扩容到/dev/vdb1分区中

 

[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sr0 11:0 1 458K 0 rom
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 99.5G 0 part /
└─vda2 253:2 0 500M 0 part /boot
vdb 253:96 0 20G 0 disk
└─vdb1 253:97 0 10G 0 part

1、安装工具

使用growpart工具可以完成Linux系统盘分区扩容及文件系统扩展,

grawpart工具需要单独安装:

yum install cloud-utils-growpart -y
2、扩容分区

【温馨提示】单盘有多个连续分区,仅能扩容最后一个分区。 以下操作为扩容/dev/vdb磁盘的第一个分区

查看分区格式

lsblk –f
3、扩容文件系统

可以看到/dev/vdb1分区为xfs,需要使用xfs_growfs命令进行扩展

[root@localhost ~]# xfs_growfs /dev/vdb1
如果分区格式为ext4,用以下命令扩容

resize2fs /dev/vda3
查看扩容结果:已从10G扩容到20G

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/vdg1 20G 176M 20G 1% /data

可能遇到的报错和解决办法:

unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]

[root@mypc ~]# LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8是环境变量,为了兼容中文操作系统的字符编码

情况二:扩容的磁盘是一整块磁盘
这种情况就非常简单,直接扩容文件系统即可

1、模拟环境准备

# 将/dev/vdc格式化为xfs文件系统
[root@localhost ~]# mkfs.xfs /dev/vdc
# 挂载
[root@localhost ~]# mount /dev/vdc /data2
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/vdb1 20G 176M 20G 1% /data
/dev/vdc 10G 104M 9.9G 2% /data2

# 目前/dev/vdc是10G,然后云平台上对这块磁盘容量增加20G。
2、首先查看分区格式

lsblk –f
3、直接扩容文件系统容量

如果分区格式为xfs,用xfs_growfs扩容

[root@localhost ~]# xfs_growfs /dev/vdc

# 也可以直接扩容挂载点
[root@localhost ~]# xfs_growfs /data2
如果分区格式为ext4,用resize2fs扩容

resize2fs /dev/vdc
4、查看结果:可以看到容量已经增加到20G

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/vdb1 20G 176M 20G 1% /data
/dev/vdc 20G 176M 20G 1% /data2

二、新增磁盘扩容
生产环境可能会遇到以下情况:

磁盘前期分区时,使用了MBR模式,导致了磁盘最大只能是2T,但数据还在继续写入。这种情况就需要新增一个磁盘,重新格式化一个分区,并将应用读取数据目录指向新增加的磁盘。

1、新增磁盘并格式化 直接格式化,这样方面后续扩容

mkfs.xfs /dev/vdc
2、挂载

挂载到/data3下

[root@localhost ~]# mkdir /data3
[root@localhost ~]# mount /dev/vdd /data3
3、配置开机自动挂载

cat >> /etc/fstab <<EOF
/dev/vdd /dataroot xfs default 0 0
如果后续磁盘满了,可以使用方法一的第二种情况来快速扩容

三、逻辑卷LVM扩容
LVM逻辑卷扩容方式只适用于操作系统使用了LVM来管理磁盘的情况。LVM也区分在原有磁盘进行增加容量来扩容和新增加磁盘来进行扩容,下面分别来讲解

情况一:原有磁盘增加容量,创建新分区,然后扩容到原有分区
1、扩容前环境:准备扩容/dev/mapper/vg01/lv01设备

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/mapper/vg01-lv01 5.0G 68M 5.0G 2% /data
1、基于原磁盘再进行分区

[root@localhost ~]# fdisk /dev/vdb

Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p # 查看分区情况
Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x9ffcf410

Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 6293503 6291456 3G 83 Linux
/dev/vdb2 6293504 10487807 4194304 2G 83 Linux

Command (m for help): n # 新建分区
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):

Using default response p.
Partition number (3,4, default 3):
First sector (10487808-41943039, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-41943039, default 41943039):

Created a new partition 3 of type 'Linux' and of size 15 GiB.

Command (m for help): p # 再次打印分区信息
Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 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
Disklabel type: dos
Disk identifier: 0x9ffcf410

Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 6293503 6291456 3G 83 Linux
/dev/vdb2 6293504 10487807 4194304 2G 83 Linux
/dev/vdb3 10487808 41943039 31455232 15G 83 Linux

Command (m for help): w # 保存配置
The partition table has been altered.
Syncing disks.
# 刷新分区表
[root@localhost ~]# partprobe /dev/vdb

2、扩容卷组VG

# 创建物理卷PV
[root@localhost ~]# pvcreate /dev/vdb3
Physical volume "/dev/vdb3" successfully created.

# 扩容卷组VG
[root@localhost ~]# vgextend vg01 /dev/vdb3
Volume group "vg01" successfully extended

# 查看卷组信息
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg01 3 1 0 wz--n- <19.99g <15.00g

3、扩容逻辑卷LV

[root@localhost ~]# lvresize -l +100%FREE /dev/mapper/vg01-lv01
Size of logical volume vg01/lv01 changed from 4.99 GiB (1278 extents) to <19.99 GiB (5117 extents).
Logical volume vg01/lv01 successfully resized.
4、扩容文件系统

[root@localhost ~]# xfs_growfs /dev/mapper/vg01-lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=4, agsize=327168 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1308672, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 1308672 to 5239808

# 查看结果
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 1.5G 8.6M 1.5G 1% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/vda1 98G 3.1G 90G 4% /
tmpfs 3.7G 0 3.7G 0% /tmp
/dev/vda2 495M 234M 261M 48% /boot
/dev/mapper/vg01-lv01 20G 177M 20G 1% /data

注意:如果文件系统格式为ext,使用以下语句扩容

resize2fs /dev/mapper/vg01-lv01
情况二:新增磁盘扩容到原有分区
直接创建物理卷,其余扩容vg和lv步骤相同。

pvcreate /dev/vdb
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_43592627/article/details/142699785

标签:扩容,4.0,root,dev,0%,磁盘,方法
From: https://www.cnblogs.com/xiaozgang/p/18555734

相关文章

  • java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,
    @目录一、记录文件相关操作方法二、代码1.读取路径返回List<File>2.读取路径返回List<String>3.删除文件夹4.删除文件一、记录文件相关操作方法二、代码1.读取路径返回List<File>importorg.slf4j.LoggerFactory;importorg.slf4j.Logger;importjava.io.File;importjav......
  • 超详细的ArrayList扩容过程(配合源码详解)
    首先,在调用add方法的时候,会去调用ensureCapacityInternal方法,传入一个参数minCapacity大小是size+1,也就是现在我们需要的数组的最小的大小。在ensureCapacityInternal方法中,先判断一下elementdata是不是初始空数组是的话就把minCapacity变更为默认容量也就是10,和传进......
  • C盘扩容(C盘右键无法扩展卷解决)超详细步骤!!!
    目录1、问题及需求2、解决办法方法21、问题及需求今天一看C盘爆红了,但是D盘还剩很多空间,想要从D盘再分出来50G给C盘。但是压缩了D盘,在C盘扩展卷,实现不了,因为不仅挨着。看下边的解决办法2、解决办法桌面上的“我的电脑”---->右键“管理”---->存储---->磁盘管理,看......
  • 点云噪点去除方法综述
    1.市面主流软件去噪的常规方法调研软件:terrasolid、CloudCompare、Lidar360以及Coprocess去噪主要方法:半径滤波去噪、统计滤波去噪、区域增长去噪(使用相对较少) 方法 优点缺点 半径滤波去噪参数易于设置,实现难度较低,效率相对较高(1000w点,耗时<=10s)......
  • 虚幻4 蓝图无法保存 解决方法
    蓝图类只能存放在Blueprints文件夹内,创建在其他文件夹的蓝图类无法保存。可以看到无法将蓝图拖动到其他文件夹内。这是一个存放在其他文件夹下的蓝图类:当尝试按Ctrl+shift+A保存时,将出现如下错误:解决方法是,将当前蓝图删除(注意,如果该蓝图从某个C++类继承而来,那这个方法会......
  • 152页PPT管理咨询顾问能力进阶方法工具和模板(MCK出品)
    流程管理办法的总体步骤通常包括以下四个主要阶段:规划与梳理、设计与优化、实施与推广、执行与监控。这些步骤帮助组织在不同层面上优化和规范业务流程,提高效率,降低成本,确保流程的顺利运作。以下是每个阶段的详细解读:1.规划与梳理目标:明确流程管理的方向和目标,全面了解和分......
  • Linux线程退出、资源回收、资源清理的方法
    参考 Linux线程退出、资源回收、资源清理的方法_linux线程退出会释放哪些资源-CSDN博客 首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题。1、子线程创建时从父线程copy出来的栈内存;线程退出有多种方式,如return,pthread_exit,pthread_cancel等;线......
  • [Java] String的hashCode方法
    简述java/lang/String#hashCode是用途极广的方法,其源码实现也存在一定变迁。其位于JRE的rt.jar包内OpenJDKOpenJDK8-b120版~9-b00版:=OracleJDK1.8.0-261jdk/jdk/src/share/classes/java/lang/String.javahttps://github.com/openjdk/jdk/blob/jdk8-b120/......
  • 继承,方法重写,supper,final,访问修饰符 ,根类Object
    1.继承继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。如果某类B“继承”另某类A,就把这个B称为“A的子类或派生类(subclass)”,而把类A称为“B的父类”也可以称为“A是B的超类或基类(superclass)为什么需要继承1.提供代码的可重用性;2.起到扩展作用。语......
  • Linux系统启动慢/无法启动的排查方法
    Linux系统启动慢或无法启动的问题,通常需要综合考虑硬件、内核、服务配置等多方面因素进行排查。以下是详细的排查步骤和方法:1.硬件检查确认硬件状态:检查硬盘、内存、CPU等是否正常,特别是硬盘是否存在坏道(使用smartctl检测)。smartctl-a/dev/sdX拔插外部设备:移除多余......