¿Qué son las rutas múltiples?
Las rutas múltiples permiten la combinación de varias conexiones físicas entre un servidor y una matriz de almacenamiento en un dispositivo virtual. Esto se puede hacer para proporcionar una conexión más resistente a su almacenamiento (una ruta descendente no obstaculizará la conectividad) o para agregar ancho de banda de almacenamiento para mejorar el rendimiento.
Como ejemplo, el servidor del siguiente diagrama tiene dos HBA, cada uno conectado a un conmutador Fibre Channel independiente, que a su vez está conectado a controladores independientes en la matriz de almacenamiento.
Red Hat Enterprise Linux 7 admite rutas múltiples mediante dm-multipath subsistema. Esto utiliza el sistema de asignación de dispositivos del kernel para generar dispositivos virtuales, administrados por el demonio multipathd y la herramienta de línea de comandos multipath.
Los binarios, demonios y módulos de kernel necesarios están disponibles en el paquete device-mappermultipath. Una vez que se instala, configura e inicia device-mapper-multipath, los nodos de dispositivos para dispositivos con rutas múltiples se crearán en dos ubicaciones diferentes.
Para fines administrativos, los dispositivos de rutas múltiples se crean en /dev/mapper . Se pueden llamar mpathN[pM] si se eligen nombres fáciles de usar, o pueden tener el nombre de World Wide ID (WWID) del dispositivo de almacenamiento. Un administrador también puede establecer nombres personalizados para dispositivos con rutas múltiples. Estos nombres personalizados se establecen utilizando la opción de alias en la sección de rutas múltiples del archivo de configuración de rutas múltiples.
Los dispositivos de rutas múltiples también se crean en /dev en forma de /dev/dm-N para que coincida con los creados en /dev/mapper. Estos dispositivos son estrictamente para uso interno del sistema y, por lo tanto, nunca deben usarse directamente para fines administrativos.
Nota :las rutas múltiples brindan protección contra la caída de una ruta de acceso al almacenamiento. Si el almacenamiento en sí deja de estar disponible, se perderá el acceso al almacenamiento.Para crear un dispositivo de múltiples rutas, las diferentes rutas se combinarán en grupos, según la configuración en /etc/multipath.conf archivo de configuración. Por lo general, solo un grupo estará activo a la vez, pero un grupo puede constar de varias rutas. Cuando un grupo falla, el daemon de rutas múltiples cambiará el tráfico de almacenamiento a un grupo diferente.
Configuración de rutas múltiples
Para configurar rutas múltiples, primero asegúrese de que esté instalado el paquete device-mapper-multipath.
# yum -y install device-mapper-multipath
Una vez que se instala el paquete device-mapper-multipath, se debe crear un archivo de configuración para el daemon multipath, /etc/multipath.conf. La forma más fácil de crear este archivo es usar mpathconf utilidad.
Si ya existe un archivo llamado /etc/multipath.conf, el comando mpathconf editará ese archivo. Si no existe dicho archivo, mpathconf copiará la configuración predeterminada de /usr/share/doc/device-mapper-multipath-*/multipath.conf . Si ese archivo no existe, mpathconf creará un nuevo archivo de configuración desde cero.
Para crear una configuración predeterminada y luego iniciar y habilitar el demonio multipathd, use el siguiente comando:
# mpathconf --enable --with_multipathd y --with_chkconfig yNota :en el archivo de configuración predeterminado creado por mpathconf, los nombres descriptivos se habilitan con la opción user_friendly_names. Los nombres fáciles de usar darán como resultado que los dispositivos con rutas múltiples se denominen mpathN. Si bien esto puede ser útil si solo hay un dispositivo de rutas múltiples, puede volverse confuso cuando hay varios dispositivos de rutas múltiples. Para deshabilitar nombres amigables para el usuario, use el –user_friendly_names n opción para mpathconf. Esto dará como resultado que los dispositivos con rutas múltiples reciban el nombre de sus WWID.
Si desea ajustar la configuración de rutas múltiples antes de iniciar el demonio multipathd, use el comando mpathconf con solo la opción –enable:
# mpathconf --enable
Después de editar el archivo de configuración, habilite e inicie el demonio multipathd normalmente con el comando systemctl.
El archivo de configuración multipath.conf
El archivo de configuración multipath.conf consta de cinco secciones:
sección multipath.conf | Descripción |
---|---|
lista negra'{} | Esta sección define qué dispositivos se deben excluir del descubrimiento de topología de rutas múltiples. |
excepciones_de la lista negra {} | Esta sección define qué dispositivos deben incluirse en el descubrimiento de topología de rutas múltiples, a pesar de estar incluidos en la sección de la lista negra. |
predeterminado {} | Esta sección define la configuración predeterminada que se utilizará para todas las rutas múltiples, a menos que se anule explícitamente en la sección de dispositivos {} o rutas múltiples {}. |
dispositivos {} | Esta sección contiene anulaciones para la sección {} de valores predeterminados para tipos específicos de dispositivos, a menos que se anulen desde la sección {} de rutas múltiples. Los dispositivos se identifican en función de su proveedor, producto y palabras clave de revisión (expresiones regulares que coinciden con la información de sysfs). |
rutas múltiples {} | Esta sección contiene configuraciones para rutas múltiples específicas. Esta sección anula lo que se define en la sección {} y dispositivos {} predeterminados. Las rutas múltiples se identifican en función de sus WWID (obtenidos mediante la función getuid_callout). |
Una manera fácil de recordar anulaciones es:múltiples rutas> dispositivos> predeterminados .
Listas negras
Los dispositivos se pueden incluir en la lista negra en el archivo de configuración usando la lista negra {} sección de multipath.conf. Si se incluye en la lista negra con comodines, los dispositivos individuales pueden quedar exentos de la lista negra mediante la sección blacklist_exceptions {}. Los dispositivos se pueden incluir en la lista negra utilizando su nodo de dispositivo o su WWID. El siguiente ejemplo muestra un ejemplo de ambos:
blacklist { devnode "^cciss" wwid 1234567890abcde }
Para determinar el WWID de un dispositivo de disco, use la utilidad scsi_id.
/usr/lib/udev/scsi_id -g -u /dev/sdN 360014053bd9ea2a35914e39a556051cf
Predeterminados
Los valores predeterminados para todas las rutas múltiples se pueden establecer en valores predeterminados {} sección de multipath.conf. La lista completa de todos los valores predeterminados integrados se puede encontrar en el archivo /usr/share/doc/devicemapper-multipath-*/multipath.conf.defaults. Algunas de las configuraciones más interesantes son:
- selector_ruta :El algoritmo que determina qué ruta dentro de un grupo de prioridad usar para la siguiente E/S. El valor predeterminado de "round-robin 0 ” distribuye E/S en todas las rutas del grupo. El número de solicitudes que se enviarán usando una ruta antes de cambiar a la siguiente está determinado por rr_min_io_rq ajuste. Las alternativas son “longitud de cola 0 “, que enviará la siguiente solicitud de E/S a la ruta con la cola más corta de solicitudes pendientes, y “tiempo de servicio 0 “, que enviará la siguiente solicitud 1/0 a la ruta que tenga el tiempo de servicio estimado más corto.
- path_grouping_policy :Esta configuración define cómo se combinan varias rutas en grupos de prioridad. En el valor predeterminado de failover , cada ruta se pondrá en un grupo separado. Por otro lado, con el multibus política, todas las rutas posibles se agregan en un solo grupo. Antes de configurar un dispositivo multirruta para usar la política multibus, asegúrese de que el controlador de almacenamiento admita conexiones activo-activo.
- comprobador_ruta :Esta configuración determina cómo determinará el daemon multipathd si una ruta está en buen estado. Aparte de las opciones independientes del hardware de directio y leersector0 , hay una serie de verificadores independientes del hardware. Aunque el valor predeterminado para esta opción es directio, generalmente se anula en uno de los dispositivos predeterminados especificados en la sección de dispositivos {}.
- características :esta opción especifica las funciones de rutas múltiples que se habilitarán. La sintaxis es la forma de num list , donde num representa la cantidad de funciones que se están habilitando y list representa la lista de funciones que se están habilitando. Las dos funciones disponibles son queue_if_no_path y sin_particiones .
- nombres_de_usuario :esta configuración determina si las rutas múltiples sin un alias definido se denominarán mpathN (cuando se establece en sí), o si se nombrarán según su WWID.
La sección de dispositivos {}
En los dispositivos {} sección, se pueden anular los valores predeterminados para dispositivos específicos. Dentro de la sección de dispositivos {}, hay subsecciones {} de dispositivos individuales que detallan la configuración para dispositivos específicos. El hardware de almacenamiento más común ya tiene su propia sección definida en los valores predeterminados integrados para el demonio multirruta. Si un hardware no está (todavía) en la lista, se puede agregar manualmente una sección para el hardware. A continuación se muestra una definición de ejemplo para una pieza inexistente de hardware de almacenamiento. El dispositivo en sí se selecciona mediante una combinación de proveedor , producto y revisión .
devices { device { vendor "MegaHyperSuperStorage" product "BAS" revision "513/B" features "1 queue_if_no_path" path_grouping_policy multibus path_checker tur } }
En los ejemplos anteriores, la línea de características indica que las nuevas solicitudes de E/S se aceptarán y se pondrán en cola incluso cuando no haya rutas disponibles actualmente.
La sección multirutas {}
En las múltiples rutas {} sección, se pueden definir anulaciones para trayectos múltiples específicos. Esto se puede usar para establecer diferentes políticas de agrupación de rutas para una ruta múltiple específica. Uno de los otros usos comunes de la sección {} de rutas múltiples es definir un alias para una ruta múltiple. Cuando se establece un alias. el nombre del nodo del dispositivo en /dev/mapper/ para esta ruta múltiple se basará en el alias, lo que facilita la distinción entre diferentes rutas múltiples.
Como ejemplo, la siguiente configuración establecerá un alias de almacenamiento en clúster para múltiples rutas con un WWID de "1234567890abcdef", así como un path_selector de cola-longitud.
multipaths { multipath { wwid "1234567890abcdef" alias "clusterstorage" path_selector "queue-length 0" } }
Agregar particiones
Para agregar una partición en un dispositivo con rutas múltiples, siga los siguientes pasos:
- Cree la partición en el dispositivo con rutas múltiples mediante un editor de particiones, por ejemplo, fdisk /dev/mapper/mpath0 .
- Ejecute partprobe comando para actualizar la vista del kernel de la tabla de particiones en todos los dispositivos (incluidos los dispositivos recopilados en una ruta múltiple).
- Ejecute el comando, kpartx -a , en el dispositivo de rutas múltiples para crear dispositivos mapeadores de dispositivos para las particiones recién creadas.
Eliminar una ruta múltiple
Después de eliminar todas las rutas para una multirruta, elimine el dispositivo multirruta ejecutando el comando multirruta -f [dispositivo] . Si el daemon multipathd se detuvo y todavía hay nodos de dispositivos para dispositivos multirruta, vacíe todos los dispositivos multirruta ejecutando multipath -F . Esto puede ser útil cuando se prueban diferentes configuraciones y se ven restos de configuraciones antiguas.