¿Por qué Linux muestra archivos de bloque de partición de dispositivo para un disco sin particiones?

¿Por qué Linux muestra archivos de bloque de partición de dispositivo para un disco sin particiones?

Tengo un disco de 2 TB que sobrescribí con datos aleatorios. fdiskconfirma que el dispositivo no tiene una tabla de particiones reconocida. Sin embargo, veo estos 5 archivos de dispositivo para el disco: /dev/sdc{,1,2,3,4}

es decir

# for i in /dev/sdc{,1,2,3,4} ; do fdisk -l -u $i ; done

Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 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/sdc1: 555.1 GiB, 595985804288 bytes, 1164034774 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/sdc2: 1.6 TiB, 1781956913152 bytes, 3480384596 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/sdc3: 928.5 GiB, 997001973760 bytes, 1947269480 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/sdc4: 1 TiB, 1153125198336 bytes, 2252197653 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

Nuevamente, el dispositivo no tiene tabla de particiones:

# fdisk /dev/sdc 

Welcome to fdisk (util-linux 2.25.2). 
Changes will remain in memory only, until you decide to write them. 
Be careful before using the write command. 

Device does not contain a recognized partition table. 
Created a new DOS disklabel with disk identifier 0x56b93c1d. 

Command (m for help): p 
Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 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 
Disklabel type: dos 

¿Por qué hay dispositivos de partición? Es decir, ¿por qué hay /dev/sdc{1,2,3,4} y no solo /dev/sdc? Además, ¿por qué los dispositivos particionados tienen tamaños que no suman 1,8 TiB?

Respuesta1

Linux no vuelve a leer la tabla de particiones excepto en el arranque (o en la conexión del disco) o cuando se le indica explícitamente que lo haga (por ejemplo, mediante fdisk después de escribir una, o usando partxo blockdev --rereadpt). Entonces, hasta que hagas uno de esos, sdc[1-4]seguirás existiendo.

La solución más sencilla sería llamar partprobepara indicarle al kernel que vuelva a leer la tabla de particiones en todos los dispositivos, o partprobe /dev/sdcque vuelva a leer la tabla de particiones solo en ese disco. O podrías usar fdisk para escribir esa tabla de particiones vacía, luego fdisk hará lo mismo que partprobe.

Tenga en cuenta también que el kernel no lo volverá a leer si el disco (o más bien cualquiera de sus particiones) está en uso (por ejemplo, como sistema de archivos, intercambio, LVM PV, etc.). Por supuesto, si alguno estaba en uso, tienes un problema porque acabas de borrarlo.

Finalmente, si ya ha intentado forzar una relectura, es posible que sus datos aleatorios coincidan con la firma de una tabla de particiones. Linux admite muchos formatos diferentes de tablas de particiones (la lista se elige al compilar el kernel) y la firma en algunos de ellos es tan pequeña como un byte, por lo que hay una probabilidad de 1/256 de que coincidan datos aleatorios. Otros tienen firmas más largas, por lo que las posibilidades son mucho menores. No estoy seguro de cuál es la probabilidad general, pero una revisión rápida de los registros del kernel mostrará qué formato de tabla de particiones reconoció el kernel.

información relacionada