Ubuntu Server 24.04 LVM 分区扩容

一、背景

公司买了一台机架式服务器(512G + 8T),出厂没有预装系统,后面装了个 Ubuntu Server 24.04,装的过程中没有手动设置分区,装完之后看各分区的容量发现跟实际的硬盘对不上,没有哪个分区有 512G 或者 8T,应该是大容量硬盘没有挂载,所以需要把硬盘挂载到目标分区,实现扩容。

二、分区扩容

1. 查看分区情况

可以看到一共有 8 个分区,最大分区容量是根目录的 98G,但是 512G 的 /dev/sdb 没有使用到,8T 的 /dev/sda 划分了 sda1,sda2 和sda3 三个分区,但只有 sda1 和 sda2 分别挂载到了 /boot 分区和 /boot/efi 分区,剩下 7.3T 的 sda3 没有使用。

因为当时安装系统时,在磁盘分区那里选择的默认方式(Set up this disk as an LVM group),系统使用了 LVM 分区方式,所以 / 对应的是 /dev/mapper/ubuntu--vg-ubuntu-lv 逻辑卷,在分配容量时并不会使用所有硬盘容量,当分区空间不足时就需要利用 LVM 进行扩容。

2. 主目录扩容

系统的分区列表里没有 /home,所以在扩容之前需要先创建 /home。(在此之前还有一步对根目录 LV 进行缩容,实操时由于根目录的占用问题导致缩容一直失败,不同方法尝试了很多次,即使进入单用户模式操作也不行,最终放弃这一步,直接扩容。)

bash 复制代码
# 缩小根目录文件系统
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 20G

# 缩小LV容量
lvreduce -L 20G /dev/mapper/ubuntu--vg-ubuntu--lv
(1)创建新 LV

分配 /dev/sda3 全部剩余空间给 /home

bash 复制代码
# 查看卷组剩余空间(确认大小)
vgdisplay ubuntu-vg | grep "FREE PE"

# 创建 /home 的 LV(名称 home-lv,大小用全部剩余空间)
lvcreate -l 100%FREE -n home-lv ubuntu-vg
(2)格式化 LV
bash 复制代码
# 格式化 /home 的 LV
mkfs.ext4 /dev/mapper/ubuntu--vg-home--lv
(3)挂载新 LV
bash 复制代码
# 临时挂载新LV
mkdir /mnt/tmp_home
mount /dev/mapper/ubuntu--vg-home--lv /mnt/tmp_home

# 复制现有/home数据到新LV(保留权限)
rsync -av /home/ /mnt/tmp_home/

# 备份原 /home,修改挂载
mv /home /home.bak
mkdir /home
umount /mnt/tmp_home
mount /dev/mapper/ubuntu--vg-home--lv /home

# 验证数据,确认复制完整(应看到原有用户目录)
ls /home
(4)永久挂载
bash 复制代码
# 查看新 LV 的 UUID
blkid /dev/mapper/ubuntu--vg-home--lv

# 写入 fstab,替换 UUID
echo "UUID=your UUID /home ext4 defaults 0 2" >> /etc/fstab

# 验证挂载(无报错则正常)
mount -a

3. 根目录扩容

将 /dev/sdb 加入 LVM,扩展根目录

(1)创建分区
bash 复制代码
# 分区工具
fdisk /dev/sdb

依次输入并回车:

  • g:创建GPT分区表;
  • n:新建分区(默认全部空间,按回车确认起始/结束扇区);
  • t:修改分区类型为LVM(输入8e或1LV);
  • w:保存分区表。
(2)创建 PV 并加入卷组
bash 复制代码
# 将 /dev/sdb1 创建为 LVM 物理卷
pvcreate /dev/sdb1

# 将 PV 加入ubuntu-vg 卷组
vgextend ubuntu-vg /dev/sdb1
(3)扩展根目录
bash 复制代码
# 扩展根目录 LV 到卷组全部剩余空间,包含 /dev/sdb1 的 447G
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

# 刷新文件系统,使容量生效
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

4. 验证

bash 复制代码
# 查看 LV 分配
lvs

# 查看挂载和空间
df -h / /home

可以看到扩容之后的根目录有 538G,主目录有 7.2T。扩容完成。上述操作都是在单用户模式下进行的。

三、总结

第一次搞服务器系统,虽然差别不大,但确实没有桌面版操作的方便,好在过程还算顺利,除了第一步缩容失败,但是看来对结果没啥影响,记录一下当做一个学习的过程吧。(主要还是靠豆包了)

参考资料

1 安装 Ubuntu Server 24.04 LTS 图文教程-知乎

2 解决 Linux /dev/mapper/ubuntu--vg-ubuntu--lv 磁盘空间不足的问题-博客园

3 ubuntu的ubuntu--vg-ubuntu--lv磁盘扩容-博客园

相关推荐
EMTime11 小时前
Docker运行OpenWRT
运维·docker·容器
lolo大魔王12 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
磊 子13 小时前
详细讲解一下epoll
linux·io·epoll·io多路复用
printfLILEI14 小时前
php中的类与对象以及反序列化
linux·开发语言·php
zyl8372114 小时前
Docker 使用手册
运维·docker·容器
古月方枘Fry14 小时前
MGRE实验
运维·服务器
叠叠乐15 小时前
redmi k90 pro max 强解BL,刷海外rom, 并刷入sukisu ultra
linux
stolentime15 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
xiaoye-duck16 小时前
《Linux系统编程》Linux 进程间通信之管道基础解析:从匿名管道原理到基于管道的进程池实现
linux