我在 VirtualBox VM 上有一个 Debian 11 系统,我现在正在尝试增加其磁盘大小。
我一开始就为我的主分区创建了带有 btrfs 文件系统的 Debian 11,所以现在,它应该已经在我现有卷的 btrfs 系统上运行了。
我已经做了什么:
使用 fdisk 从我在 vdi 文件使用顺序中添加的卷创建一个新部分fdisk /dev/sda
,该新部分称为/dev/sda4
和
mkfs.btrfs -L extand /dev/sda4
使其成为 btrfs 文件系统。
所以现在:
fdisk -l 显示:
Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: VBOX 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: A5328659-9CBF-49AE-BF68-F9F4670D45C8
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 2050047 999424 488M Linux filesystem
/dev/sda3 2050048 16775167 14725120 7G Linux LVM
/dev/sda4 16775168 52428766 35653599 17G Linux filesystem
Disk /dev/mapper/debian--vg-root: 6.03 GiB, 6476005376 bytes, 12648448 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
Disk /dev/mapper/debian--vg-swap_1: 976 MiB, 1023410176 bytes, 1998848 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
btrfs 文件系统显示:
Label: none uuid: 3ea73e8c-64ac-442c-8c88-2675908cecdd
Total devices 1 FS bytes used 4.68GiB
devid 1 size 6.03GiB used 6.03GiB path /dev/mapper/debian--vg-root
Label: 'extand' uuid: ef622e2c-9c19-415e-a8d7-6e60ef448bc2
Total devices 1 FS bytes used 192.00KiB
devid 1 size 17.00GiB used 536.00MiB path /dev/sda4
df:
Filesystem 1K-blocks Used Available Use% Mounted on
udev 990920 0 990920 0% /dev
tmpfs 201748 20780 180968 11% /run
/dev/mapper/debian--vg-root 6324224 5103168 0 100% /
tmpfs 1008720 0 1008720 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
/dev/sda2 481642 87234 369423 20% /boot
/dev/sda1 523244 3484 519760 1% /boot/efi
tmpfs 201744 0 201744 0% /run/user/0
接下来我应该做什么?
我尝试了resize2fs
,这在 btrfs 文件系统上不起作用,并且我不知道如何以及在哪里挂载 /dev/sda4 来使用btrfs filesystem resize
命令。
答案1
很抱歉通知你,但你似乎把事情搞得一团糟。
这个问题早在您进行扩展之前就开始了,甚至在安装时就已经出现了。
ZFS(及其文件系统)和 BTRFS(及其子卷)的全部目的是取代上世纪过时的想法,例如 LVM。
ZFS 和 BTRFS 都是它们的“自己的 LVM”,即您不需要一个,那么为什么我会看到您的根/BTRFS 池从/dev/mapper/debian--vg-root
LVM 设备实例化(我认为它位于其之上/dev/sda3
)?
除非你有一些非常具体的理由来做这种愚蠢的分层,否则这是完全错误的。
考虑到您的 visor (vbox) 和单磁盘虚拟机系统,您的流程应该是:
- 增加遮阳板中的磁盘大小
- 指示来宾重新扫描磁盘大小(或整个存储总线) - 如果磁盘大小尚未增加 - 您可以通过 dmesg(1) 检查内核日志
- 编辑分区表并拉伸最后一个分区(托管您的根目录)
- 拉伸分区后,您可以发出:
# btrfs filesystem resize max /
相反,你做了:
- 在 LVM 之上安装 BTRFS
一段时间之后:
- 增加了遮阳板中的磁盘大小
- 指示访客重新扫描磁盘大小
- 添加了新分区(!)到分区表
- 将这个新分区格式化为新的 BTRFS 池并将其标记为“extand”(顺便说一下,很酷的名字:))
如何修复它
启动一个新的虚拟机。如果您使用的是 Windows,我建议您摆脱 VirtualBox 并将其替换为 HyperV,如果可以的话(您需要 Windows 10 之类的东西)管理和性能特征以及虚拟硬件支持日夜不停,有利于 HyperV,即。另外,即使您已注销,您的 HyperV VM 也可以运行。
确保以下布局:
Device Start End Sectors Size Type
/dev/sda1 2048 ??????? ??????? 512M EFI System
/dev/sda2 ??????? ??????? ??????? 488M Linux filesystem # I assume this is /boot)
/dev/sda3 ??????? ??????? ??????? **G Linux filesystem # <- this will be your btrfs
如果您需要交换,请将其放在不同的磁盘上,或者,如果您事先知道大小,请将其放在 btrfs 分区前面以最大程度地减少麻烦:
Device Start End Sectors Size Type
/dev/sda1 2048 ??????? ??????? 512M EFI System
/dev/sda2 ??????? ??????? ??????? 488M Linux filesystem # I assume this is /boot)
/dev/sda3 ??????? ??????? ??????? 7G Linux filesystem # <- swap prepends btrfs
/dev/sda4 ??????? ??????? ??????? **G Linux filesystem # <- this will be your btrfs
/dev/sda3
一旦您消耗了(分别)上的所有空间/dev/sda4
,您只需在遮阳板中扩展磁盘,并使用 、 或您拥有的东西重新编辑分区fdisk
大小parted
,cgdisk
然后btrfs filesystem resize
在/
.