Tengo un servidor de medios doméstico que se ejecuta en openSUSE 12.2. Estoy usando ocho unidades de 2TB en una configuración RAID-10. Deliberadamente compré dos tipos diferentes de unidades: cuatro Seagate Barracuda Green y cuatro Western Digital Red. Mi objetivo es configurar el RAID de modo que cada par reflejado dentro de la matriz consista en unidades diferentes (es decir, una unidad Seagate y una unidad WD). Lamentablemente, el Partitioner de YaST2 no me dio este nivel de elección en la estructura de la matriz, así que ahora estoy tratando de averiguar cómo se ve la estructura RAID10 predeterminada.
Yo sé lo siguiente:
- sdc, sdd, sde y sdf son unidades WD
- sdg, sdh, sdi y sdj son unidades de Seagate
Elegí el diseño predeterminado 'n2' al crear el RAID. Mi suposición basada en la información de estas dos fuentes es que las unidades adyacentes se reflejan (es decir, sdc == sdd, sde == sdf, etc.), pero quiero saber con certeza:
- http://en.wikipedia.org/wiki/Non-standard_RAID_levels#Linux_MD_RAID_10
- /server/200725/mirrored-and-stripped-hd-drives-in-raid10
Aquí está la salida de '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
Y aquí están los contenidos 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>
Entonces mis preguntas son:
- ¿Cómo puedo saber qué unidades son espejos entre sí?
- ¿Hay alguna forma de cambiar esto, o debería simplemente cambiar los cables (ya que eso cambiará las letras de la unidad) y luego reconstruir el RAID?
Gracias por adelantado.
Nota tangencial, para cualquiera que quiera saber mi razonamiento para hacer esto es: las unidades del mismo modelo y lote, operadas con cargas de uso similares, tiempo de actividad y temperatura tienen poca variación sistemática, y las diferencias en el tiempo de falla entre las unidades se manejarán principalmente por variación aleatoria en el proceso de fabricación. Esto aumenta el riesgo de que varias unidades mueran a la vez. Al comprar unidades no solo de diferentes lotes, sino de fabricantes completamente diferentes, estoy introduciendo una variación sistemática en mi matriz, lo que influye en qué unidades fallarán en momentos similares.
RaidDevice
columna. Puede ser tan simple como (0,1), (2,3), (4,5), (6,7). Eso me haría suponer que necesita hacer que RaidDevice se alinee como WD / Sea / WD / Sea / etc ... Pero no estoy 100% seguro de eso.Respuestas:
Las versiones recientes de
mdadm
muestran este derecho en los detalles de la matriz. Ejemplo demdadm v3.3 - 3rd September 2013
Tenga en cuenta la denotación
set-A
oset-B
. En el caso anterior,sdd
ysdb
pueden fallar juntos sin pérdida de datos. Sin embargo, es posible que estos datos no estén disponibles mientras la matriz se está reconstruyendo.fuente
Tuve el mismo problema y después de buscar en Google un tiempo no encontré una respuesta confiable. Después de pensarlo, pensé que los espejos tienen los mismos datos y, por lo tanto, podríamos comparar una parte de ellos.
NOTA: TENGA CUIDADO: SI TIENE MÁS DE 2 CONDUCTOS CON EL MISMO CHECKSUM, PROBABLEMENTE COMPARÁ EL DISCO ESPACIO VACÍO, ELIJA OTRO DESPLAZAMIENTO (opción de omisión).
Con estos pocos comandos, puede resolverlo:
Esto generará algo como:
Ahora sabemos que sda / sdb es un espejo y sdc / sdd otro. Uno de cada uno debe permanecer para evitar la pérdida de datos.
El comando "dd" está leyendo una vez (cuenta = 1) un Megabyte (bs = 1M) en un desplazamiento de Megabyte desde el inicio del disco (omisión = 1M). No omita = 0, porque el comienzo del disco contiene información diferente. Los datos generalmente comienzan después de 1 MB.
fuente
dd if=/dev/$disk skip=1M bs=1M count=1
No funcionó para mí.dd (coreutils) 8.23
de Debian 8 (Jessie) no es compatibleskip
con una unidad. En cambio, utilicéskip=1
donde1
es relativo abs
. Posiblemente un error tipográfico?d41d8cd98f00b204e9800998ecf8427e
sudd
llamada falla. Ese es el hash de la cadena vacía :-)Creo que estás hablando de una verdadera matriz de incursiones 10 (reflejo rayado 1 + 0)
1. Cree sus 4 matrices raid1:
En este momento tiene 4 matrices de incursiones 1 con 2 TB de espacio en cada una,
2. ¡Vamos a armarlos!
- las opciones de ejecución son útiles porque algunos componentes están activos en otra matriz
3. Adapte su archivo mdadm.conf
Es posible que (según su configuración) necesite adaptar este archivo para reflejar los cambios sobre nuestra nueva matriz (/ dev / md4).
4. Disfruta .. ¡ Tu nueva matriz de bricolaje raid10!
fuente
Siempre puede verificar cuáles son espejos mediante una manera cruda de comparar los datos, por ejemplo:
(si no obtiene ninguna coincidencia, es posible que necesite aumentar skip = , ya que no se saltea el superbloque RAID; y si obtiene el mismo md5sum para más de 2 discos, es posible que necesite aumentar count = , ya que probablemente esté leyendo y m5 sumando ceros, para evitar que primero deba poner algunos datos en la redada, de lo contrario podrían estar llenos de ceros)
En cuanto a los cables de intercambio, no necesita hacer eso: mdadm debería crear una incursión con dispositivos como se especifica en la línea de comandos en mdadm --create , por lo que solo debería especificar unidades en un orden diferente en la línea de comandos.
fuente
Ejecute "mdadm --examine device" en cada dispositivo componente (es decir, / dev / sda1, / dev / sdb1, etc.). La información allí debería ayudarlo a determinar qué componentes son el espejo de cada uno.
fuente