为什么所有快照都被挂载并列为 Ubuntu 18.04 的块设备或分区?

为什么所有快照都被挂载并列为 Ubuntu 18.04 的块设备或分区?

截至 Ubuntu 18.04 运行时,lsblk显示 16 个快照循环(每个快照 2-3 次)。问题是,为什么它们被列为 lsblk、fdisf-l 和 blkid 的结果?

它使我需要查看的实际磁盘驱动器分区(即 /dev/ 分区)变得非常混乱。我知道存在此问题的所谓重复,但它只询问为什么每个快照列出三个循环。我想知道为什么首先列出这些快照,而所谓的重复并没有回答这个问题(也许那些将其标记为重复的人可以通过解释为什么它是重复来帮助我)。从技术上讲,它们符合文件系统的条件(我既没有创建也没有要求),但它们妨碍了我感兴趣的 /dev/ 分区的信息输出。当 fdisk -l 输出主要包含快照的三页以上的列表时,这会成为一个问题。

最近(1 周前)安装 Ubuntu 的输出,我还没有安装任何快照:

$ lsblk  
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT  
loop0    7:0    0  14.5M  1 loop /snap/gnome-logs/37  
loop1    7:1    0   2.3M  1 loop /snap/gnome-calculator/170  
loop2    7:2    0  86.6M  1 loop /snap/core/4486  
loop3    7:3    0  86.6M  1 loop /snap/core/4650  
loop4    7:4    0   1.6M  1 loop /snap/gnome-calculator/154  
loop5    7:5    0  14.5M  1 loop /snap/gnome-logs/34  
loop6    7:6    0   3.3M  1 loop /snap/gnome-system-monitor/36  
loop7    7:7    0   2.3M  1 loop /snap/gnome-calculator/178  
loop8    7:8    0    13M  1 loop /snap/gnome-characters/101  
loop9    7:9    0   3.7M  1 loop /snap/gnome-system-monitor/45  
loop10   7:10   0 139.5M  1 loop /snap/gnome-3-26-1604/64  
loop11   7:11   0   140M  1 loop /snap/gnome-3-26-1604/59   
loop12   7:12   0   3.7M  1 loop /snap/gnome-system-monitor/41  
loop13   7:13   0    21M  1 loop /snap/gnome-logs/25  
loop14   7:14   0  12.2M  1 loop /snap/gnome-characters/69  
loop15   7:15   0    13M  1 loop /snap/gnome-characters/96  
sda      8:0    0 298.1G  0 disk  
├─sda1   8:1    0   512M  0 part /boot/efi  
└─sda2   8:2    0 297.6G  0 part /  
sr0     11:0    1  1024M  0 rom  

(以上文字的补充屏幕截图):
截图.jpg

我的snap list节目有 6 个结果:

核心
gnome-3-26-1604
gnome-计算器
gnome-字符
gnome-日志
gnome-系统监视器

同时,gnome-disk-utility 没有显示任何快照,只显示我的 HDD 和光驱。

如果每个已安装的 snap 都被列为块设备(每次添加 2-3 次),那么效率将不高。我是否应该期待未来的更新能够处理这个问题?

编辑:
fdisk-l还转储出一个很长的列表,其中包含 16 个“磁盘循环”实例(磁盘 /dev/loop0、磁盘 /dev/loop1 等,每个实例都有详细信息,但由于太长,我不会在这里显示)。这不可能是预期的行为,是吗?
blkid还列出了 16 个循环,如 TYPE="squashfs"。至少parted -l按预期工作,只显示我的实际磁盘分区。

我刚刚测试过,安装更多快照确实会增加 lsblk 输出。因此,根据可用和已安装的快照数量,fdisk、lsblk、blkid 可能会有巨大的输出列表。

答案1

当你输入命令时

snap list 

您将获得实际安装的 snap 包的输出。原因是当 snap 包更新时,旧版本会被保留(参见 snapcraft 文档)

引自 snapcraft 文档

然后,垃圾收集会移除并清除所有快照文件及其可写区域,用于刚刚更新的快照版本之前的快照版本 — 这意味着,系统中最多会存在两个版本的快照。这可以节省磁盘空间,而不会影响将快照恢复到之前已知良好状态的能力。

从系统中明确删除快照也将删除代码并清除所有先前版本的数据。

例如,您安装了多个版本的gnome 计算器

如果你只需要最新版本,你可以使用

sudo snap remove gnome-calculator --revision <version to be placed>

使用命令

losetup -a 

显示已安装的 snap (循环设备)

如果要删除重复项,请输入

sudo losetup -d /dev/loop<loopnumber>

这似乎是 snap 代码的一个错误,因为所有旧代码都保存在 /var/lib/snapd/snaps 文件中。

答案2

您可以使用-e7lsblk 的标志来排除环回设备,这个标志很短,而且易于输入(虽然可能不容易记住)。

lsblk -e7

答案3

从问题的内容来看,您的问题在于寻找一种方法来控制当您尝试查看块设备时所看到的内容,而不是 snap 如何使用块设备进行操作。

我同意你提到的fdisk -l和之间的区别parted -l。虽然磁盘管理显示了块设备的非常详细的输出,它显示了太多其他的东西,分散了您想要看到的内容。

解决

您可以使用过滤器lsblk格式化输出。这可以很好地提供干净的输出,就像您使用gnome 磁盘实用程序

$ lsblk -o name,mountpoint,label,size,fstype,uuid | egrep -v "^loop"

或者正如您在问题中所指出的:

$ sudo parted -l

对于df问题中的命令,使用:

$ df | egrep -v /dev/loop

答案4

blkid我意识到这是一个老问题,但是因为在谷歌搜索为什么/生成大量“循环”条目时它位于搜索结果的顶部附近fdisk -l,所以我想我可以与下一个人分享。

一个选择是可能工作(取决于您的要求)只是删除 snapd。在 Linux Mint 19.3(Ubuntu 18.04 基础版)上,默认情况下不安装 snapd,因此不需要。据我了解,Ubuntu 18.04 的不同之处在于 snapd 是开箱即用的。在 Mint 19.3 下,安装 snapd 会在fdisk -l和中生成相同的“循环”条目blkid,运行sudo apt purge snapd会删除它们。

我没有专门在 Ubuntu 18.04 下测试过这个,但假设删除 snapd 不会对任何严重问题产生影响,那么这个可能如果你实际上没有使用以用户身份进行捕捉。

我不思考删除 snapd 将会破坏 Ubuntu 中基于12但我确实看到了一条注释这里您可能需要重新安装一些以 snap 安装的默认 Ubuntu 软件包(sudo apt install gnome-software gnome-calculator gnome-logs gnome-characters gnome-system-monitor)。我不确定这是否是完整列表/MATE/KDE/xfce/etc 下需要哪些默认软件包。为了验证这一点,我强烈建议在虚拟机中进行测试,除非您不介意在出现问题时重新安装。

fdisk -l对于 Mint 19,我可以确认卸载 snapd 可以摆脱、、和其他命令中blkid的“循环”条目。mount

相关内容