> For AI agents: the complete documentation index is available at https://docs.vps.town/llms.txt, the full documentation bundle is available at https://docs.vps.town/llms-full.txt.

# vps.town 磁盘扩容新手指南

:::details 📖 本文目录

[](#1-准备工作)[](#查看当前磁盘情况)[](#2-原磁盘本身扩容)[](#21-取消原磁盘挂载)[](#22-转为-gpt-格式)[](#23-调整分区大小)[](#24-重新挂载)[](#25-检查磁盘挂载情况)[](#3-新增磁盘扩容与原有磁盘合并)[](#31-备份原本磁盘数据devvdb-devvdc)[](#311-在新硬盘上创建新分区并格式化)[](#312-将旧硬盘内容传输至新硬盘)[](#32-修改原磁盘为-lvm-卷组如-devvdb)[](#321-删除-devvdb-当前分区)[](#322-将-devvdb-转换为-lvm-卷组)[](#33-将新硬盘上的数据传至-lvm-卷组)[](#34-将新硬盘加入-lvm-卷组)[](#35-扩容-lvm-卷组的文件系统)[](#4-注意事项)
:::

:::tip 温馨提示

本文由用户 `biebiele` 撰写，并已加入 `VPS.Town 优秀原创文章激励计划`，本站享有完整版权，未经允许不得转载。

本文已通过 [VPS.Town 社区文章投稿及奖励规则 (试行稿)](https://docs.vps.town/kb/community.md) 审核，并获得 `200 元余额` 奖励。

:::

:::danger 操作风险提示
在进行磁盘扩容操作时，请特别注意以下几点：

1. **数据安全**：操作前必须进行**完整的数据备份**，有准备应急恢复方案。
2. **系统状态**：确保系统处于**稳定**状态，在系统**低负载**情况下进行操作。
3. **操作过程**：**严格按照步骤**执行，**验证**每个步骤完成情况。
4. **后续维护**：**定期检查**磁盘状态，**监控**文件系统使用情况。

:::

:::info 使用须知
**请务必先完整阅读后在操作，并确保你具有以下知识：**

- 了解磁盘分区和 LVM 原理
- 明白数据是无价的
- 熟悉基本的 Linux 命令操作
- 了解文件系统的基本概念

**系统要求：**

- Linux 系统（推荐 Ubuntu 20.04 或更高版本）
- 足够的磁盘空间用于备份
- root 权限或 sudo 权限

**术语说明：**

- LVM (Logical Volume Manager)：逻辑卷管理器，用于管理磁盘存储的高级工具
- PV (Physical Volume)：物理卷，LVM 的基本存储单元
- VG (Volume Group)：卷组，由多个物理卷组成的存储池
- LV (Logical Volume)：逻辑卷，从卷组中划分出的逻辑存储空间

**文档结构说明：**
本文分为四个主要部分：

1. 准备工作：介绍必要的系统检查和工具安装
2. 原磁盘本身扩容：适用于已有分区需要扩容的情况
3. 新增磁盘扩容：适用于需要合并多个磁盘的情况
4. 注意事项：总结操作过程中的重要提示

:::

## 1. 准备工作

```bash
# 查看系统中是否安装了 LVM 管理工具
apt list --installed | grep lvm2
# 如提示未安装，执行下面命令安装
apt install lvm2
# 检查系统磁盘情况
fdisk -l | grep /dev/vd | grep -v vda
```

![系统磁盘列表](/assets/images/how-to-setup-lvm-conversion-vps-town/7.png)
**一般默认除系统盘后，系统第一个磁盘是`/dev/vdb`、第二个是`/dev/vdc`**

:::details 磁盘命名说明
在 Linux 系统中，磁盘设备通常按以下规则命名：

- `/dev/vda`：系统盘（通常是第一个磁盘）
- `/dev/vdb`：第一个数据盘
- `/dev/vdc`：第二个数据盘
- 以此类推...

在物理服务器上，可能会看到 `/dev/sda`、`/dev/sdb` 等命名方式，这是不同的磁盘控制器类型导致的命名差异。

:::

### 查看当前磁盘情况

使用命令 `fdisk -l` 或者 `lsblk` 找到新增的未分区的磁盘。

:::tip 提示
如果看不到新增的磁盘，可以执行以下命令扫描：

```bash title="bash"
for file in `ls /sys/class/scsi_host`; \
do echo '- - -' > /sys/class/scsi_host/$file/scan ; \
done
```

**注意事项：**

- 执行扫描命令后，建议等待几秒钟让系统识别新磁盘
- 如果仍然无法识别，可以尝试重启系统
- 在云服务器环境中，可能需要先在控制台挂载新磁盘

:::

:::warning 重要提示

**需求确认**：

1. 需要扩容原本的/dev/vdb1 空间以利用/dev/vdb 所有空间，请参考`2. 原磁盘本身扩容`
2. 需要将/dev/vdc 和/dev/vdb 合并使用，请参考`3. 新增磁盘扩容，与原有磁盘合并`

:::

## 2. 原磁盘本身扩容

**适用情况**:原磁盘已有分区，但申请了新增了磁盘空间
类似于下图：本身 vdb1 只有 500GB，但对 vdb 磁盘新增了 500G，本次需要对 vdb1 扩容至 1000G

![lsblk情况](/assets/images/how-to-setup-lvm-conversion-vps-town/10.png)

:::details 扩容原理说明
磁盘扩容的基本原理是：

1. 首先取消磁盘挂载，确保数据安全
2. 将分区表转换为 GPT 格式，支持更大容量
3. 调整分区大小，使其占用所有可用空间
4. 扩展文件系统以使用新增的空间
5. 重新挂载并验证扩容结果

:::

### 2.1 取消原磁盘挂载

```bash
vim /etc/fstab
注释以下行`# /dev/vdb1 /home ext4 defaults 0 0`并`ESC`和`:wq`保存退出
```

![fstab情况](/assets/images/how-to-setup-lvm-conversion-vps-town/11.png)

```bash
mount -a
umount /home  ## 取消/home挂载
```

:::details 挂载点说明

- `/etc/fstab` 文件记录了系统启动时需要自动挂载的文件系统
- 在修改挂载配置前，请确保了解每个挂载点的用途
- 建议在修改前备份 `/etc/fstab` 文件

:::

### 2.2 转为 GPT 格式

:::danger ⚠️ 警告

高危操作，请小心执行

:::

```bash
gdisk /dev/vdb  # 选择磁盘
w               # 写入，是否转为GPT格式
Y               # 确定转格式
# 等待执行完成
```

![gdisk情况](/assets/images/how-to-setup-lvm-conversion-vps-town/12.png)

### 2.3 调整分区大小

:::danger ⚠️ 警告

高危操作，请小心执行

:::

```bash title="bash"
# 检查文件系统
e2fsck -f /dev/vdb1

# 使用 parted 调整分区
parted /dev/vdb                      # 操作磁盘
               print                 # 打印信息
(parted)       resizepart 1          # 选择分区
End? [500GB]?  100%                  # 扩展到全部空间
(parted)       quit                  # 退出

# 扩展文件系统
resize2fs /dev/vdb1
```

![调整分区大小](/assets/images/how-to-setup-lvm-conversion-vps-town/13.png)

### 2.4 重新挂载

```bash
mount /dev/vdb1 /home
vim /etc/fstab
# 注释以下行`/dev/vdb1 /home ext4 defaults 0 0`并`ESC`和`:wq`保存退出
```

![fstab情况2](/assets/images/how-to-setup-lvm-conversion-vps-town/14.png)

### 2.5 检查磁盘挂载情况

```bash
mount -a
lsblk
df -hT
```

![检查磁盘挂载情况](/assets/images/how-to-setup-lvm-conversion-vps-town/15.png)

## 3. 新增磁盘扩容，与原有磁盘合并

**适用情况:已有磁盘/dev/vdb，需要将新磁盘/dev/vdc 合并，即把/dev/vdc 空间和/dev/vdb 合并使用**

:::details LVM 扩容优势
使用 LVM 进行磁盘扩容的主要优势：

1. 支持在线扩容，无需停机
2. 可以灵活管理多个物理磁盘
3. 支持动态调整分区大小
4. 提供更好的数据管理能力

:::

### 3.1. 备份原本磁盘数据（/dev/vdb->/dev/vdc）

:::warning 数据备份重要性
在进行任何磁盘操作前，数据备份是必不可少的步骤：

1. 确保备份目标磁盘有足够空间
2. 建议在备份前进行数据完整性检查
3. 备份完成后进行验证
4. 保留备份直到确认新系统运行正常

:::

#### 3.1.1 在新硬盘上创建新分区并格式化

:::danger ⚠️ 警告

高危操作，请小心执行

:::

```bash title="bash"
# 查看新硬盘信息
fdisk -l /dev/vdc

# 创建新分区
fdisk /dev/vdc
g    # 新建一份 GPT 分区表
n    # 添加新分区
     # 默认回车 分区号
     # 默认回车 第一个扇区
     # 默认回车 大小
w    # 将分区表写入磁盘并退出

# 格式化分区
mkfs.ext4 /dev/vdc1

# 验证分区创建
fdisk -l /dev/vdc1
```

#### 3.1.2 将旧硬盘内容传输至新硬盘

```bash
# 建议先验证源分区和目标分区的大小，需求 vdc 区大于或等于 vdb 区
fdisk -l /dev/vdb1 /dev/vdc1

# 开始数据迁移
dd if=/dev/vdb1 of=/dev/vdc1 bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 $(ps aux | grep "dd if=/dev/vdb1"|grep -v grep|awk '{print $2}')
```

:::warning 数据迁移注意事项

- 迁移过程中请勿中断操作
- 建议在迁移前进行数据完整性检查
- 迁移完成后务必进行验证
- 如果发现数据不一致，请立即停止操作并联系技术支持

:::

### 3.2 修改原磁盘为 LVM 卷组（如 /dev/vdb）

#### 3.2.1 删除 /dev/vdb 当前分区

:::danger ⚠️ 警告

高危操作，请小心执行

:::

```bash title="bash"
# 卸载正在使用的硬盘
umount /dev/vdb1
# 如果提示设备正忙，可以使用 fuser 命令查看正在操作硬盘的进程，并合理关闭它们
fuser -cu /dev/vdb1 # 找到进程号
ps -ef|grep 进程号  # 找到对应进程
kill -9 进程号      # 杀死进程
# 如当前终端处于 /home 路径，切换到其他路径，如 `cd /`，避免占用

# 删除磁盘分区
fdisk /dev/vdb
d    # 删除分区
w    # 将分区表写入磁盘并退出
```

![删除分区操作](/assets/images/how-to-setup-lvm-conversion-vps-town/3.png)

#### 3.2.2 将 /dev/vdb 转换为 LVM 卷组

:::danger ⚠️ 警告

高危操作，请小心执行

:::

```bash title="bash"
# 检查当前磁盘状态
lsblk
fdisk -l /dev/vdb
# 清除磁盘签名，会删除 /dev/vdb 数据
wipefs -a /dev/vdb

# 创建物理卷 (PV)
pvcreate /dev/vdb
# 创建卷组 (VG)
vgcreate vg_data /dev/vdb
# 创建逻辑卷 (LV)
lvcreate -n lv_data -l 100%FREE vg_data
# 格式化逻辑卷 (LV)，**需要等一会儿执行完成**
mkfs.ext4 /dev/mapper/vg_data-lv_data
# 挂载逻辑卷 /home
mount /dev/mapper/vg_data-lv_data /home

# 设置自动挂载
vim /etc/fstab
# 按a进入编辑模式，添加下面一行
/dev/mapper/vg_data-lv_data /home ext4 defaults 0 0
# esc 后再 :wq 保存

# 手动挂载
mount -a
# 检查挂载情况
df -h
```

![LVM 创建过程1](/assets/images/how-to-setup-lvm-conversion-vps-town/4.png)

![LVM 创建过程2](/assets/images/how-to-setup-lvm-conversion-vps-town/9.png)

![fstab 信息](/assets/images/how-to-setup-lvm-conversion-vps-town/6.png)

**重启机器后，检查挂载情况**

![重启后挂载检查](/assets/images/how-to-setup-lvm-conversion-vps-town/5.png)

### 3.3 将新硬盘上的数据传至 LVM 卷组

```bash
# 开始数据迁移，**等待执行完成**
dd if=/dev/vdc1 of=/dev/mapper/vg_data-lv_data bs=512M
# 可以再开一个终端执行此命令查看进度
watch -n 10 kill -USR1 $(ps aux | grep "dd if=/dev/vdc1"|grep -v grep|awk '{print $2}')
```

### 3.4 将新硬盘加入 LVM 卷组

:::danger ⚠️ 警告

高危操作，请小心执行

:::

```bash title="bash"
# 删除原有分区
fdisk /dev/vdc
d    # 删除分区
n    # 添加新分区
     # 默认回车 分区号
     # 默认回车 第一个扇区
     # 默认回车 大小
w    # 将分区表写入磁盘并退出

# 通知操作系统分区表更新
partprobe /dev/vdc

# 查看 pv 信息
pvs
# 创建 pv
pvcreate /dev/vdc

# 扩展卷组(VG)空间
vgextend vg_data /dev/vdc # 往 vg_data 添加
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data # 100%空间分配
```

### 3.5 扩容 LVM 卷组的文件系统

:::warning 文件系统扩容注意事项

- 确保文件系统支持在线扩容
- 扩容过程中不要中断操作
- 建议在扩容后检查文件系统完整性

:::

```bash
# 检查当前文件系统类型
df -hT
# 根据文件系统类型选择扩容命令
# 如果是 ext4 文件系统
resize2fs -p /dev/mapper/vg_data-lv_data
# 如果是 xfs 文件系统
# xfs_growfs /dev/mapper/vg_data-lv_data

# 检查挂载信息
df -hT
```

![文件系统扩容结果](/assets/images/how-to-setup-lvm-conversion-vps-town/8.png)

## 4. 注意事项

:::tip 常见问题处理
如果遇到问题，可以尝试以下解决方案：

1. **磁盘无法识别**

   - 检查磁盘是否已正确连接
   - 执行磁盘扫描命令
   - 检查系统日志

2. **挂载失败**

   - 检查文件系统是否损坏
   - 验证挂载点权限
   - 检查 fstab 配置

3. **LVM 操作失败**
   - 检查 PV、VG、LV 状态
   - 确保有足够的空间
   - 查看系统日志

:::
