Escrevendo dados sobre setores ou blocos específicos

2

Não tenho certeza se é mais adequado para superusuário de placas serverfault , me avise.

Eu tenho uma unidade que particionei com fdisk . Inicialmente, havia apenas uma grande partição, agora há várias partições. Agora a nova tabela de partição não será levada em conta pelo kernel até a próxima reinicialização.

O ponto é que existem alguns dados nesta unidade que são compartilhados através do NFS e que devem estar presentes na unidade durante a reinicialização. Além disso, quero evitar a modificação de arquivos de configuração, mesmo que temporariamente. Portanto, gostaria de garantir que esses dados estejam na primeira partição, /dev/sdb1 , correspondente à partição única anterior, para que eles fiquem imediatamente disponíveis na próxima inicialização.

Existe uma maneira (simples) de gravar dados em setores ou blocos específicos na unidade? É o objetivo da opção dd "seek"? Se eu conseguir fazer isso, os dados ainda serão legíveis na próxima reinicialização, uma vez que a nova partição tenha sido levada em conta, certo?

FWIW, a quantidade de dados não é tão grande, 2.1 MB, mas /dev/sdb1 é de apenas 82 MB e a unidade é de 160 GB.

Obrigado.

Editar: para todo o histórico e por que não posso recarregar a tabela de partições (que seria a melhor solução), consulte esta questão em serverfault .

Edit2: Ok, eu posso ter encontrado uma solução alternativa, que seria copiar arquivos de outro lugar assim que a máquina for reinicializada, antes que o NFS seja configurado.

Edit3: Nevermind Edit2, o novo /dev/sdb1 não seria formatado ainda…

Edit4: Na verdade, esta última edição provavelmente descarta toda a questão, como se aplica em qualquer caso. Deveria ter pensado nisso antes…

    
por Skippy le Grand Gourou 07.11.2012 / 15:24

2 respostas

2

Você precisa lidar com o NFS e impedi-lo de exportar a unidade antiga. Você não pode simplesmente continuar dizendo que "isso não é uma opção".

Dito isso, se você quiser acesso direto a um determinado bloco em um dispositivo sem confiar nas partições do kernel, então sim, as opções dd e seek e skip funcionarão. Se você quiser acessar um intervalo de setores como um dispositivo de bloco , poderá usar um dispositivo de loop que você configura via losetup para ter um deslocamento e um limite de tamanho específicos. Finalmente, você sempre pode inicializar um novo kernel em uma máquina virtual (por exemplo, usando libguestfs ) com o seu /dev/sdb device anexado, que leria e usaria as partições conforme elas são armazenadas no dispositivo.

    
por 07.11.2012 / 21:23
2

Por que você não procura técnicas para induzir o kernel a reler a tabela de partições? Por exemplo, você pode usar o partprobe, conforme descrito aqui .

Outra opção é o sinal -R para o sfdisk .

Outra opção é o blockdev, conforme descrito aqui .

    
por 07.11.2012 / 16:04