启动 zpool 空间不足,无法再运行更新

Kev*_*vin 4 apt initramfs zfs 20.10

我最近擦拭了我的盒子并安装了 20.10,我喜欢它,非常棒!这次我决定要生活在边缘并使用实验性的 zfs 支持,但在安装软件包和更新一段时间后,我现在遇到了一个奇怪的问题,我的启动 zpool 太满了。

每当我在软件更新程序中点击“立即更新”时,我都会收到如下消息:

The upgrade needs a total of 254 M free space on disk '/boot'. Please free at least an additional 194 M of disk space on '/boot'. You can remove old kernels using 'sudo apt autoremove', and you could also set COMPRESS=xz in /etc/initramfs-tools/initramfs.conf to reduce the size of your initramfs.
Run Code Online (Sandbox Code Playgroud)

我已经运行了sudo apt autoremove,它没有删除任何内容,我犹豫更改 initramfs 上的压缩,因为这更像是针对可能较低问题的补丁(也许我错了哈哈)。

我仍然可以手动升级,sudo apt update && sudo apt upgrade但每次都会收到此错误:

ERROR couldn't save system state: Minimum free space to take a snapshot and preserve ZFS performance is 20%.
Run Code Online (Sandbox Code Playgroud)

当我跑步时zpool list我得到:

NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
bpool  1.88G  1.69G   185M        -         -    47%    90%  1.00x    ONLINE  -
rpool   460G   165G   295G        -         -    10%    35%  1.00x    ONLINE  -
Run Code Online (Sandbox Code Playgroud)

所以我的启动池容量为 90%...

我还尝试zsysctl service gc -a删除快照,但这似乎并没有改变 bpool 的使用...

那么也许我需要更改我的 bpool 分配大小?我怎么做?

当我升级/安装时,我也遇到了一些奇怪的 initramfs 失败,但我不确定这是否相关?

Setting up initramfs-tools (0.137ubuntu12) ...
update-initramfs: deferring update (trigger activated)
Setting up linux-firmware (1.190.1+system76~1605123765~20.10~3894207) ...
update-initramfs: Generating /boot/initrd.img-5.8.0-29-generic
I: The initramfs will attempt to resume from /dev/nvme0n1p2
I: (UUID=05a735a7-9e82-494e-be9b-171b1c132af5)
I: Set the RESUME variable to override this.
Error 24 : Write error : cannot write compressed block 
E: mkinitramfs failure cpio 141 lz4 -9 -l 24
update-initramfs: failed for /boot/initrd.img-5.8.0-29-generic with 1.
dpkg: error processing package linux-firmware (--configure):
 installed linux-firmware package post-installation script subprocess returned error exit status 1
Processing triggers for initramfs-tools (0.137ubuntu12) ...
update-initramfs: Generating /boot/initrd.img-5.8.0-29-generic
I: The initramfs will attempt to resume from /dev/nvme0n1p2
I: (UUID=05a735a7-9e82-494e-be9b-171b1c132af5)
I: Set the RESUME variable to override this.
Error 24 : Write error : cannot write compressed block 
E: mkinitramfs failure cpio 141 lz4 -9 -l 24
update-initramfs: failed for /boot/initrd.img-5.8.0-29-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
 installed initramfs-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-firmware
 initramfs-tools
ZSys is adding automatic system snapshot to GRUB menu
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

运行zfs list -t snapshot显示了 bpool 的一堆快照:

NAME                                                                                                   USED  AVAIL     REFER  MOUNTPOINT
bpool/BOOT/ubuntu_fjp6bn@autozsys_z4aetj                                                                72K      -      237M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_mtxh3h                                                                72K      -      237M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_72y92u                                                               105M      -      357M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_lo8d22                                                              85.2M      -      337M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_y7ihca                                                               104M      -      336M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_qs6vz5                                                              85.2M      -      318M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_cyg6vx                                                                72K      -      337M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_r6e64v                                                                56K      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_nrhjqi                                                                56K      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_kgfl6b                                                               104M      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_nw3nk0                                                              85.1M      -      199M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_m1b6l9                                                               104M      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_hnt98o                                                              85.1M      -      199M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_rj8ttq                                                                64K      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_da1f4s                                                                 0B      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_ljdo3n                                                                 0B      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_danwfz                                                                 0B      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_4sjbka                                                               104M      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_gl3ru4                                                                 0B      -      218M  -
bpool/BOOT/ubuntu_fjp6bn@autozsys_tdbgin                                                                 0B      -      218M  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_z4aetj                                                              71.7M      -     5.10G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_mtxh3h                                                               217M      -     5.25G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_72y92u                                                              33.3M      -     5.43G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_lo8d22                                                              30.2M      -     5.30G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_y7ihca                                                               224M      -     5.42G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_qs6vz5                                                              27.8M      -     5.23G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_cyg6vx                                                              56.3M      -     5.51G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_r6e64v                                                              56.6M      -     5.29G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_nrhjqi                                                              30.6M      -     5.29G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_kgfl6b                                                              7.01M      -     5.25G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_nw3nk0                                                              29.6M      -     5.17G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_m1b6l9                                                               222M      -     5.32G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_hnt98o                                                              27.7M      -     5.13G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_rj8ttq                                                              26.2M      -     5.17G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_da1f4s                                                               155M      -     5.29G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_ljdo3n                                                              24.9M      -     5.61G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_danwfz                                                               181M      -     5.74G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_4sjbka                                                               498M      -     5.66G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_gl3ru4                                                                 0B      -     5.92G  -
rpool/ROOT/ubuntu_fjp6bn@autozsys_tdbgin                                                                 0B      -     5.92G  -
Run Code Online (Sandbox Code Playgroud)

但我对 zfs 或 zsys 不够熟悉,不知道我是否可以销毁快照?

小智 6

问题是bpool. 简单地删除它们会产生新的问题,因为系统上的每个 zpool 都有一个相同名称的快照,并且update-grub依赖update-initramfs于这一事实。如果您只删除bpool快照,这两个命令都会花费很长时间,而且很烦人。我发现解决这个问题的唯一方法是删除所有快照。这是我使用的命令:

zfs list -t snapshot -r  | grep auto | cut -f1 -d' ' | xargs -n 1 sudo zfs destroy
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会杀死所有快照,因此您将无法将系统恢复到以前的状态。一定有办法扩大规模bpool


Kev*_*vin 5

所以我想我修复了它......我跑到zfs list -t snapshot | grep bpool了启动池的所有快照的列表。然后sudo zfs destroy bpool/...是从列表顶部开始的少数快照,直到zpool list显示 bpool 处于 60% CAP 左右。然后运行sudo apt upgrade就成功运行mkinitramfs了!现在我的 bpool 大约是 70% :shrug: