> For AI agents: the complete documentation index is available at https://www.tteam.icu/llms.txt, the full documentation bundle is available at https://www.tteam.icu/llms-full.txt.

# linux硬盘扩容


物理分区

虚拟分区(LVM)

## 常用扩容命令


**xfs**

```bash
LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
xfs_growfs /data
```


**ext4**

```bash
growpart /dev/vda 1
partprobe /dev/vda
resize2fs /dev/vda1
```


**aws**

```bash
LC_ALL=en_US.UTF-8 growpart /dev/nvme0n1 1
resize2fs /dev/nvme0n1p1
```


:::tip
本文档使用了阿里云开发的 `cloud-utils-growpart` 包，[点击查看官方文档](https://help.aliyun.com/zh/ecs/user-guide/extend-the-partitions-and-file-systems-of-disks-on-a-linux-instance)。
:::

适用场景: 创建虚拟机时硬盘容量为 `100GB`，后续在原有虚拟硬盘上再增加 `100GB` 的情况。

## 查看容量

```bash
fdisk -lu
```

:::tip
如果扩容硬盘后没有显示新增容量，需要刷新硬盘:

```bash
ls /sys/class/scsi_disk/
0:0:0:0  0:0:1:0
# 这条命令用于重新扫描指定的 SCSI 设备，通知操作系统重新检测该设备的状态，包括磁盘容量变化、新分区的添加等
echo 1 > /sys/class/scsi_disk/0:0:1:0/device/rescan
```

:::

## 扩容分区


**centos7**

```bash
# MBR 分区
type growpart || yum install -y cloud-utils-growpart
LC_ALL=en_US.UTF-8 growpart /dev/vdb 1

# GPT 分区(需安装 gdisk 工具)
type growpart || yum install -y cloud-utils-growpart
type sgdisk || yum install -y gdisk
LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
```


**debian12**

```bash
# MBR 分区
apt-get update
apt-get install -y cloud-guest-utils
LC_ALL=en_US.UTF-8 growpart /dev/vdb 1

# GPT 分区(需安装 gdisk 工具)
apt-get update
apt-get install -y cloud-guest-utils
type sgdisk || apt-get install -y gdisk
LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
```


## 扩容文件系统

```bash
df -hT
```

其中 Type 值为文件系统类型，Mounted on 值为分区的挂载目录。如下所示，`/dev/vdb1` 分区的文件系统类型为 xfs，挂载目录为 `/data`。

```bash
文件系统       类型      容量  已用  可用 已用% 挂载点
devtmpfs       devtmpfs  7.7G     0  7.7G    0% /dev
tmpfs          tmpfs     7.7G  340K  7.7G    1% /dev/shm
tmpfs          tmpfs     7.7G  2.1M  7.7G    1% /run
tmpfs          tmpfs     7.7G     0  7.7G    0% /sys/fs/cgroup
/dev/vda1      ext4       20G  3.2G   16G   18% /
/dev/vdb1      xfs       300G  161G  140G   54% /data
```

### ext\*(ext2、ext3、ext4)文件系统

以扩容云盘分区 `/dev/vdb1` 的 ext\* 文件系统为例:

```bash
resize2fs /dev/vdb1
```

:::tip
如果扩容的是系统盘，命令中的 `/dev/vdb1` 需要替换为 `/dev/vda1`。
:::

以扩容裸设备 `/dev/vdc` 的 ext\* 文件系统为例:

```bash
resize2fs /dev/vdc
```

:::tip
实践扩容 ext4 系统盘:

```bash
growpart /dev/sda 1
resize2fs /dev/sda1
```

:::

### xfs 文件系统

以扩容挂载目录为 `/data` 的 xfs 文件系统为例:


**centos7**

```bash
type xfs_growfs || yum install -y xfsprogs
xfs_growfs /data
```


**debian12**

```bash
type xfs_growfs || apt-get install -y xfsprogs
xfs_growfs /data
```


### btrfs 文件系统

以扩容挂载目录为 `/data` 的 btrfs 文件系统为例:

```bash
btrfs filesystem resize max /data
```

## 常用扩容命令

```bash
# 使用挂载硬盘文档里的方法挂载硬盘后，可以直接用以下命令扩容逻辑卷
pvcreate /dev/vdc
vgextend test_vg /dev/vdc
lvextend -l +100%FREE /dev/test_vg/data_lv
xfs_growfs /data
```

## 常用删除命令

```bash
lvremove /dev/test_vg/data_lv
vgremove test_vg
pvremove /dev/vdc
```

## 逻辑卷扩容

### 扩展物理卷(PV)

如果已经在使用 LVM(逻辑卷管理)，可以扩展物理卷(`/dev/vda`)以增加空间。

```bash
pvdisplay
pvresize /dev/vda
```

### 扩展卷组(VG)

将新的硬盘空间加入到现有的卷组(如 `ubuntu-vg`)中。

```bash
vgdisplay
vgextend ubuntu-vg /dev/vda
```

### 扩展逻辑卷(LV)

扩展根文件系统所在的逻辑卷(如 `ubuntu-lv`)。

```bash
lvdisplay
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
```

### 扩展文件系统

扩展文件系统以便使用新增的空间(执行与物理卷相同的操作，区分 ext4 和 xfs)。
