Por que o Linux está mostrando arquivos de bloco de partição de dispositivo para um disco sem partições?

Por que o Linux está mostrando arquivos de bloco de partição de dispositivo para um disco sem partições?

Eu tenho um disco de 2 TB que substituí por dados aleatórios. fdiskconfirma 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 partxou blockdev --rereadpt). Então, até que você faça um desses, sdc[1-4]continuará existindo.

A solução mais fácil seria chamar partprobepara instruir o kernel a reler a tabela de partições em todos os dispositivos ou partprobe /dev/sdca 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.

informação relacionada