Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-10-09 GMT+08:00

Instalación de controladores KVM nativos

Escenarios

Al optimizar una imagen privada de Linux, debe instalar controladores KVM nativos en el ECS.

Si no instala los controladores KVM, es posible que no se detecten las NIC del ECS y que el ECS no se pueda comunicar con otros recursos.

Esta sección describe cómo instalar controladores KVM nativos.

Prerrequisitos

  • ECSs que usa controladores KVM nativos de Linux deben tener un núcleo posterior que la versión 2.6.24.
  • Deshabilite su antivirus y software de detección de intrusos. Puede activar el software después de instalar los controladores KVM.

Procedimiento

Modifique el archivo de configuración basado en la versión del sistema operativo.

Tabla 1 Modificación de archivos de configuración para diferentes sistemas operativos

Sistema operativo

Configuración

Referencia

CentOS/EulerOS

Tome CentOS 7.0 como ejemplo.

  1. En el archivo /etc/dracut.conf, agregue controladores VirtIO a add_drivers, incluidos virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring y virtio. Separe los nombres de los controladores con espacios.
  2. Guarde y salga del archivo /etc/dracut.conf y ejecute el comando dracut -f para generar initrd de nuevo.

CentOS, EulerOS,

Ubuntu/Debian

  1. En el archivo /etc/initramfs-tools/modules, agregue controladores VirtIO, incluyendo virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring, y virtio. Separe los nombres de los controladores con espacios.
  2. Guarde y salga del archivo /etc/initramfs-tools/modules y ejecute el comando update-initramfs -u para generar initrd de nuevo.

Ubuntu y Debian

SUSE y openSUSE

Si la versión del sistema operativo es anterior a SUSE 12 SP1 o openSUSE 13:

  1. En el archivo /etc/sysconfig/kernel, agregue los controladores VirtIO a INITRD_MODULES="". Los controladores de VirtIO incluyen virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring y virtio. Separe los nombres de los controladores con espacios.
  2. Ejecute el comando mkinitrd para generar initrd de nuevo.

SUSE y openSUSE (anteriores a SUSE 12 SP1 o openSUSE 13)

Si la versión del sistema operativo es SUSE 12 SP1:

  1. En el archivo /etc/dracut.conf, agregue los controladores VirtIO a add_drivers. Los controladores de VirtIO incluyen virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring y virtio. Separe los nombres de los controladores con espacios.
  2. Ejecute el comando dracut -f para generar initrd de nuevo.

SUSE y openSUSE (SUSE 12 SP1)

Si la versión del sistema operativo es posterior a SUSE 12 SP1 o openSUSE 13:

  1. En el archivo /etc/dracut.conf, agregue los controladores VirtIO a add_drivers. Los controladores de VirtIO incluyen virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring y virtio. Separe los nombres de los controladores con espacios.
  2. Guarde y salga del archivo /etc/dracut.conf y ejecute el comando dracut -f para generar initrd de nuevo.

SUSE y openSUSE (posteriores a SUSE 12 SP1 o openSUSE 13)

CentOS, EulerOS,

  1. Ejecute el siguiente comando para abrir el archivo /etc/dracut.conf:

    vi /etc/dracut.conf

  2. Pulse i para entrar en el modo de edición y agregar controladores VirtIO a add_drivers (el formato depende de los requisitos del sistema operativo).
    [root@CTU10000xxxxx ~]# vi /etc/dracut.conf 
    # additional kernel modules to the default 
    add_drivers+="virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio" 
    ....
  3. Pulse Esc, escriba :wq y pulse Enter. El sistema guarda el cambio y sale del archivo /etc/dracut.conf.
  4. Ejecute el siguiente comando para regenerar initrd:

    dracut -f /boot/initramfs-2.6.32-573.8.1.el6.x86_64.img

    Si el sistema de archivos virtual no es el initramfs predeterminado, ejecute el comando dracut -f Name of the initramfs or initrd file actually used. El nombre real del archivo initramfs o initrd se puede obtener del archivo grub.cfg, que puede ser /boot/grub/grub.cfg, /boot/grub2/grub.cfg, o /boot/grub/grub.conf dependiendo del sistema operativo.

  5. Si el sistema de archivos virtual es initramfs, ejecute el siguiente comando para comprobar si se han cargado los controladores KVM nativos:

    lsinitrd /boot/initramfs-`uname -r`.img | grep virtio

    Si el sistema de archivos virtual es initrd, ejecute el siguiente comando para comprobar si se han cargado los controladores KVM nativos:

    lsinitrd /boot/initrd-`uname -r` | grep virtio

    Supongamos que el sistema de archivos virtual es initramfs. Se mostrará el siguiente resultado del comando:

    [root@CTU10000xxxxx home]# lsinitrd /boot/initramfs-`uname -r`.img | grep virtio 
    -rwxr--r--   1 root     root        23448 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/block/virtio_blk.ko 
    -rwxr--r--   1 root     root        50704 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/net/virtio_net.ko 
    -rwxr--r--   1 root     root        28424 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/scsi/virtio_scsi.ko 
    drwxr-xr-x   2 root     root            0 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio 
    -rwxr--r--   1 root     root        14544 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio.ko 
    -rwxr--r--   1 root     root        21040 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko 
    -rwxr--r--   1 root     root        18016 Jul 16 17:53 lib/modules/2.6.32-573.8.1.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko

    Si agrega controladores integrados al archivo initrd o initramfs, ECS no se verá afectado. Esto facilita la modificación de los controladores. Sin embargo, no puede comprobar los controladores ejecutando el comando lsinitrd. Puede ejecutar el siguiente comando para comprobar si los controladores son integrados en el kernel:

    cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y

Ubuntu y Debian

  1. Ejecute el siguiente comando para abrir el archivo de module:

    vi /etc/initramfs-tools/modules

  2. Presione i para entrar en el modo de edición y agregue los controladores VirtIO al archivo /etc/initramfs-tools/modules (el formato depende de los requisitos del sistema operativo).
    [root@CTU10000xxxxx ~]#vi /etc/initramfs-tools/modules 
    ...
    # Examples: 
    # 
    # raid1 
    # sd_mOd 
    virtio_blk
    virtio_scsi
    virtio_net
    virtio_pci
    virtio_ring
    virtio
  3. Pulse Esc, escriba :wq y pulse Enter. El sistema guarda el cambio y sale del archivo /etc/initramfs-tools/modules.
  4. Ejecute el siguiente comando para regenerar initrd:

    update-initramfs -u

  5. Ejecute el siguiente comando para comprobar si se han instalado los controladores KVM nativos:

    lsinitramfs /boot/initrd.img-`uname -r` |grep virtio

    [root@ CTU10000xxxxx home]# lsinitramfs /boot/initrd.img-`uname -r` |grep virtio 
    lib/modules/3.5.0-23-generic/kernel/drivers/scsi/virtio_scsi.ko

    Si agrega controladores integrados al archivo initrd o initramfs, ECS no se verá afectado. Esto facilita la modificación de los controladores. Sin embargo, no puede comprobar los controladores ejecutando el comando lsinitrd. Puede ejecutar el siguiente comando para comprobar si los controladores son integrados en el kernel:

    [root@ CTU10000xxxxx home]# cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
    CONFIG_VIRTIO_BLK=y
    CONFIG_VIRTIO_NET=y
    CONFIG_VIRTIO=y
    CONFIG_VIRTIO_RING=y
    CONFIG_VIRTIO_PCI=y
    CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y

SUSE y openSUSE (anteriores a SUSE 12 SP1 o openSUSE 13)

Modifique el archivo /etc/sysconfig/kernel.
  1. Ejecute el siguiente comando para modificar el archivo /etc/sysconfig/kernel:

    vi etc/sysconfig/kernel

  2. Agregue controladores VirtIO a INITRD_MODULES="" (el formato de los controladores depende del sistema operativo).
    SIA10000xxxxx:~ # vi /etc/sysconfig/kernel 
    # (like drivers for scsi-controllers, for lvm or reiserfs)
    #
    INITRD_MODULES="ata_piix ata_generic virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
  3. Ejecute el comando mkinitrd para generar initrd de nuevo.

    Si el sistema de archivos virtual no es el initramfs o initrd predeterminado, ejecute el comando dracut -f Name of the initramfs or initrd file actually used. El nombre real del archivo initramfs o initrd se puede obtener del archivo menu.lst o grub.cfg (/boot/grub/menu.lst, /boot/grub/grub.cfg, o /boot/grub2/grub.cfg).

    A continuación se muestra un archivo initrd de ejemplo de SUSE 11 SP4:

    default 0 
    timeout 10 
    gfxmenu (hd0,0)/boot/message 
    title sles11sp4_001_[_VMX_] 
    root (hd0,0) 
    kernel /boot/linux.vmx vga=0x314 splash=silent console=ttyS0,115200n8 console=tty0 net.ifnames=0 NON_PERSISTENT_DEVICE_NAMES=1 showopts 
    initrd /boot/initrd.vmx 
    title Failsafe_sles11sp4_001_[_VMX_] 
    root (hd0,0) 
    kernel /boot/linux.vmx vga=0x314 splash=silent ide=nodma apm=off noresume edd=off powersaved=off nohz=off highres=off processsor.max+cstate=1 nomodeset x11failsafe console=ttyS0,115200n8 console=tty0 net.ifnames=0 NON_PERSISTENT_DEVICE_NAMES=1 showopts 
    initrd /boot/initrd.vmx

    /boot/initrd.vmx en la línea initrd es el archivo initrd que realmente se usa. Ejecute el comando dracut -f /boot/initrd.vmx. Si el archivo initrd no contiene el directorio /boot, como /initramfs-xxx, ejecute el comando dracut -f /boot/initramfs-xxx.

  4. Ejecute el siguiente comando para comprobar si el módulo VirtIO para KVM está cargado:
    lsinitrd /boot/initrd-`uname -r` | grep virtio
    SIA10000xxxxx:~ # lsinitrd /boot/initrd-`uname -r` | grep virtio
    -rwxr--r-- 1 root root 19248 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/scsi/virtio_scsi.ko
    -rwxr--r-- 1 root root 23856 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/block/virtio_blk.ko
    drwxr-xr-x 2 root root 0 Jul 12 14:53 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio
    -rwxr--r-- 1 root root 15848 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko
    -rwxr--r-- 1 root root 20008 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko
    -rwxr--r-- 1 root root 12272 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio.ko
    -rwxr--r-- 1 root root 38208 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/virtio_net.ko
  5. Reinicie el ECS.
  6. Ejecute el siguiente comando para comprobar si existen controladores KVM en initrd:

    lsinitrd /boot/initrd-`uname -r` | grep virtio

    SIA10000xxxxx:~ # lsinitrd /boot/initrd-`uname -r` | grep virtio
    -rwxr--r-- 1 root root 19248 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/scsi/virtio_scsi.ko
    -rwxr--r-- 1 root root 23856 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/block/virtio_blk.ko
    drwxr-xr-x 2 root root 0 Jul 12 14:53 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio
    -rwxr--r-- 1 root root 15848 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_ring.ko
    -rwxr--r-- 1 root root 20008 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio_pci.ko
    -rwxr--r-- 1 root root 12272 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/virtio/virtio.ko
    -rwxr--r-- 1 root root 38208 Jun 22 2012 lib/modules/2.6.32-279.el6.x86_64/kernel/drivers/net/virtio_net.ko

    Si agrega controladores integrados al archivo initrd o initramfs, ECS no se verá afectado. Esto facilita la modificación de los controladores. Sin embargo, no puede comprobar los controladores ejecutando el comando lsinitrd. Puede ejecutar el siguiente comando para comprobar si los controladores son integrados en el kernel:

    cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y

SUSE y openSUSE (SUSE 12 SP1)

Modifique el archivo /etc/dracut.conf.
  1. Ejecute el siguiente comando para abrir el archivo /etc/dracut.conf:

    vi /etc/dracut.conf

  2. Pulse i para entrar en el modo de edición y agregar controladores VirtIO a add-drivers (el formato depende de los requisitos del sistema operativo).
    [root@CTU10000xxxxx ~]# vi /etc/dracut.conf 
    # additional kernel modules to the default
    add_drivers+="ata_piix ata_generic virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
  3. Pulse Esc, escriba :wq y pulse Enter. El sistema guarda el cambio y sale del archivo /etc/dracut.conf.
  4. Ejecute el siguiente comando para regenerar initrd:

    dracut -f /boot/initramfs-File name

    Si el sistema de archivos virtual no es el initramfs predeterminado, ejecute el comando dracut -f Name of the initramfs or initrd file actually used. El nombre real del archivo initramfs o initrd se puede obtener del archivo grub.cfg, que puede ser /boot/grub/grub.cfg, /boot/grub2/grub.cfg, o /boot/grub/grub.conf dependiendo del sistema operativo.

  5. Si el sistema de archivos virtual es initramfs, ejecute el siguiente comando para comprobar si se han cargado los controladores KVM nativos:

    lsinitrd /boot/initramfs-`uname -r`.img | grep virtio

    Si el sistema de archivos virtual es initrd, ejecute el siguiente comando para comprobar si se han cargado los controladores KVM nativos:

    lsinitrd /boot/initrd-`uname -r` | grep virtio

SUSE y openSUSE (posteriores a SUSE 12 SP1 o openSUSE 13)

Modifique el archivo /etc/dracut.conf.

Tome SUSE Linux Enterprise Server 12 SP2 (x86_64) como ejemplo.
  1. Ejecute el siguiente comando para abrir el archivo /etc/dracut.conf:

    vi /etc/dracut.conf

  2. Pulse i para entrar en el modo de edición y agregar controladores VirtIO a add_drivers (el formato depende de los requisitos del sistema operativo).
    [root@CTU10000xxxxx ~]# vi /etc/dracut.conf 
    # additional kernel modules to the default
    add_drivers+="ata_piix ata_generic virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
  3. Pulse Esc, escriba :wq y pulse Enter. El sistema guarda el cambio y sale del archivo /etc/dracut.conf.
  4. Ejecute el siguiente comando para regenerar initrd:

    dracut -f /boot/initramfs-File name

    Si el sistema de archivos virtual no es el initramfs predeterminado, ejecute el comando dracut -f Name of the initramfs or initrd file actually used. El nombre real del archivo initramfs o initrd se puede obtener del archivo grub.cfg, que puede ser /boot/grub/grub.cfg, /boot/grub2/grub.cfg, o /boot/grub/grub.conf dependiendo del sistema operativo.

  5. Si el sistema de archivos virtual es initramfs, ejecute el siguiente comando para comprobar si se han cargado los controladores KVM nativos:

    lsinitrd /boot/initramfs-`uname -r`.img | grep virtio

    Si el sistema de archivos virtual es initrd, ejecute el siguiente comando para comprobar si se han cargado los controladores KVM nativos:

    lsinitrd /boot/initrd-`uname -r` | grep virtio

    Supongamos que el sistema de archivos virtual es initrd. Se mostrará el siguiente resultado del comando:

    sluo-ecs-30dc:~ # lsinitrd /boot/initrd-`uname -r` | grep virtio
    -rw-r--r-- 1 root root 29335 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/block/virtio_blk.ko
    -rw-r--r-- 1 root root 57007 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/net/virtio_net.ko
    -rw-r--r-- 1 root root 32415 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/scsi/virtio_scsi.ko
    drwxr-xr-x 2 root root 0 Sep 28 10:21 lib/modules/4.4.21-69-default/kernel/drivers/virtio
    -rw-r--r-- 1 root root 19623 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/virtio/virtio.ko
    -rw-r--r-- 1 root root 38943 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/virtio/virtio_pci.ko
    -rw-r--r-- 1 root root 24431 Oct 26 2016 lib/modules/4.4.21-69-default/kernel/drivers/virtio/virtio_ring.ko

    Si agrega controladores integrados al archivo initrd o initramfs, ECS no se verá afectado. Esto facilita la modificación de los controladores. Sin embargo, no puede comprobar los controladores ejecutando el comando lsinitrd. Puede ejecutar el siguiente comando para comprobar si los controladores son integrados en el kernel:

    cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y