Configuración del software RAID en LinuxConfigure Software RAID on Linux

Es un escenario habitual usar el software RAID en máquinas virtuales con Linux en Azure para presentar varios discos de datos conectados como un único dispositivo RAID.It's a common scenario to use software RAID on Linux virtual machines in Azure to present multiple attached data disks as a single RAID device. Se puede utilizar normalmente para aumentar el rendimiento y permitir una capacidad de proceso mejorada en comparación con el uso de un solo disco.Typically this can be used to improve performance and allow for improved throughput compared to using just a single disk.

Conexión de discos de datosAttaching data disks

Se necesitan dos o más discos de datos vacíos para configurar un dispositivo RAID.Two or more empty data disks are needed to configure a RAID device. La razón principal para crear un dispositivo RAID es mejorar el rendimiento de la E/S de disco.The primary reason for creating a RAID device is to improve performance of your disk IO. Según sus requisitos de E/S, puede decidir asociar discos que estén almacenados en Standard Storage con hasta 500 E/S por segundo por disco o Premium Storage con hasta 5000 E/S por segundo por disco.Based on your IO needs, you can choose to attach disks that are stored in our Standard Storage, with up to 500 IO/ps per disk or our Premium storage with up to 5000 IO/ps per disk. En este artículo no entramaremos en detalles sobre cómo asociar discos de datos a una máquina virtual Linux.This article does not go into detail on how to provision and attach data disks to a Linux virtual machine. Consulte el artículo de Microsoft Azure sobre la conexión de un disco para obtener instrucciones detalladas sobre cómo conectar un disco de datos vacío a una máquina virtual Linux en Azure.See the Microsoft Azure article attach a disk for detailed instructions on how to attach an empty data disk to a Linux virtual machine on Azure.

Instalación de la utilidad mdadmInstall the mdadm utility

  • UbuntuUbuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS y Oracle LinuxCentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES y openSUSESLES and openSUSE

    zypper install mdadm
    

Creación de las particiones de discoCreate the disk partitions

En este ejemplo, vamos a crear una única partición de disco en /dev/sdc.In this example, we create a single disk partition on /dev/sdc. Por tanto, la partición de disco nueva se llamará /dev/sdc1.The new disk partition will be called /dev/sdc1.

  1. Inicie fdisk para empezar a crear particiones.Start fdisk to begin creating partitions

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Presione "n" en el símbolo del sistema para crear una partición nueva:Press 'n' at the prompt to create a new partition:

    Command (m for help): n
    
  3. A continuación, presione "p" para crear una partición principal:Next, press 'p' to create a primary partition:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Presione "1" para seleccionar el número de la partición 1:Press '1' to select partition number 1:

    Partition number (1-4): 1
    
  5. Seleccione el punto de partida de la partición nueva o presione <enter> para aceptar el valor predeterminado para colocar la partición al principio del espacio disponible en la unidad:Select the starting point of the new partition, or press <enter> to accept the default to place the partition at the beginning of the free space on the drive:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Seleccione el tamaño de la partición; por ejemplo, escriba "+10G" para crear una partición de 10 gigabytes.Select the size of the partition, for example type '+10G' to create a 10 gigabyte partition. O simplemente presione <enter> para crear una única partición que extienda la unidad completa:Or, press <enter> create a single partition that spans the entire drive:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. A continuación, cambie el identificador y el tipo de la partición del identificador predeterminado "83" (Linux) por el identificador "fd" (Linux raid auto):Next, change the ID and type of the partition from the default ID '83' (Linux) to ID 'fd' (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Por último, escriba la tabla de particiones en la unidad y cierre fdisk:Finally, write the partition table to the drive and exit fdisk:

    Command (m for help): w
    The partition table has been altered!
    

Creación de la matriz RAIDCreate the RAID array

  1. En el siguiente ejemplo, se "seccionan" (RAID nivel 0) tres particiones ubicadas en tres discos de datos independientes (sdc1, sdd1 y sde1).The following example will "stripe" (RAID level 0) three partitions located on three separate data disks (sdc1, sdd1, sde1). Después de ejecutar este comando, se creará un nuevo dispositivo RAID llamado /dev/md127 .After running this command a new RAID device called /dev/md127 is created. Tenga en cuenta también que, si estos discos de datos formaban parte anteriormente de otra matriz RAID inactiva, puede ser necesario agregar el parámetro --force al comando mdadm:Also note that if these data disks we previously part of another defunct RAID array it may be necessary to add the --force parameter to the mdadm command:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Cree el sistema de archivos en el nuevo dispositivo RAID.Create the file system on the new RAID device

    a.a. CentOS, Oracle Linux, SLES 12, openSUSE y UbuntuCentOS, Oracle Linux, SLES 12, openSUSE, and Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    b.b. SLES 11SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    c.c. SLES 11: habilitar boot.md y crear mdadm.confSLES 11 - enable boot.md and create mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Nota

    Es posible que sea necesario reiniciar después de realizar estos cambios en los sistemas SUSE.A reboot may be required after making these changes on SUSE systems. Este paso no es necesario en SLES 12.This step is not required on SLES 12.

Incorporación del nuevo sistema de archivos a /etc/fstabAdd the new file system to /etc/fstab

Importante

La edición incorrecta del archivo /etc/fstab puede tener como resultado un sistema que no se pueda arrancar.Improperly editing the /etc/fstab file could result in an unbootable system. Si no está seguro, consulte la documentación de distribución para obtener información sobre cómo editar correctamente ese archivo.If unsure, refer to the distribution's documentation for information on how to properly edit this file. También se recomienda realizar una copia de seguridad del archivo /etc/fstab antes de editarlo.It is also recommended that a backup of the /etc/fstab file is created before editing.

  1. Cree el punto de montaje deseado para el nuevo sistema de archivos, por ejemplo:Create the desired mount point for your new file system, for example:

    sudo mkdir /data
    
  2. Al editar /etc/fstab, el UUID debe usarse para hacer referencia al sistema de archivos en lugar de al nombre del dispositivo.When editing /etc/fstab, the UUID should be used to reference the file system rather than the device name. Use la utilidad blkid para determinar el UUID del nuevo sistema de archivos:Use the blkid utility to determine the UUID for the new file system:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Abra /etc/fstab en un editor de texto y agregue una entrada al nuevo sistema de archivos, por ejemplo:Open /etc/fstab in a text editor and add an entry for the new file system, for example:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    O bien, en SLES 11:Or on SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    A continuación, guarde y cierre /etc/fstab.Then, save and close /etc/fstab.

  4. Pruebe que la entrada /etc/fstab sea correcta:Test that the /etc/fstab entry is correct:

    sudo mount -a
    

    Si este comando genera un mensaje de error, compruebe la sintaxis del archivo /etc/fstab.If this command results in an error message, please check the syntax in the /etc/fstab file.

    A continuación, ejecute el comando mount para garantizar el montaje del sistema de archivos:Next run the mount command to ensure the file system is mounted:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Opcional) Parámetros de arranque a prueba de errores(Optional) Failsafe Boot Parameters

    Configuración de fstabfstab configuration

    Muchas distribuciones incluyen los parámetros de montaje nobootwait o nofail que pueden agregarse al archivo /etc/fstab.Many distributions include either the nobootwait or nofail mount parameters that may be added to the /etc/fstab file. Estos parámetros admiten errores al montar un sistema de archivos concreto y permiten que el sistema Linux continúe iniciándose incluso aunque no pueda montar correctamente el sistema de archivos RAID.These parameters allow for failures when mounting a particular file system and allow the Linux system to continue to boot even if it is unable to properly mount the RAID file system. Consulte la documentación de su distribución para obtener más información sobre estos parámetros.Refer to your distribution's documentation for more information on these parameters.

    Ejemplo (Ubuntu):Example (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Parámetros de inicio de LinuxLinux boot parameters

    Además de los parámetros anteriores, el parámetro de kernelbootdegraded=truepuede permitir que el sistema se inicie incluso si RAID se percibe como dañado o degradado, por ejemplo si una unidad de datos se quita accidentalmente de la máquina virtual.In addition to the above parameters, the kernel parameter "bootdegraded=true" can allow the system to boot even if the RAID is perceived as damaged or degraded, for example if a data drive is inadvertently removed from the virtual machine. De manera predeterminada, esto podría resultar en un sistema no iniciable.By default this could also result in a non-bootable system.

    Consulte la documentación sobre la distribución para obtener información acerca de cómo editar correctamente los parámetros de kernel.Please refer to your distribution's documentation on how to properly edit kernel parameters. Por ejemplo, en muchas distribuciones (CentOS, Oracle Linux y SLES 11), estos parámetros pueden agregarse manualmente al archivo "/boot/grub/menu.lst".For example, in many distributions (CentOS, Oracle Linux, SLES 11) these parameters may be added manually to the "/boot/grub/menu.lst" file. En Ubuntu, este parámetro puede agregarse a la variable GRUB_CMDLINE_LINUX_DEFAULT en "/etc/default/grub".On Ubuntu this parameter can be added to the GRUB_CMDLINE_LINUX_DEFAULT variable on "/etc/default/grub".

Compatibilidad con TRIM y UNMAPTRIM/UNMAP support

Algunos kernels de Linux admiten operaciones TRIM/UNMAP para descartar bloques no usados del disco.Some Linux kernels support TRIM/UNMAP operations to discard unused blocks on the disk. Estas operaciones son especialmente útiles en el almacenamiento estándar para informar a Azure de que las páginas eliminadas ya no son válidas y se pueden descartar.These operations are primarily useful in standard storage to inform Azure that deleted pages are no longer valid and can be discarded. El descarte de páginas puede suponer un ahorro de dinero si crea archivos grandes y, a continuación, los elimina.Discarding pages can save cost if you create large files and then delete them.

Nota

Es posible que RAID no pueda emitir comandos de descartar si el tamaño del fragmento de la matriz se establece en un valor inferior al predeterminado (512 kB).RAID may not issue discard commands if the chunk size for the array is set to less than the default (512KB). Esto se debe a que la granularidad de UNMAP del host también es de 512 kB.This is because the unmap granularity on the Host is also 512KB. Si ha modificado el tamaño del fragmento de la matriz a través del parámetro --chunk= de mdadm, el kernel puede pasar por alto las solicitudes de TRIM y UNMAP.If you modified the array's chunk size via mdadm's --chunk= parameter, then TRIM/unmap requests may be ignored by the kernel.

Hay dos maneras de habilitar la compatibilidad con TRIM en su máquina virtual Linux.There are two ways to enable TRIM support in your Linux VM. Como es habitual, consulte la documentación de distribución para ver el enfoque recomendado:As usual, consult your distribution for the recommended approach:

  • Use la opción de montaje discard en /etc/fstab, por ejemplo:Use the discard mount option in /etc/fstab, for example:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • En algunos casos, la opción discard podría tener afectar al rendimiento.In some cases the discard option may have performance implications. Como alternativa, puede ejecutar el comando fstrim manualmente desde la línea de comandos o agregarlo a su crontab para ejecutar con regularidad:Alternatively, you can run the fstrim command manually from the command line, or add it to your crontab to run regularly:

    UbuntuUbuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOSRHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data