Tengo un disco de 2 TB que sobrescribí con datos aleatorios. fdisk
confirma 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 partx
o blockdev --rereadpt
). Entonces, hasta que hagas uno de esos, sdc[1-4]
seguirás existiendo.
La solución más sencilla sería llamar partprobe
para indicarle al kernel que vuelva a leer la tabla de particiones en todos los dispositivos, o partprobe /dev/sdc
que 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.