У меня есть диск на 2 ТБ, который я перезаписал случайными данными. fdisk
подтверждает, что устройство не имеет распознанной таблицы разделов. Тем не менее, я вижу эти 5 файлов устройств для диска: /dev/sdc{,1,2,3,4}
то есть
# 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
Опять же, на устройстве нет таблицы разделов:
# 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
Почему существуют устройства разделов — т. е. почему есть /dev/sdc{1,2,3,4}, а не просто /dev/sdc? Кроме того, почему размеры устройств разделов не составляют в сумме 1,8 ТБ?
решение1
Linux не перечитывает таблицу разделов, за исключением случаев загрузки (или подключения диска) или когда это явно указано (например, fdisk после записи или с помощью partx
или blockdev --rereadpt
). Так что пока вы не сделаете что-то из этого, sdc[1-4]
будет продолжать существовать.
Самым простым исправлением будет вызвать, partprobe
чтобы указать ядру перечитать таблицу разделов на всех устройствах или partprobe /dev/sdc
перечитать таблицу разделов только на этом диске. Или вы можете использовать fdisk, чтобы записать эту пустую таблицу разделов, тогда fdisk сделает то же самое, что и partprobe
.
Обратите внимание также, что ядро не будет перечитывать его, если диск (или, скорее, любой из его разделов) используется (например, как файловая система, подкачка, LVM PV и т. д.). Конечно, если что-то использовалось, у вас возникли проблемы, поскольку вы просто стерли их.
Наконец, если вы уже пробовали принудительно перечитывать, возможно, ваши случайные данные просто совпадают с сигнатурой таблицы разделов. Linux поддерживает множество различных форматов таблиц разделов (список выбирается при компиляции ядра), и сигнатура некоторых из них составляет всего один байт, поэтому вероятность совпадения случайных данных составляет 1/256. У других подписи длиннее, поэтому вероятность гораздо ниже. Я не уверен, каков общий шанс, но быстрая проверка журналов ядра покажет, какой формат таблицы разделов распознало ядро.