¿Por qué se montan y enumeran todas las instantáneas como dispositivos de bloque o particiones para Ubuntu 18.04?

19

A partir de Ubuntu 18.04, la ejecución lsblkmuestra 16 bucles instantáneos (2-3 veces por cada complemento). La pregunta es, ¿por qué se enumeran como resultados para lsblk, fdisf-l y blkid?

Crea mucho desorden a partir de las particiones de disco reales que necesito ver, a saber, / dev / partitions. Sé que existe un supuesto duplicado de esta pregunta, pero solo pregunta por qué se enumeran tres bucles por snap. Quiero saber por qué estas instantáneas se enumeran en primer lugar, y el supuesto duplicado no responde esto (tal vez aquellos que marcan esto como duplicado podrían ayudarme explicando por qué es un duplicado). Técnicamente, califican como sistemas de archivos (que no creé ni solicité), pero se interponen en el camino de la salida de información para las particiones / dev / que me interesan. Esto se convierte en un problema cuando fdisk -l genera un tres página + lista llena principalmente de instantáneas.

El resultado de una instalación de Ubuntu reciente (1 semana de antigüedad) y no he instalado ninguna instantánea:

$ 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  

(captura de pantalla suplementaria del texto anterior):
screenshot.jpg

Mi snap listmuestra 6 resultados:

core
gnome-3-26-1604
gnome-calculator
caracteres
-gnome gnome-logs
gnome-system-monitor

Mientras tanto, gnome-disk-utility no muestra nada en absoluto para las instantáneas, solo muestra mi HDD y unidad óptica.

No será muy eficiente si cada complemento instalado aparece como un dispositivo de bloque (2-3 veces cada uno para agregar). ¿Debo esperar futuras actualizaciones para lidiar con esto?

Editar:
fdisk-ltambién arroja una lista muy larga con 16 instancias de estos "bucles de disco" (Disco / dev / loop0, Disco / dev / loop1, etc., cada uno con detalles que no mostraré aquí porque es demasiado largo). Esto no puede ser un comportamiento intencionado, ¿verdad?
blkidtambién enumera 16 bucles, como TYPE = "squashfs". Al menos parted -lfunciona como se esperaba, solo sale mis particiones de disco reales.

Acabo de probar esto, e instalar más snaps agrega más a la salida lsblk. Por lo tanto, fdisk, lsblk, blkid podrían tener listas de salida potencialmente enormes, de acuerdo con la cantidad de instantáneas disponibles e instaladas.

jordy
fuente
Creo que la respuesta real a su pregunta está en esta pregunta relacionada: "Los paquetes Snap son sistemas de archivos squashfs. La única forma de acceder a los snaps es montarlos. Entonces sí, siempre se montarán". askubuntu.com/questions/842093/… Dios ¡Ojalá no tuvieran que montarse!
craq

Respuestas:

10

Cuando escribes el comando

snap list 

obtendrá la salida de los paquetes snap instalados reales. La razón es que cuando se actualiza un paquete de complemento, se mantiene la versión anterior (consulte el documento de Snapcraft) .

Citar de snapcraft docu

Luego, la recolección de basura elimina y purga los archivos instantáneos, y sus áreas de escritura, para las versiones instantáneas anteriores a la que se acaba de actualizar, lo que significa que, como máximo, dos versiones de un complemento estarán presentes en el sistema. Esto ahorra espacio en el disco sin comprometer la capacidad de revertir el ajuste a un estado anterior conocido como bueno.

Eliminar explícitamente un complemento de su sistema también eliminará el código y purgará los datos de todas las versiones anteriores.

Por ejemplo, ha instalado más de una versión de gnome-calculator .

En caso de que solo necesite la versión más nueva, puede usar

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

Usando el comando

losetup -a 

le muestra las instantáneas montadas (dispositivos de bucle)

Si desea eliminar los dobles, escriba

sudo losetup -d /dev/loop<loopnumber>

Parece ser un error del código de ajuste, ya que todos los anteriores se han guardado en el archivo / var / lib / snapd / snaps.

abu_bua
fuente
1
sudo: remove: command not found y losetup -dno cambia nada
jordy
3
El código correcto sudo snap removeno es sudo remove. Por favor revisa tu respuesta.
jordy
8

A partir del contenido de su pregunta, su problema es buscar una forma de tener control sobre lo que está viendo cuando intenta ver sus dispositivos de bloque que cómo Snap utiliza los dispositivos de bloque para su funcionamiento.

Estoy de acuerdo con su distinción referenciada entre fdisk -ly parted -l. Mientras que fdisk muestra una muy buena salida detallada de dispositivos de bloque, muestra muchas otras cosas que distraen de lo que estás tratando de ver.

Resolución

Puede usar filtrar la salida con formato lsblk . Esto funciona bien para dar una salida limpia como lo que obtienes con gnome-disk-utility .

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

O como indicaste en tu pregunta:

$ sudo parted -l

Para el dfcomando en su pregunta, use:

$ df | egrep -v /dev/loop
LD James
fuente
3
Estuve esperando mucho tiempo a que alguien sugiriera exactamente esto, una salida filtrada para lsblk (en lugar de todos esos comentarios que defienden la salida excesiva como normal y buena). Sin embargo, me gustaría evitar tener que hacer esto, solo porque lo simple y directo lsblkera rápido, fácil de recordar y funcionaba maravillosamente, antes de que Snap interfiriera con él. Lo quiero de vuelta como estaba. Con suerte, la salida excesiva es solo un error que se solucionará.
jordy
44
@danthonyd Gracias por el reconocimiento. Estaba seguro de que entendía la pregunta y estaba seguro de que merecía un lugar en la base de datos de la UA de información para su consideración y respuesta. Esto es algo que me ha preocupado durante mucho tiempo. Sin embargo, el problema no es Snap. El problema es con los fdiskdesarrolladores. Deberían agregar un método para filtrar dispositivos reales sobre los pseudodispositivos para eliminar la salida excesiva y hacer que su aplicación sea más manejable, como la utilidad Gnome-disk-utility. Nadie lo usaría fdiskpara administrar sus dispositivos de bucle . (continuación) ...
LD James
44
... (continuación) Ni siquiera necesitan verlo en la salida de fdisk . Para eso están losetup y otros comandos de pseudo aplicaciones. Entonces, ¿por qué molestarse en mostrarlo si no puede administrarlo con la herramienta? Esta falla en el diseño de fdisk está haciendo que aplicaciones como parted y lsblk sean más populares y fáciles de usar.
LD James
1
Gracias. Estoy agregando | egrep -v "^loop"a todos mis lsblkscripts 16.04 hoy para reducir el mantenimiento el día que convierto a 18.04. (Para tu información, ya había votado tu respuesta antes de hoy)
WinEunuuchs2Unix
5

Esto también me resulta molesto. Parece que si no se están ejecutando, no deberían montarse ni enumerarse. Puede ejecutar este comando para excluir todos los dispositivos de bucle.

$ lsblk -e 7

usuario911218
fuente
1

Si usa la versión snap del monitor del sistema, verá todos los sistemas de archivos utilizados por snap, así como también los que usa.

Una "solución" fácil es desinstalar Gnome System Monitor de la tienda de aplicaciones. Es la versión de complemento.

Luego instale Gnome System Monitor desde los repositorios normales usando el administrador de paquetes Synaptic. Es la versión normal que instala un montón de archivos en toda la partición raíz. ¡Agradable!

Y verá exactamente lo que espera ver cuando inicie Gnome System Monitor ...

Anders Larsen
fuente
¡Excelente! Esto es lo que estaba buscando. Los comandos son snap remove gnome-system-monitor(no se requiere sudo), seguidos de sudo apt install gnome-system-monitor(esta vez con sudo).
PerlDuck
0

Para mostrar solo las monturas, excluyendo el loopback , también podría simplemente:

lsblk -af |grep -sv loop

;)

jbrios777
fuente