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

1

Eu tenho um disco de 2 TB que eu sobrescrevi com dados aleatórios. fdisk confirma que o dispositivo não possui uma tabela de partição reconhecida. No entanto, vejo esses 5 arquivos de dispositivos 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 tem tabela de partições:

# 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,8 TB?

    
por Lotney 10.04.2017 / 19:57

1 resposta

3

O Linux não relê a tabela de partições, exceto na inicialização (ou disk connect) ou quando explicitamente instruído a fazê-lo (por exemplo, por fdisk depois de escrever um, ou usando partx ou blockdev --rereadpt ). Então, até você fazer um desses, sdc[1-4] continuará a existir.

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 para reler a tabela de partição apenas nesse disco. Ou você poderia usar o fdisk para escrever aquela tabela de partições vazia, então o fdisk fará a mesma coisa que partprobe .

Note também que o kernel não irá relê-lo se o disco (ou melhor, qualquer uma das suas partições) estiver em uso (por exemplo, como um sistema de arquivos, swap, PV do LVM, etc.). Claro, se algum estiver em uso, você tem um problema que você acabou de limpar.

Por fim, se você já tentou forçar uma releitura, é possível que seus dados aleatórios coincidam com uma assinatura de tabela de partição. O Linux suporta muitos formatos de tabelas de partição diferentes (a lista é escolhida ao compilar o kernel), e a assinatura em alguns deles é tão pequena quanto um byte - então existe uma chance de 1/256 de que os dados aleatórios correspondam. Outros têm assinaturas mais longas, uma chance muito menor. Não tenho certeza qual é a chance geral, mas uma rápida verificação dos logs do kernel mostrará qual formato de tabela de partição o kernel reconheceu.

    
por 10.04.2017 / 20:23