A unidade USB muda o nome de / dev / sdb para / dev / sdc (e vice-versa) ao copiar?

5

Eu tenho um drive USB montado em uma pasta em uma instalação do servidor Ubuntu 9.04. As opções de montagem são armazenadas em / etc / fstab para fácil montagem / desmontagem:

# <file system> <mount point>   <type>  <options>          <dump>  <pass>   
/dev/sdb1       /media/backup   ntfs    nouser,auto,sync    0      3 

(desde então, mudei a parte para um UUID para ver se isso ajudaria no problema). Um backup tem copiado arquivos para o disco todas as manhãs sem problemas. Só agora tentei copiar um dos arquivos para outra pasta e acabei com o erro:

cp: reading 'ts01-even.tgz': Input/output error

Descobri que o problema ocorreu porque / dev / sdb foi alterado para / dev / sdc. Se eu montar / dev / sdc e tentar copiar o arquivo novamente, a unidade mudará de volta para / dev / sdb. Depois de alterar o sistema de arquivos fstab de / dev / sdX1 para um UUID, não houve diferença no comportamento. Além disso, eu costumava ser capaz de listar o conteúdo do arquivo do tarball, mas tentar fazê-lo agora resulta no comportamento acima. Alguma idéia?

ATUALIZAÇÃO:

executar o script de backup e armazenar o backup no HD usb não produz o problema, mas listar os arquivos no tarball. Aqui está a saída do syslog durante o comando tarball "tar -ztf FILENAME":

Jul  3 15:09:14 ts01 kernel: [308398.446893] Buffer I/O error on device sdc1, logical block 786433
Jul  3 15:09:28 ts01 ntfs-3g[7468]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:09:28 ts01 ntfs-3g[7468]: Failed to read of MFT, mft=5 count=1 br=-1: Input/output error
Jul  3 15:09:28 ts01 kernel: [308412.404579] Buffer I/O error on device sdc1, logical block 786433
Jul  3 15:09:29 ts01 ntfs-3g[7468]: Unmounting /dev/sdc1 (FreeAgent Drive)
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Version 2009.2.1 external FUSE 27
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Mounted /dev/sdb1 (Read-Write, label "FreeAgent Drive", NTFS 3.1)
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Cmdline options: rw,sync
Jul  3 15:09:32 ts01 ntfs-3g[29176]: Mount options: rw,sync,silent,allow_other,nonempty,relatime,fsname=/dev/sdb1,blkdev,blksize=4096
Jul  3 15:10:01 ts01 /USR/SBIN/CRON[29630]: (root) CMD ([ -x /usr/sbin/update-motd ] && /usr/sbin/update-motd 2>/dev/null)
Jul  3 15:11:35 ts01 kernel: [308539.310031] usb 1-1: reset high speed USB device using ehci_hcd and address 38
... (log repeated with a different address)
Jul  3 15:12:47 ts01 kernel: [308611.790038] usb 1-1: reset high speed USB device using ehci_hcd and address 38
Jul  3 15:12:49 ts01 kernel: [308613.148837] end_request: I/O error, dev sdb, sector 84779391
Jul  3 15:12:49 ts01 kernel: [308613.148871] Buffer I/O error on device sdb1, logical block 10597416
... (log repeated with a different address, with the logical block incrementing by 1 each time)
Jul  3 15:12:49 ts01 kernel: [308613.149090] Buffer I/O error on device sdb1, logical block 10597425
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread error reading '/TS01_Backup/ts01-even.tgz' at offset 177012736: 131072 <> -1: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread_i: ntfs_pread failed: Input/output error
Jul  3 15:12:49 ts01 ntfs-3g[29176]: ntfs_attr_pread error reading '/TS01_Backup/ts01-even.tgz' at offset 177012736: 4096 <> -1: Input/output error

Encontrei algo que parecia relevante, mas seguir as instruções não foi proveitoso: Drives FreeAgent

    
por jobu1324 02.07.2009 / 10:19

7 respostas

4

Existem muitas coisas que parecem erradas na sua configuração.

  1. Não faz sentido colocar unidades USB no fstab. Fstab é uma listagem principalmente estática de dispositivos de armazenamento do sistema e seus pontos de montagem. Você atribui uma unidade / partição estática identificação (com base no controlador / endereço do dispositivo) para um ponto de montagem estático. Nem destes são realmente estáticos para drives USB. Em seu primeiro exemplo, você teria problemas se você instalar um segundo disco rígido no sistema: ele se tornaria / dev / sdb, movendo seu drive USB atual para / dev / sdc, quebrando assim sua configuração no momento da inicialização.

  2. Além disso, ter sua unidade na fstab e com a opção "auto" informa ao sistema que a unidade deve ser montado no momento da inicialização. Se por algum motivo a unidade estiver desconectada no momento da inicialização, você terá seu servidor falhando no processo de inicialização, o que é realmente indesejável situação. Se a unidade não for essencial para o funcionamento do sistema, pelo menos não tem a opção "auto".

  3. A opção "nouser" é desnecessária, é o padrão. A opção "sync" é realmente má ideia, a menos que você realmente saiba o que está fazendo. Não só isso afeta severamente desempenho, também causa desgaste adicional da unidade, especialmente mídia flash.

  4. fs_passno = 3 (sexta coluna de fstab) causa um comportamento indefinido. Os valores válidos são 0 1 ou 2 apenas.

  5. Usando o NTFS com uma unidade destinada ao backup de um servidor Linux. Por que você está fazendo naquela? Todas as implementações do Linux NTFS são sub-ótimas e inadequadas para executar qualquer Linux subsistema em cima. Você deve usar um sistema de arquivos Linux nativo, como o Ext3.

Do seu registro do kernel, eu poderia prever que um ou mais deles podem ser válidos:

  1. Você tem um disco mal particionado, ou seja, o sistema de arquivos foi formatado com o erro parâmetros, maiores que a partição real; ou a partição na partição tabela (o tamanho lógico) é maior que o tamanho físico da unidade. Isto é de os "Erros de E / S de Buffer" que você está vendo. Você deve considerar redefinir esse disco completamente, incluindo a tabela de partições, reparticionando e reformatando-a do zero.

  2. Você tem um setor inválido em seu disco ("end_request: erros de E / S"). Voce deveria considerar executando badblocks sobre o disco para verificar.

  3. Seu compartimento USB não está funcionando corretamente (de "reinicializações usb"). Se é um disco rígido externo, ele deve usar uma fonte de alimentação independente. O 5V 500mA que é (às vezes) disponível a partir da porta USB não é suficiente para manter a mecânica de um disco dirigir correndo. Também pode haver superaquecimento, especialmente flash drives USB baratos.

  4. O sistema de arquivos NTFS está corrompido. Consertar isso pode ser possível com ntfsfix , mas você Lembre-se, novamente, que NTFS não é um sistema de arquivos Linux nativo . Para melhores resultados, você precisaria de um sistema Windows para verificar corretamente essa partição (usando o Scandisk).

Outras sugestões incluem: parar de usar o NTFS e escolher um sistema de arquivos Linux nativo, remover essa entrada do fstab, montar manualmente o disco como parte do script de backup, desmontá-lo após terminar e usar rótulos de UUID ou de sistema de arquivos para se referir ao disco.

    
por 04.07.2009 / 19:11
4

Você quer investigar o udev. Isso é responsável por nomear o nó do dispositivo em / dev e você pode configurar regras para dar um nome exclusivo à sua chave USB.

    
por 02.07.2009 / 10:26
3

Parece-me que o seu dispositivo está funcionando a meio da cópia ou não recebe energia suficiente do computador.

Qual porta USB está conectada? Se você tem um hub USB alimentado externamente, use isso.

Senão, vá o mais próximo possível da placa-mãe - alguns computadores têm menos energia disponível nas portas frontal / superior ou nas portas extras nos slots de extensão.

    
por 02.07.2009 / 16:53
3

Eu vi dispositivos USB baratos fazerem todos os tipos de coisas estúpidas durante cópias massivas.

(Onde eu trabalho, temos uma versão de avaliação USB do nosso software e eu adiciono um stick de 4Gb para produzi-los.) Eu provavelmente já liderei dezenas de paus no ano passado.

Tenho certeza de que vi a máquina de estado no pendrive ser presa sob uso pesado em modelos baratos. Novamente, Ubuntu, mas 8.04LTS.

Novamente, repetindo um pôster anterior, tente uma porta diferente; Eu encontrei uma porta USB usando na docking station alimentada pelo laptop que eu estava usando, ajudou.

O aconselhamento em massa é manter as campanhas de marca.

    
por 03.07.2009 / 00:27
3

Se você não quiser usar o UUID ou o rótulo do disco, sempre haverá os nomes dos dispositivos /dev/disk/by- foo /* . Lá, você também pode selecionar um disco por make-model-serial ou por porta i / o.

    
por 04.07.2009 / 10:05
1

Você pode dar ao volume um rótulo e montá-lo por rótulo, por exemplo.

mount -L /myusbstick /mnt/myusbstick

Em seguida, ele pode ser conectado a qualquer porta ou a qualquer nome de dispositivo e será encontrado. Você também pode usar uuids, mas eles não são tão convenientes.

    
por 03.07.2009 / 00:02
0

Você pode executar a varredura de superfície do seu dispositivo USB e procurar setores defeituosos. Mensagem de erro de entrada / saída no syslog pode significar a presença de setores defeituosos. Eu usei seatools do seagate para digitalização de superfície de unidade fixa IDE / SATA. Veja se consegue reconhecer sua unidade USB ou não.

    
por 04.07.2009 / 07:09