{"id":16216,"date":"2017-07-25T04:00:02","date_gmt":"2017-07-25T02:00:02","guid":{"rendered":"https:\/\/eltallerdelbit.com\/?p=16216"},"modified":"2020-08-24T00:13:55","modified_gmt":"2020-08-23T22:13:55","slug":"raid-por-software-mdadm","status":"publish","type":"post","link":"https:\/\/eltallerdelbit.com\/raid-por-software-mdadm\/","title":{"rendered":"RAID por software en Linux | mdadm"},"content":{"rendered":"
<\/p>\n
La configuraci\u00f3n RAID<\/a><\/strong> realiza combinaciones entre discos para mejorar el funcionamiento y la fiabilidad. <\/p>\n <\/p>\n <\/p>\n Existen 8 modos b\u00e1sicos RAID<\/a>.<\/p>\n <\/p>\n Los conjuntos RAID m\u00e1s utilizados, y en los que nos centraremos, son :<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n –> Si deseamos hacer la pr\u00e1ctica sobre discos virtuales o pseudo-discos, los crearemos con el comando dd<\/a>.<\/p>\n –> Luego asociaremos los nuevos discos virtuales a dispositivos Loop<\/a>, con el comando losetup.<\/p>\n –> Y despu\u00e9s crearemos el RAID con esos pseudo-discos<\/a>.<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Despu\u00e9s, aparecer\u00e1 la configuraci\u00f3n de mdadm<\/em><\/p>\n <\/p>\n <\/p>\n mdadm<\/em> nos preguntar\u00e1 sobre los Arrays MD necesarios para el sistema de ficheros ra\u00edz.<\/p>\n Podemos elegir entre todos (all<\/em>), ninguno (none<\/em>) o los dispositivos separados por espacios, por ejemplo “md0 md1”<\/p>\n <\/p>\n A continuaci\u00f3n veremos el paquete mdadm<\/em> instal\u00e1ndose:<\/p>\n <\/p>\n Preconfigurando paquete mdadm<\/em>:<\/p>\n <\/p>\n Al haber instalado el paquete mdadm<\/em>, ya podremos ver que se ha creado el fichero \/etc\/mdstat<\/em><\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Pero en este caso vamos a crear unos ficheros .raw, que ser\u00e1n tratados como un dispositivo de bloques<\/a>; y utilizaremos el comando losetup<\/strong><\/em> para asociar el fichero a un dispositivo loop<\/a> (Los dispositivos Loop son pseudo-dispositivos<\/a> que precisamente facilitan el poder acceder a ficheros como si fueran dispositivos de bloques, es decir, un disco duro).<\/p>\n <\/p>\n <\/p>\n Crearemos 2 pseudo-discos (dispositivos de bloque); y los asociamos a los dispositivos Loop (dispositivos de bucle) lo haremos con :<\/p>\n <\/p>\n Creando los pseudo-discos ficheros como dispositivos de bloque<\/em> linux:<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Si deseamos crear un RAID 0, ejecutaremos estos comandos MDADM<\/em><\/strong>:<\/p>\n es decir, creamos el dispositivo raid \/dev\/md0, con los dispositivos \/dev\/loop1 y \/dev\/loop2, usando un raid 0 (–level=0). <\/p>\n <\/p>\n Si deseamos crear un RAID 1, ejecutaremos:<\/p>\n <\/p>\n Aparecer\u00e1 el mensaje:<\/p>\n Pulsamos y (yes)<\/p>\n <\/p>\n <\/p>\n <\/p>\n Un tiempo despu\u00e9s, ejecutamos de nuevo el comando, y veremos el RAID 1 ya sincronizado totalmente:<\/p>\n <\/p>\n <\/p>\n <\/p>\n <\/p>\n Si queremos que el sistema RAID se monte en cada inicio, debemos a\u00f1adir entradas en \/etc\/fstab<\/a> (sustituyendo \/dev\/md0 por nombres de archivo de partici\u00f3n como \/dev\/sda1)<\/p>\n <\/p>\n <\/p>\n error al configurar el dispositivo de bucle: Dispositivo o recurso ocupado<\/em><\/p>\n <\/p>\n <\/p>\n para desasociar todos los dispositivos Loop, ejecutaremos:<\/p>\n <\/p>\n Hemos visto c\u00f3mo crear RAID por software<\/strong> con mdadm<\/em><\/strong>, c\u00f3mo crear dispositivos virtuales o pseudo-discos, y utilizarlos para el RAID por medio de su asociaci\u00f3n a dispositivos Loop o dispositivos de bucle, con el comando losetup<\/em>.<\/p>\n <\/p>\n <\/p>\n <\/p>\n\n Vamos a ver c\u00f3mo crear RAID por software con mdadm, utilizando pseudo-discos (dispositivos de bloque) y dispositivos de bucle (Loop).<\/p>\n","protected":false},"author":1,"featured_media":16389,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false},"categories":[1268],"tags":[1150],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/16216"}],"collection":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/comments?post=16216"}],"version-history":[{"count":0,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/posts\/16216\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/media\/16389"}],"wp:attachment":[{"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/media?parent=16216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/categories?post=16216"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eltallerdelbit.com\/wp-json\/wp\/v2\/tags?post=16216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
\n <\/br><\/br>
\nNosotros vamos a crear ficheros como si fueran discos duros, y los vamos a utilizar para practicar el RAID.
\n <\/br><\/br>
\nPara este ejercicio con MDADM<\/em>, vamos a utilizar pseudo-discos (dispositivos de bloque<\/a><\/span>) y el comando losetup<\/em><\/a><\/span> para asociar dispositivos de bucle (Loop<\/em>)<\/a><\/span> a esos dispositivos de bloque creados para la pr\u00e1ctica.<\/p>\n
\nContenidos de este art\u00edculo:<\/p>\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
1. MODOS DE RAID<\/span><\/h3>\n
\n
\n
\n
\n
\nComo en esta pr\u00e1ctica vamos a trabajar el RAID en una m\u00e1quina virtual, realizaremos las pruebas sobre pseudo-discos (dispositivos de bloque<\/strong><\/em> habilitados sobre dispositivos Loop<\/strong><\/em>) que crearemos con el comando dd<\/strong><\/em>.
\n <\/p>\n1.1 RESUMEN: Creaci\u00f3n de RAID por Software con MDADM<\/strong><\/span><\/h4>\n
\nTras preparar las particiones o discos que incluiremos en el conjunto RAID, ejecutaremos el comando mdadm<\/strong><\/em>, con las opciones:<\/p>\n\r\n[modo] dispositivo-raid [opciones] dispositivos-integrantes\r\n<\/pre>\n
\n–> Creaci\u00f3n b\u00e1sica de un sistema RAID:<\/p>\n\r\nmdadm --create dispositivo-raid nivel-raid numero-dispositivos-raid nombres-archivo-dispositivos-integrantes\r\n<\/pre>\n
\n –> Opciones level mdadm:<\/span><\/p>\n\r\n--level=\r\nopciones: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container\r\n<\/pre>\n
2. Instalaci\u00f3n de mdadm<\/strong><\/span><\/h3>\n
Primero Instalaremos el paquete mdadm<\/em><\/h4>\n
apt install mdadm\r\n\r\no\r\n\r\napt-get install mdadm\r\n<\/pre>\n
\n <\/p>\n
\n <\/p>\n
\n <\/p>\n3. creamos pseudo-discos (ficheros como dispositivos de bloque<\/a><\/span>) en dispositivos loop<\/a><\/span><\/span><\/h3>\n
\ncon el comando dd<\/em>, crearemos los pseudo-discos que utilizaremos en el sistema RAID.
\n
\nYa sabemos que con el comando dd podemos ejecutar muchas tareas, como por ejemplo borrar el contenido de una partici\u00f3n. As\u00ed:<\/p>\ndd if=\/dev\/zero of=\/dev\/sdb2<\/pre>\n
\nDe esta forma borrar\u00edamos el contenido de la partici\u00f3n \/dev\/sdb2<\/p>\n
\nPara que el sistema trate el fichero como un dispositivo de bloques y no como un fichero normal, vamos a utilizar la instrucci\u00f3n losetup<\/strong><\/em> que asocia el fichero que le demos al dispositivo Loop elegido.
\n <\/p>\n\r\ndd if=\/dev\/zero of=\/srv\/disk1.raw bs=1M count=512 ; losetup \/dev\/loop1 \/srv\/disk1.raw\r\n\r\ndd if=\/dev\/zero of=\/srv\/disk2.raw bs=1M count=512 ; losetup \/dev\/loop2 \/srv\/disk2.raw\r\n<\/pre>\n
\nEn este caso estamos creando pseudo-discos de 512 MB.<\/p>\n3.1 mostramos dispositivos Loop<\/em> creados, y d\u00f3nde est\u00e1n montados<\/span><\/h4>\n
\nMostraremos los dispositivos Loop<\/em> montados, con el comando losetup<\/em>;
\n
\nen la captura de pantalla vemos que adem\u00e1s de los dispositivos disk1.raw<\/em> y disk2.raw<\/em>, tenemos otros dispositivos m\u00e1s que por ahora no usaremos.
\n
\n
\n
\n<\/p>\n4. Asociar con el comando losetup<\/strong><\/em> los dispositivos Loop<\/em> a los pseudo-discos creados anteriormente<\/span><\/h3>\n
\nCon losetup<\/em> asociaremos los dispositivos Loop<\/em> a los dispositivos de bloque creados anteriormente en srv\/<\/em>
\n
\nAunque ya lo hemos hecho a la vez que cre\u00e1bamos los dispositivos de bloque con el comando dd, est\u00e1 bien que lo tengamos en cuenta por si debemos asociar los dipositivos de bloque a los dispositivos de bucle (Loop) de nuevo.
\n
\n
\n <\/p>\n5. Crear RAID<\/span><\/h3>\n
5.1 Crear RAID 0<\/span><\/h4>\n
mdadm --create \/dev\/md0 --raid-devices=2 --level=0 \/dev\/loop1 \/dev\/loop2<\/pre>\n
\n <\/p>\n5.2 Crear RAID 1<\/span><\/h4>\n
mdadm --create \/dev\/md0 --raid-devices=2 --level=1 \/dev\/loop1 \/dev\/loop2\r\n\r\n<\/pre>\n
\n<\/p>\n\r\nmdadm: Note: this array has metadata at the start and\r\nmay not be suitable as a boot device. If you plan to\r\nstore '\/boot' on this device please ensure that\r\nyour boot-loader understands md\/v1.x metadata, or use\r\n--metadata=0.90\r\nContinue creating array? y\r\nmdadm: Defaulting to version 1.2 metadata \r\n<\/pre>\n
\nContinue creating array?<\/em><\/p>\n5.3 Comprobamos el RAID activado y los discos asociados: Vemos que el RAID 1 est\u00e1 activado y sincronizando (resync<\/em>)<\/span><\/h4>\n
\nPodemos ver que se ha creado un raid, llamado md0<\/em>, con los dispositivos loop1<\/em> y loop2<\/em>, y que el raid se encuentra sincronizando de disco a disco (puesto que RAID 1 utiliza la configuraci\u00f3n Mirroring<\/em>)
\n <\/p>\n\r\nroot@debian:\/#cat \/proc\/mdstat\r\nPersonalities : [raid1]\r\nmd0 : active raid1 loop2[1] loop1[0]\r\n523712 blocks super 1.2 [2\/2] [UU]\r\n[==>..................] resync = 12.5% (65536\/523712) finish=0.2min speed\r\n= 32768K\/sec\r\n<\/pre>\n
\n
\nVemos que la informaci\u00f3n entre los discos se est\u00e1 sincronizando (resync = 12.5 %), ya que se trata de un RAID 1, y los discos funcionan en modo espejo (el uno es una copia del otro).
\n <\/p>\n\r\nroot@debian:\/#cat \/proc\/mdstat\r\nPersonalities : [raid1]\r\nmd0 : active raid1 loop2[1] loop1[0]\r\n523712 blocks super 1.2 [2\/2] [UU]\r\n\r\nunused devices : <none>\r\n<\/pre>\n
6. Usar el sistema RAID<\/span><\/h3>\n
\nUtilizamos el dispositivo raid como si fuera un archivo de dispositivo.
\n
\nPrimero ejecutamos mkfs<\/em> y luego montamos el dispositivo con mount<\/em>.<\/p>\n\r\nmkfs -t ext4\/ dev\/md0\r\n\r\nmount \/dev\/md0 \/mnt\r\n<\/pre>\n
7. Posible error:\u00a0error al configurar dispositivo de bucle: dispositivo o recurso ocupado<\/span><\/h3>\n
\nPuede ocurrir que al intentar asociar un dispositivo loop a uno de los pseudo-discos (o disco virtual) creado, recibamos el mensaje:
\n <\/p>\n\r\nroot@debian:\/home# losetup \/dev\/loop1 \/srv\/hdd1.raw\r\nlosetup: \/srv\/hdd1.raw: error al configurar dispositivo de bucle: Dispositivo o recurso ocupado\r\n<\/pre>\n
\n
\nEn caso de recibir dicho mensaje, realizaremos una desasociaci\u00f3n de los dispositivos Loop, para despu\u00e9s volver a realizar la asociaci\u00f3n.
\n <\/p>\n7.1. \u00a0desasociar todos dispositivos loop<\/span><\/h4>\n
losetup -D<\/pre>\n
\n<\/p>\nFuentes y agradecimientos:<\/h4>\n
\n