×

ubuntu 虚拟机 添加新磁盘 通过 lvm 扩容根分区

Falcon 2024-04-28 views:
自动摘要

正在生成中……

以前用virtual box 安装 Ubuntu ,只给了10G,采用默认的分区方案,完成后用lsblk查看磁盘空间分配。根分区只有区区9G,一下就捉襟见肘,现在需要更多的空间,试了用 VboxManage 来调整,在格式化未分配的空间时会报错,直接停机,原因不明,估计跟vbox有关系,好在 Ubuntu 22.04 采用了LVM 分区,这玩意主打一个灵活。

NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0                       7:0    0 63.9M  1 loop /snap/core20/2264
loop1                       7:1    0 63.9M  1 loop /snap/core20/2182
loop2                       7:2    0 74.2M  1 loop /snap/core22/1122
loop3                       7:3    0 74.2M  1 loop /snap/core22/1380
loop4                       7:4    0 91.8M  1 loop /snap/lxd/24061
loop5                       7:5    0 39.1M  1 loop /snap/snapd/21184
loop6                       7:6    0 38.7M  1 loop /snap/snapd/21465
loop7                       7:7    0 14.1M  1 loop /snap/tcping/4
sda                         8:0    0   10G  0 disk
├─sda1                      8:1    0    1M  0 part
├─sda2                      8:2    0    1G  0 part /boot
└─sda3                      8:3    0    9G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0    9G  0 lvm  /
sdb                         8:16   0   15G  0 disk
└─sdb1                      8:17   0   15G  0 part /mnt/docker
sdc                         8:32   0   30G  0 disk
sr0                        11:0    1 73.6M  0 rom

可以看到我给虚拟机分配的10G硬盘空间 /boot 用了1G,剩下9G的划到 lvm 分区给根目录,我加了一块30G的虚拟磁盘,也就是上面的 /dev/sdc 设备,准备将这30G扩展到根分区。是的,因为lvm是逻辑分区,可以跨不同设备,所以可以将多个设备的空间分给同一个文件系统或路径。在我这里是 "/" 。

什么是LVM?

以下来自维基百科的解释:

In Linux, Logical Volume Manager (LVM) is a device mapper framework that provides logical volume management for the Linux kernel. Most modern Linux distributions are LVM-aware to the point of being able to have their root file systems on a logical volume

它是一个Linux上的设备映射框架,为Linux内核提供逻辑卷管理。大部分现代Linux发行版都采用了LVM这套东西,如此一来可以让它们的根文件系统位在一个逻辑卷上。字面意思大抵如此,我觉得只要知道两点:

一、它是逻辑意义上的分区而不是物理上的,它提供了一个抽象层使用分区管理更灵活,可能这就是它要解决的痛点,没有什么计算机问题是不能靠多加一层来解决的,如果有,那再加一层(层层加码警告😂);

二、这是一套可以管理分区的工具,可以新增或删除分区、调整分区大小等等。

操作步骤

创建主分区:

fdisk /dev/sdc  #进入分区界面
输入n    #新建一个分区
输入P   #创建一个主分区
回车默认  #分区号
回车默认    #设置起始分区地址
回车默认    #设置大小 
输入W    #保存  

刷新分区:

pvcreate /dev/sdc1

  Physical volume "/dev/sdc1" successfully created.

查看卷组

  --- Volume group ---
  VG Name               ubuntu-vg
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <9.00 GiB
  PE Size               4.00 MiB
  Total PE              2303
  Alloc PE / Size       2303 / <9.00 GiB
  Free  PE / Size       0 / 0
  VG UUID               T7I9rn-Wtgs-ne0K-TDE3-PcjA-mwxm-VzQ2gj

这里是 VG Name : ubuntu-vb

将物理卷加入 卷组

vgextend ubuntu-vg /dev/sdc1

  Volume group "ubuntu-vg" successfully extended

查看要扩容的文件系统,即根分区所在的文件系统 /dev/mapper/ubuntu--vg-ubuntu--lv

df -Th
Filesystem                        Type     Size  Used Avail Use% Mounted on
tmpfs                             tmpfs    197M  2.3M  195M   2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4     8.8G  7.6G  743M  92% /
tmpfs                             tmpfs    982M     0  982M   0% /dev/shm
tmpfs                             tmpfs    5.0M     0  5.0M   0% /run/lock
/dev/sda2                         ext4     974M  251M  656M  28% /boot
...

把卷组剩余内存容量加到扩容的文件系统上

lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

  Size of logical volume ubuntu-vg/ubuntu-lv changed from <9.00 GiB (2303 extents) to 38.99 GiB (9982 extents).

  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

这样并未生效,逻辑卷扩展后,你需要调整文件系统的大小。如果使用的是ext4文件系统,还需要执行:resize2fs

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

resize2fs 1.46.5 (30-Dec-2021)

Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required

old_desc_blocks = 2, new_desc_blocks = 5

The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 10221568 (4k) blocks long.

再查看已经成功扩容:

df -Th
Filesystem                        Type     Size  Used Avail Use% Mounted on
tmpfs                             tmpfs    197M  2.3M  195M   2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      39G  7.6G   30G  21% /
tmpfs                             tmpfs    982M     0  982M   0% /dev/shm

 

本文收录于