甲骨文云服务器扩容引导卷

我是使用甲骨文免费云服务器（Ubuntu 24.04.3 LTS (GNU/Linux 6.8.0-1022-oracle x86_64)），我原来的引导卷是大小是47G，我已经在OCI控制台中将它修改成150G，在OCI操作的时候，有弹出一个视窗，让我复制一个命令，如下：

sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1

echo "1" | sudo tee /sys/class/block/\`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2\`/device/rescan

但是我执行之后，引导卷并没有变成150G，参考以下的log 记录，请告诉我接下来要怎么做？

```
root@ts95:~# sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1

echo "1" | sudo tee /sys/class/block/\`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2\`/device/rescan

1+0 records in

1+0 records out

512 bytes copied, 0.000553447 s, 925 kB/s

1

root@ts95:~# lsblk

NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS

loop0     7:0    0 55.5M  1 loop /snap/core18/2959

loop1     7:1    0 55.5M  1 loop /snap/core18/2976

loop2     7:2    0 77.3M  1 loop /snap/oracle-cloud-agent/72

loop3     7:3    0 88.6M  1 loop /snap/oracle-cloud-agent/94

loop4     7:4    0 50.8M  1 loop /snap/snapd/25202

loop5     7:5    0 50.9M  1 loop /snap/snapd/25577

sda       8:0    0  150G  0 disk 

├─sda1    8:1    0 45.6G  0 part /

├─sda14   8:14   0    4M  0 part 

├─sda15   8:15   0  106M  0 part /boot/efi

└─sda16 259:0    0  913M  0 part /boot

```
你好！我是IT专家。非常乐意为你解决这个问题。

我在Oracle Cloud（OCI）上也经常遇到这种情况。你的情况非常清晰：

1.  **好消息：** 你执行的那些复杂的命令（`dd` 和 `rescan`）**已经成功了**。请看你的日志中 `sda 8:0 0 150G 0 disk` 这一行，这说明Linux系统底层已经识别到了这块硬盘物理上变成了150G。
    
2.  **问题所在：** 虽然硬盘变大了，但你的系统分区（也就是你的C盘概念，即 `/dev/sda1`）仍然停留在 `45.6G`。
    
3.  **解决办法：** 我们需要做两个简单的步骤：**扩展分区表**（告诉系统把空闲空间划给sda1），然后**在线调整文件系统大小**（让文件系统占满新的空间）。
    

请按照以下步骤操作，这非常安全，不会丢失数据。

* * *

### 第一步：扩展分区 (Grow Partition)

我们需要使用 `growpart` 工具将 `/dev/sda1` 扩展到硬盘的剩余空间。

1.  **首先，确保你安装了该工具**（Ubuntu通常自带，但为了保险起见）：
    
    ```
    sudo apt update
    sudo apt install cloud-guest-utils -y
    ```
    
2.  **执行扩展命令**： 注意：命令是 `sda` 后面跟一个空格，然后是分区号 `1`。
    
    *(如果提示 "NOCHANGE" 表示分区已经满了，或者已经自动扩容了，你可以直接跳到下一步。如果提示 "CHANGED"，说明扩展成功。)*
    

### 第二步：调整文件系统大小 (Resize Filesystem)

分区变大了，我们还需要让文件系统（ext4）知道它可以使用更大的空间。

1.  **执行调整命令**：
    
    *(系统会自动在线计算并扩大文件系统，通常几秒钟就好。)*
    

* * *

### 第三步：验证结果

现在，我们来检查一下是否成功变成了150G。

1.  再次查看块设备情况：
    
    *你应该看到 `sda1` 的 SIZE 变成了接近 150G。*
    
2.  查看实际磁盘使用情况（最重要的一步）：
    
    *请检查 `Size` 或 `Avail`（可用空间）列，应该已经显著增加了。*
    

* * *

### 简单原理解释（给非技术人员的类比）

你可以把这块硬盘想象成**一套房子**：

- **OCI控制台改配置 & 你的 `rescan` 操作**：相当于把房子的**外墙**扩建了，房子总面积变大了（从47平米变到了150平米）。
    
- **现在的状态**：虽然房子变大了，但你住的**卧室**（`/dev/sda1`）还是原来的大小，多出来的面积还是空在那里的毛坯房，没法放家具。
    
- **我让你做的 `growpart`**：相当于把卧室的隔断墙推倒，重新砌到最外面的墙边。
    
- **我让你做的 `resize2fs`**：相当于把地板铺满整个扩大的新卧室，这样你才能真正使用这些空间。
    

### 接下来我可以为你做的

如果执行过程中出现报错（例如提示 `Device or resource busy` 或者分区无法重叠），请把报错信息发给我，我会帮你分析分区表的具体结构。

**你可以现在去执行这两个命令，然后告诉我 `df -h` 的结果吗？**

```
root@ts95:~# sudo apt install cloud-utils growpart

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

E: Unable to locate package growpart

```
没关系，这是一个非常常见的误解！

出错的原因是：**`growpart` 是命令的名字，而不是软件安装包的名字**。在 Ubuntu 系统中，这个工具包含在名为 `cloud-guest-utils` 的软件包里。

请按照以下修正后的步骤操作，这次一定能成功：

### 第一步：安装正确的软件包

请执行这条命令来安装工具（只写包名，不要写命令名）：

```
sudo apt update
sudo apt install cloud-guest-utils -y
```

### 第二步：执行扩展分区 (重做之前的步骤)

安装好后，我们就可以正式调整分区大小了。

1.  **扩展分区表** (注意 `/dev/sda` 和 `1` 之间有一个空格)：
    
    *（如果提示 "NOCHANGE"，说明可能已经包含在系统自带工具里自动扩容了，不用担心，直接做下一步。）*
    
2.  **在线刷新文件系统** (这一步是关键，让 C 盘真正变大)：
    

### 第三步：见证奇迹

现在，再次检查你的磁盘空间：

**你应该能在 "Size" 这一列看到大约 140G+ 或 150G 的数值了。**

如果有任何报错，请直接把结果贴给我，我依然在线等你。

id: 1c113cf5c618487f9a558220b92aca6a
parent_id: c8972912af904d98b5610c325e3d5ad3
created_time: 2025-11-30T13:58:09.798Z
updated_time: 2025-11-30T14:00:38.896Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: https://gemini.google.com/share/c61fbedbe5b8
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1764511089798
user_created_time: 2025-11-30T13:58:09.798Z
user_updated_time: 2025-11-30T14:00:38.896Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
type_: 1