Diferenças entre / dev / sda e / dev / sda1

11

Eu sei que / dev / sda é o dispositivo bruto, e que / dev / sda1 é a partição ou dispositivo virtual.

Mas estou um pouco confuso sobre o motivo pelo qual o sda # aparece apenas algumas vezes, ou apenas em determinados sistemas. O que causa isso? Talvez as vezes em que as unidades sda não apareçam sejam quando não são particionadas? Ou talvez não seja o mesmo em hardware?

E por que eu posso montar os dois? (às vezes) A partição não deveria ser a montável?

Qualquer recurso ou cor que você possa dar seria muito apreciado. Obrigado antecipadamente.

    
por decoy 08.12.2011 / 13:30

4 respostas

17

Em um sistema moderno, um dispositivo de partição só aparecerá se a partição realmente existir.

Em um disco com uma tabela de partição MBR, os números de partição 1 a 4 correspondem aos quatro slots da tabela de partição, chamados de partições "primárias". Eles não precisam ser preenchidos sequencialmente, por isso é possível, por exemplo, ter um sda2, mas não sda1. Os números de partição 5 e acima correspondem a "drives lógicos" em uma partição estendida, e esses são sempre numerados sequencialmente, então você não pode ter um sda6 sem ter um sda5 também.

Em um disco com uma tabela de partições GPT, pode haver muito mais (normalmente até 128) partições e todas são "primárias". Então você poderia ter um disco cuja única partição é sda9, por exemplo.

Se o disco não tiver uma tabela de partições, então não haverá dispositivos de partição, é claro.

Sistemas mais antigos - aqueles que usam um static / dev em vez de um gerenciado pelo udev - normalmente terão nós de dispositivo para todos os números de partição possíveis, independentemente de as partições realmente existirem. (Tentar abrir o arquivo do dispositivo para uma partição não existente irá falhar, é claro).

É possível renunciar ao particionamento e colocar um sistema de arquivos diretamente em um disco. Quando você monta um dispositivo de bloco, o driver do sistema de arquivos normalmente procura por um superbloco em um deslocamento predeterminado desde o início do dispositivo e como o início de uma partição não é o início do próprio disco, o superbloco de um sistema de arquivos em uma partição está localizado em um lugar diferente no disco do que o superbloco de um sistema de arquivos criado no dispositivo "disco inteiro".

Assim, se o disco costumava ter apenas um sistema de arquivos e, em seguida, ele era particionado e um sistema de arquivos era criado em uma partição, o antigo superbloco ainda poderia estar lá, por exemplo, no pequeno intervalo antes do início da primeira partição. Portanto, o disco ainda parece ter um sistema de arquivos no dispositivo de disco bruto e no dispositivo de partição, porque qualquer um que você tentar montar, quando o driver do sistema de arquivos for procurar o superbloco, ele encontrará um.

Na verdade, não é seguro montar e usar os dois sistemas de arquivos, já que eles se sobrepõem no disco. Pode-se ter dados importantes da contabilidade no que o outro pensa ser espaço livre. É por isso que é uma boa idéia zerar o início de um dispositivo de bloco, remover qualquer superbloco indesejado, quando você quiser alterar um disco bruto para um particionado, ou vice-versa, ou alterar o tipo de sistema de arquivos usado em uma partição, etc. .

    
por 08.12.2011 / 14:00
5

Até onde eu sei, quando o kernel detecta um novo dispositivo de bloco em um barramento scsi-like (incl. sata), além de adicionar um nó em /dev para o disco inteiro em si, por exemplo /dev/sda tentará ver se há uma tabela de partições. Se houver partições legíveis, ele criará os nós de partição numerados, dependendo se eles são partições físicas ou lógicas (acredito que partições lógicas começam em # 5).

Se você vir um nó de disco, mas sem nós de partição, isso significaria que não houve nenhuma partição detectada. Não tenho conhecimento de nenhuma instância em que você possa montar o dispositivo físico, pois isso implicaria que há um sistema de arquivos diretamente gravado no dispositivo físico sem nenhuma tabela de partição. Pode ser que, no evento em que há apenas uma única partição, mount interpretará um comando mount /dev/sda como significando /dev/sda1 , mas nunca testei isso.

    
por 08.12.2011 / 13:54
3

/ dev / sda - dispositivo bruto

/ dev / sda1 - dispositivo 'virtual', como uma partição.

Uma diferença interessante é que, se um dispositivo tiver partições (possui dados MBR ou semelhantes), você não poderá ler dados MBR de nenhum dos dispositivos virtuais, pois os dados MBR residem fora de qualquer partição em um dispositivo. O MBR reside no primeiro setor do dispositivo (CHS: 0 0 1). Há uma boa prática para criar a primeira partição em 1 MiB após o início de um dispositivo.

Para ler os dados do MBR, você precisa usar o dispositivo bruto (/ dev / sda), ou seja:

dd if=/dev/sda of=mbr.bin bs=512 count=1
    
por 08.03.2012 / 22:37
0

Ah, tabelas de partições e nomes de dispositivos. Prepare-se para ficar confuso com eles.

Tem um servidor HP com seu controlador RAID Compaq? Não / dev / sda, diga olá para / dev / ccsis.

Tem um computador desktop antigo com interface IDE antiga? Não / dev / sda, diga olá para / dev / hda.

Tem um servidor moderno que diz / dev / sda mas depois da instalação você dificilmente pode vê-lo? Diga olá ao LVM, sua instalação do sistema operacional tornou o seu / dev / sda como um volume físico do LVM, criou um grupo de volumes dentro dele e um volume lógico dentro dele.

Então ... se você não vê nada como / dev / sda1, você pode ter LVM ou similar em uso, o que criou suas próprias "partições".

Isso respondeu à sua pergunta?

    
por 08.12.2011 / 16:31