前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu 动态调整分区空间

Ubuntu 动态调整分区空间

作者头像
阿龙w
发布2023-10-18 15:45:31
3230
发布2023-10-18 15:45:31
举报
文章被收录于专栏:阿龙的笔记

今天发现虚拟机磁盘满了报警了,明明 50 GiB 可以用很久,怎么会这么快满了呢,找了各种数据库日志文件等半天始终找不出不对劲的文件。

最后一看,尼玛怎么只有 24 GiB

代码语言:javascript
复制
ubuntu@ubuntu:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              197M  852K  196M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv   24G   20G  2.5G  89% /
tmpfs                              982M   16K  982M   1% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          2.0G  253M  1.6G  14% /boot
tmpfs                              197M  4.0K  197M   1% /run/user/1000

可是我明明分了 50 GiB 啊!?吓得我赶紧去后台看看

千真万确,不可能有问题,就是 50 GiB ,于是我用 fdisk 看了一下

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo fdisk -l
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4ECC6C3D-8F13-4874-9686-81850F57E419

Device         Start       End   Sectors    Size Type
/dev/sda1       2048      4095      2048      1M BIOS boot
/dev/sda2       4096   4198399   4194304      2G Linux filesystem
/dev/sda3    4198400 104855551 100657152     48G Linux filesystem


Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 24 GiB, 25765609472 bytes, 50323456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

还好,问题不大,50 GiB 读到了,也确实分给了 sda3 ,但是没有分给根分区

系统采用的是 LVM (Logical Volume Manager) 的方式管理磁盘,于是我又用 lsblk 看了一下

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo lsblk
NAME                      MAJ:MIN RM    SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0     50G  0 disk 
├─sda1                      8:1    0      1M  0 part 
├─sda2                      8:2    0      2G  0 part /boot
└─sda3                      8:3    0     48G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0     24G  0 lvm  /
sr0                        11:0    1    1.8G  0 rom  

嗯,果然如此,Logical Volume 没有用尽 Volume Group 的空间

再看一下 Volume Group 的剩余空间

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo vgdisplay -A
  --- 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               <48.00 GiB
  PE Size               4.00 MiB
  Total PE              12287
  Alloc PE / Size       6143 / <24.00 GiB
  Free  PE / Size       6144 / 24.00 GiB
  VG UUID               NuezL3-DcLx-Rnxv-zCLD-Nq1N-GiJU-SFZrFY

这好像看不看没区别,那就直接扩容吧

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from <24.00 GiB (6143 extents) to <48.00 GiB (12287 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
ubuntu@ubuntu:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 6
The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 12581888 (4k) blocks long.

扩容成功,现在再用 lsblk 看一下

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo lsblk
NAME                      MAJ:MIN RM    SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0     50G  0 disk 
├─sda1                      8:1    0      1M  0 part 
├─sda2                      8:2    0      2G  0 part /boot
└─sda3                      8:3    0     48G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0     48G  0 lvm  /
sr0                        11:0    1    1.8G  0 rom  

这下没问题了

但是我发现 Volume Group 没有将所有的 Physical Volume 用完,或者没有关联到物理分区

根据我在 CSDN 看到的教程

以不损坏数据为前提,不对原分区 /dev/sda3 进行调整。而是将磁盘可用空间创建一个新的 /dev/sda4 分区,然后去关联 Volume Group,毕竟 Logical Volume Manager 非常灵活。

创建分区 sda4,将设置为 lvm 类型

(我已经加过了,就直接复制他的例子)

其实也可以用我在别的地方看到的方法:n , enter , enter , enter , w ,然后他会提示盘符创建成功(谨慎使用

代码语言:javascript
复制
$ sudo fdisk /dev/sda
==> Command (m for help): p

Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3A0A0460-1FC2-46FF-A278-3299E8F2B745

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     4095     2048    1M BIOS boot
/dev/sda2     4096  3719167  3715072  1.8G Linux filesystem
/dev/sda3  3719168 41940991 38221824 18.2G Linux filesystem

===> Command (m for help): n
Partition number (4-128, default 4): 
First sector (41940992-104857566, default 41940992): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (41940992-104857566, default 104857566): 

Created a new partition 4 of type 'Linux filesystem' and of size 30 GiB.

===> Command (m for help): p
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3A0A0460-1FC2-46FF-A278-3299E8F2B745

Device        Start       End  Sectors  Size Type
/dev/sda1      2048      4095     2048    1M BIOS boot
/dev/sda2      4096   3719167  3715072  1.8G Linux filesystem
/dev/sda3   3719168  41940991 38221824 18.2G Linux filesystem
/dev/sda4  41940992 104857566 62916575   30G Linux filesystem

===> Command (m for help): t
===> Partition number (1-4, default 4): 
===> Partition type or alias (type L to list all): lvm

Changed type of partition 'Linux filesystem' to 'Linux LVM'.

===> Command (m for help): p
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 3A0A0460-1FC2-46FF-A278-3299E8F2B745

Device        Start       End  Sectors  Size Type
/dev/sda1      2048      4095     2048    1M BIOS boot
/dev/sda2      4096   3719167  3715072  1.8G Linux filesystem
/dev/sda3   3719168  41940991 38221824 18.2G Linux filesystem
/dev/sda4  41940992 104857566 62916575   30G Linux LVM

===> Command (m for help): w
The partition table has been altered.
Syncing disks.

创建之后可以看到 我多出了一个 接近 1M 的 sda4 ( 就当他是 30GiB 嗯对 )

代码语言:javascript
复制
ubuntu@ubuntu:~$ sudo lsblk
NAME                      MAJ:MIN RM    SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0     50G  0 disk 
├─sda1                      8:1    0      1M  0 part 
├─sda2                      8:2    0      2G  0 part /boot
├─sda3                      8:3    0     48G  0 part 
│ └─ubuntu--vg-ubuntu--lv 253:0    0     48G  0 lvm  /
└─sda4                      8:4    0 1007.5K  0 part 
sr0                        11:0    1    1.8G  0 rom

将刚刚创建好的 sda4 创建成 Physical Volume

(这里依然用他的例子,因为我这里报错了,原因分区过小)

代码语言:javascript
复制
$ sudo pvcreate /dev/sda4
  Physical volume "/dev/sda4" successfully created.

$ sudo pvdisplay
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <18.23 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4665
  Free PE               0
  Allocated PE          4665
  PV UUID               vO0lgC-X0bG-nUat-kevg-FONv-OpNh-qwY5zF
   
  "/dev/sda4" is a new physical volume of "30.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda4
  VG Name               
  PV Size               30.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               A87gcC-J2mc-3jPD-4emh-8Ute-VQ52-Ceg7zu

将 sda4 扩容到当前的 Volume Group

代码语言:javascript
复制
# 查看当前 VG
$ sudo vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  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               18.22 GiB
  PE Size               4.00 MiB
  Total PE              4665
  Alloc PE / Size       4665 / 18.22 GiB
  Free  PE / Size       0 / 0   
  VG UUID               gHs11o-PLvl-3cw4-SIax-mcw6-7RCx-D4BEpo

# 将 PV 添加到 VG
$ sudo vgextend ubuntu-vg /dev/sda4

# 扩展成功
$ sudo vgdisplay
  --- Volume group ---
  VG Name               ubuntu-vg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               <48.22 GiB
  PE Size               4.00 MiB
  Total PE              12344
  Alloc PE / Size       4665 / 18.22 GiB
  Free  PE / Size       7679 / <30.00 GiB
  VG UUID               gHs11o-PLvl-3cw4-SIax-mcw6-7RCx-D4BEpo

接下来同一开始操作

代码语言:javascript
复制
$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

$ sudo lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
fd0                         2:0    1    4K  0 disk 
loop0                       7:0    0 79.9M  1 loop /snap/lxd/22923
loop1                       7:1    0   62M  1 loop /snap/core20/1587
loop2                       7:2    0   47M  1 loop /snap/snapd/16292
sda                         8:0    0   50G  0 disk 
├─sda1                      8:1    0    1M  0 part 
├─sda2                      8:2    0  1.8G  0 part /boot
├─sda3                      8:3    0 18.2G  0 part 
│ └─ubuntu--vg-ubuntu--lv 253:0    0 48.2G  0 lvm  /
└─sda4                      8:4    0   30G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0 48.2G  0 lvm  /

参考文献

https://blog.csdn.net/dagjj/article/details/131259096

https://blog.51cto.com/u_15127659/4659100

https://blog.csdn.net/qq1090504117/article/details/131598038

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-8-19 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档