Eu tenho um servidor de mídia doméstico executando no openSUSE 12.2. Estou usando oito unidades de 2 TB em uma configuração RAID-10. Eu comprei deliberadamente dois tipos diferentes de unidades: quatro Seagate Barracuda Green e quatro Western Digital Red. Meu objetivo é configurar o RAID de modo que cada par espelhado na matriz consista em unidades diferentes (ou seja, uma unidade Seagate e uma unidade WD). Infelizmente, o particionador do YaST2 não me deu esse nível de escolha na estrutura da matriz, então agora estou tentando descobrir como é a estrutura RAID10 padrão.
Eu sei o seguinte:
- sdc, sdd, sde e sdf são todas as unidades WD
- sdg, sdh, sdi e sdj são todos discos da Seagate
Eu escolhi o layout 'n2' padrão ao criar o RAID. Meu palpite, com base nas informações dessas duas fontes, é que as unidades adjacentes são espelhadas (por exemplo, sdc == sdd, sde == sdf, etc), mas quero ter certeza:
- http://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10
- /server/200725/mirrored-and-stripped-hd-drives-in-raid10
Aqui está a saída do 'mdadm --detail / dev / md0':
/dev/md0: Version : 1.0 Creation Time : Sat Mar 16 12:55:11 2013 Raid Level : raid10 Array Size : 7814045696 (7452.05 GiB 8001.58 GB) Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB) Raid Devices : 8 Total Devices : 8 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Sat Mar 16 13:09:37 2013 State : active, resyncing Active Devices : 8 Working Devices : 8 Failed Devices : 0 Spare Devices : 0 Layout : near=2 Chunk Size : 2048K Resync Status : 1% complete Name : aldaris:0 (local to host aldaris) UUID : c6cc3943:97394500:b77d44cd:f02ed876 Events : 149 Number Major Minor RaidDevice State 0 8 33 0 active sync /dev/sdc1 1 8 49 1 active sync /dev/sdd1 2 8 65 2 active sync /dev/sde1 3 8 81 3 active sync /dev/sdf1 4 8 97 4 active sync /dev/sdg1 5 8 113 5 active sync /dev/sdh1 6 8 129 6 active sync /dev/sdi1 7 8 145 7 active sync /dev/sdj1
E aqui está o conteúdo de / proc / mdstat:
Personalities : [raid10] md0 : active raid10 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
7814045696 blocks super 1.0 2048K chunks 2 near-copies [8/8] [UUUUUUUU]
[>....................] resync = 4.8% (375163456/7814045696) finish=1206.5min speed=102751K/sec
bitmap: 57/59 pages [228KB], 65536KB chunk
unused devices: <none>
Então, minhas perguntas são:
- Como posso saber quais unidades são espelhos uma da outra?
- Existe uma maneira de mudar isso, ou devo apenas trocar os fios (já que isso trocará as letras da unidade) e depois reconstruir o RAID?
Desde já, obrigado.
Nota tangencial, para quem quer saber o meu raciocínio para fazer isso é: Unidades do mesmo modelo e lote, operadas sob cargas de uso semelhantes, tempo de atividade e temperatura, têm pouca variação sistemática, e as diferenças no tempo de falha entre as unidades serão principalmente direcionadas por variação aleatória no processo de fabricação. Isso aumenta o risco de várias unidades morrerem ao mesmo tempo. Ao comprar unidades não apenas de lotes diferentes, mas de fabricantes completamente diferentes, estou introduzindo variações sistemáticas em minha matriz, influenciando as unidades que falharão em momentos semelhantes.
RaidDevice
coluna. Pode ser tão simples quanto (0,1), (2,3), (4,5), (6,7). Isso me faria supor que você precisa fazer o RaidDevice se alinhar como WD / Sea / WD / Sea / etc ... Mas não tenho 100% de certeza sobre isso.Respostas:
Versões recentes de
mdadm
mostram isso diretamente nos detalhes da matriz. Exemplo demdadm v3.3 - 3rd September 2013
Observe a denotação
set-A
ouset-B
. No caso acima,sdd
esdb
pode falhar juntos sem perda de dados. É possível que esses dados não estejam disponíveis enquanto a matriz está sendo reconstruída.fonte
Eu tive o mesmo problema e, depois de pesquisar um pouco, não encontrei uma resposta confiável. Depois de pensar um pouco, imaginei que os espelhos tivessem os mesmos dados e pudéssemos comparar uma parte deles.
NOTA: TENHA CUIDADO, SE TIVER MAIS DE 2 UNIDADES COM O MESMO CHECKSUM, É COMPARÁVEL COMPARAR O ESPAÇO DE DISCO VAZIO, ESCOLHA OUTRO DESLOCAMENTO (opção de pular).
Com esses poucos comandos, você pode descobrir:
Isso produzirá algo como:
Agora sabemos que sda / sdb é um espelho e sdc / sdd outro. Um de cada deve permanecer para evitar a perda de dados.
O comando "dd" está lendo uma vez (contagem = 1) um Megabyte (bs = 1M) em um deslocamento de Megabyte desde o início do disco (ignorar = 1M). Não pule = 0, porque o início do disco contém informações diferentes. Os dados geralmente começam após 1 MB.
fonte
dd if=/dev/$disk skip=1M bs=1M count=1
não funcionou para mim.dd (coreutils) 8.23
do Debian 8 (Jessie) não suportaskip
uma unidade. Em vez disso, useiskip=1
onde1
é relativobs
. Possivelmente um erro de digitação?d41d8cd98f00b204e9800998ecf8427e
suadd
chamada falhará. Esse é o hash da string vazia :-)Eu acho que você está falando sobre um verdadeiro raid 10 array (1 + 0 espelhamento listrado)
1. Crie suas 4 matrizes raid1:
No momento, você tem 4 matrizes RAID 1 com espaço de 2 TB em cada uma,
2. Vamos montá-los!
--run options é útil porque alguns componentes estão ativos em outra matriz
3. Adapte seu arquivo mdadm.conf
Você pode precisar (dependendo da sua configuração) adaptar este arquivo para refletir as alterações sobre nossa nova matriz (/ dev / md4).
4. Aproveite .. Sua nova matriz DIY raid10!
fonte
Você sempre pode verificar quais são os espelhos por uma maneira grosseira de comparar os dados, por exemplo:
(se você não obtiver nenhuma correspondência, pode ser necessário aumentar skip = , pois não está pulando os superblocos RAID; e se você obtiver o mesmo md5sum por mais de 2 discos, poderá precisar aumentar count = , à medida que provavelmente está lendo e zerando m5summing - para impedir que você coloque primeiro alguns dados no ataque, caso contrário, eles podem estar cheios de zeros)
Quanto à troca de fios, você não precisa fazer isso - o mdadm deve criar um ataque com os dispositivos especificados na linha de comando no mdadm --create , portanto, você deve especificar unidades em ordem diferente na linha de comando.
fonte
Execute "mdadm --examine device" em cada dispositivo componente (por exemplo, / dev / sda1, / dev / sdb1, etc.). As informações devem ajudá-lo a determinar quais componentes são o espelho um do outro.
fonte