Eu tenho um disco de 2 TB que substituí por dados aleatórios. fdisk
confirma que o dispositivo não possui nenhuma tabela de partição reconhecida. No entanto, vejo estes 5 arquivos de dispositivo para o disco: /dev/sdc{,1,2,3,4}
ou seja
# 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
Novamente, o dispositivo não possui tabela de partição:
# 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 que existem dispositivos de partição - ou seja, por que existe /dev/sdc{1,2,3,4} e não apenas /dev/sdc? Além disso, por que os dispositivos particionados têm tamanhos que não somam 1,8TiB?
Responder1
O Linux não relê a tabela de partição, exceto na inicialização (ou na conexão do disco) ou quando explicitamente instruído a fazê-lo (por exemplo, por fdisk após escrever uma, ou usando partx
ou blockdev --rereadpt
). Então, até que você faça um desses, sdc[1-4]
continuará existindo.
A solução mais fácil seria chamar partprobe
para instruir o kernel a reler a tabela de partições em todos os dispositivos ou partprobe /dev/sdc
a reler a tabela de partições apenas naquele disco. Ou você pode usar o fdisk para escrever aquela tabela de partições vazia, então o fdisk fará a mesma coisa que partprobe
.
Observe também que o kernel não irá relê-lo se o disco (ou melhor, qualquer uma de suas partições) estiver em uso (por exemplo, como sistema de arquivos, swap, LVM PV, etc.). Claro, se algum estiver em uso, você terá um problema, pois acabou de apagá-lo.
Finalmente, se você já tentou forçar uma releitura, é possível que seus dados aleatórios correspondam a uma assinatura da tabela de partição. O Linux suporta vários formatos de tabelas de partição diferentes (a lista é escolhida durante a compilação do kernel), e a assinatura em alguns deles é tão pequena quanto um byte – portanto, há 1/256 de chance de que dados aleatórios correspondam. Outros têm assinaturas mais longas, com chances muito menores. Não tenho certeza de qual é a chance geral, mas uma verificação rápida dos logs do kernel mostrará qual formato de tabela de partição o kernel reconheceu.