解决方案
查看全部解决方案

咨询电话:400-8781-803

解决方案

关于融珂之悦云
了解更多

咨询电话:400-8781-803

hot

电话咨询

  • 咨询热线

    400-8781-803

hot

QQ咨询

7*16小时免费业务咨询

hot

微信咨询

微信

添加微信

  • 提交工单
    24小时售后技术支持
hot

返回顶部

Linux磁盘扩容方法

您当前位置首页 > 技术支持 > linux

发布时间:2025-04-19

一、在原有磁盘扩容

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


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


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


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


情况一:扩容的磁盘是一个分区

现有环境:要对/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磁盘的第一个分区


[root@localhost ~]# growpart /dev/vdb 1

CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=41940959 end=41943007 

查看分区格式


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 ~]#.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步骤相同。


Linux磁盘扩容方法

2025-04-19

一、在原有磁盘扩容

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


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


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


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


情况一:扩容的磁盘是一个分区

现有环境:要对/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磁盘的第一个分区


[root@localhost ~]# growpart /dev/vdb 1

CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=41940959 end=41943007 

查看分区格式


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 ~]#.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步骤相同。


成为融珂之悦云会员,享受出众的上云实践机会和周到的尊贵服务!

免费注册