Eu tenho um único disco do qual desejo criar um espelho; vamos chamar esse disco sda
. Acabei de comprar outro disco de tamanho idêntico, que podemos chamar sdb
. sda
e sdb
tenha uma partição chamada sda1
e sdb1
respectivamente.
Ao criar uma invasão, não quero limpar minha sda
limpeza e começar de novo, só quero que ela comece a espelhar sdb
. Minha linha de pensamento era fazer:
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1
... para criar a matriz sem sdb
disco, execute algo como (estou pensando o seguinte comando em voz alta, porque não tenho certeza de como realizar esta etapa)
mdadm /dev/md0 --add /dev/sdb1
A nota sdb1
é assumida como sendo formatada de maneira semelhante asda1
Isso é possível?
--add
, e você precisa ter cuidado, mas não é muito complicado. Consulte Como configurar o espelhamento de disco no Ubuntu? (Não posso propor essa pergunta como duplicada por causa das novas regras.)Respostas:
A resposta simples para a pergunta no título é "Sim". Mas o que você realmente deseja fazer é o próximo passo, que é espelhar os dados existentes.
É possível converter o disco existente, mas é arriscado, como mencionado, devido à localização dos metadados. Muito melhor criar um espelho vazio (quebrado) com o novo disco e copiar os dados existentes nele. Então, se não funcionar, basta reiniciar o original não espelhado.
Primeiro, inicialize
/dev/sdb1
como o novo/dev/md0
com uma unidade ausente e inicialize o sistema de arquivos (estou assumindo ext3, mas a escolha é sua)Agora,
/dev/sda1
provavelmente é o seu sistema de arquivos raiz (/
), por segurança, você deve executar a próxima etapa em um CD ao vivo, disco de recuperação ou outro sistema inicializável que possa acessar os dois/dev/sda1
e,/dev/md0
embora eu tenha feito isso com êxito, passe para o modo de usuário único.Copie todo o conteúdo do sistema de arquivos
/dev/sda1
para/dev/md0
. Por exemplo:Edite
/etc/fstab
ou garanta que, na próxima inicialização,/dev/md0
esteja montado em vez de/dev/sda1
. Seu sistema provavelmente está configurado para inicializar/dev/sda1
e os parâmetros de inicialização provavelmente o especificam como o dispositivo raiz; portanto, ao reiniciar, você deve alterá-lo manualmente para que a raiz seja/dev/md0
(assumindo que/dev/sda1
seja raiz). Após a reinicialização, verifique/dev/md0
se agora está montado (df
) e se está sendo executado como um espelho degradado (cat /proc/mdstat
). Adicione/dev/sda1
à matriz:Como a reconstrução será substituída
/dev/sda1
, qual versão de metadados você usa é irrelevante. Como sempre, ao fazer grandes alterações, faça um backup completo (se possível) ou, pelo menos, garanta que tudo o que não pode ser recriado esteja seguro.Você precisará regenerar sua configuração de inicialização para usar
/dev/md0
como root (se/dev/sda1
foi root) e provavelmente precisará regenerarmdadm.conf
para garantir que/dev/md0
sempre seja iniciado.fonte
cp
para copiar sistemas de arquivos, você perderá algumas coisas, como links físicos, atributos estendidos ... Usetar
oursync
com as opções apropriadas. Ao inicializar um Live CD, lembre-se de que o mapeamento do usuário uid é diferente (consulte as opções --numeric-owner do tar / rsync). Consulte também clone2fs para clonar sistemas de arquivos extx.cp
lidar com a preservação de links (-d), modo, propriedade e registros de data e hora (-p), fazê-lo recursivamente (-R) e permanecer em um sistema de arquivos (-x), mas acho que você pode estar certo sobre links físicos e estendidos atributos.rsync -aH --delete /mnt/olddisk/ /mnt/newarray/
é uma boa opção Adicione-vih --progress
se você quiser realmente ver o que está fazendo.Claro, você pode criá-lo especificando que o segundo disco está atualmente
missing
:fonte
Você pode fazer isso. Você precisa ter um pouco de cuidado, mas isso não é perigoso - se você for muito cuidadoso para não digitar nada errado e não deixar nenhum problema na configuração.
Eu recomendo não fazer nenhuma das manipulações em um sistema ativo. É possível em alguns casos, mas requer cuidados extras. Inicialize a partir de um liveCD / liveUSB, como Parted ou SystemRescueCD .
Primeiro, é necessário diminuir um pouco o volume, para abrir espaço para os metadados mdraid (o superbloco). Existem vários formatos de metadados , você deve usar um que coloque os metadados no final do disco. (Em algumas configurações, você pode ter espaço suficiente para colocar o superbloco no início, mas isso é mais complicado e propenso a riscos, então eu vou para isso.)
Você deve garantir que os últimos 128kB do dispositivo de bloco não sejam utilizados, para liberar espaço para o superbloco. Então, você precisará reduzir o sistema de arquivos
/dev/sda1
. Se este for um sistema de arquivos ext2 / ext3 / ext4, obtenha o tamanho atual do sistema de arquivostune2fs /dev/sda1
e executeresize2fs /dev/sda1 NNN
onde NNN é esse tamanho menos 128kB. Você pode fazer isso com Parted . Se você precisar reduzir um sistema de arquivos extN, precisará desmontá-lo primeiro; um sistema de arquivos btrfs pode ser reduzido ao vivo.Depois de garantir que os últimos 128kB do dispositivo de bloco estejam livres, ligue
mdadm --create
para criar um volume RAID-1. Isso não toca em nenhuma parte do volume além do superbloco. Inicialmente, o volume terá um único componente: todos os outros estão definidos como com falha. Você deve passar--level=1
(ou equivalentemente-n 1
) (essa abordagem funciona apenas para RAID-1) e--metadata=0.9
ou--metadata=1.0
(o formato padrão de superbloco 1.2 coloca o superbloco perto do início do dispositivo, o que pode sobrescrever dados). O argumento para--raid-devices
(-n
) é o número de componentes (incluindo os ausentes) no volume RAID.Agora você pode ativar a matriz e adicionar outros componentes.
Uma observação sobre os gerenciadores de inicialização: O Grub2 entende o Linux RAID-1 e pode inicializar a partir dele. Carregadores de inicialização como o Grub1, que não entendem o RAID, são lidos de forma transparente a partir de volumes espelhados, mas seu sistema não inicializa se a unidade em que o carregador de inicialização estiver lendo falhar. Se o volume RAID estiver em uma partição, instale o setor de inicialização do Grub nas duas unidades.
Sure Certifique-se de ter backups. "Não perigoso" significa "você provavelmente não precisará deles", não "aposta seus dados".
Republicado e ligeiramente adaptado de Como configurar o espelhamento de disco (RAID-1)
fonte