Instalando drivers nativos de KVM
Cenários
Ao otimizar uma imagem privada do Linux, você precisa instalar drivers nativos de KVM no ECS.
![](https://support.huaweicloud.com/intl/pt-br/usermanual-ims/public_sys-resources/caution_3.0-pt-br.png)
Se você não instalar drivers KVM, as NIC do ECS poderão não ser detectadas e o ECS não poderá se comunicar com outros recursos.
Esta seção descreve como instalar drivers nativos de KVM.
Pré-requisitos
- Os ECSs que usam drivers Linux KVM nativos devem ter um kernel posterior à versão 2.6.24.
- Desative o seu software antivírus e de detecção de intrusão. Você pode habilitar o software após a instalação dos drivers de KVM.
Procedimento
Modifique o arquivo de configuração com base na versão do SO
SO |
Configuração |
Referência |
---|---|---|
CentOS/EulerOS |
Tomemos CentOS 7.0 como exemplo.
|
|
Ubuntu/Debian |
|
|
SUSE e openSUSE |
Se a versão do SO for anterior ao SUSE 12 SP1 ou openSUSE 13:
|
|
Se a versão do SO for o SUSE 12 SP1:
|
||
Se a versão do SO for posterior ao SUSE 12 SP1 ou openSUSE 13:
|
CentOS, EulerOS
- Execute o seguinte comando para abrir o arquivo /etc/dracut.conf
vi /etc/dracut.conf
- Pressione i para entrar no modo de edição e adicionar drivers VirtIO a add_drivers (o formato depende dos requisitos do SO).
[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" ....
- Pressione Esc, insira :wq, e pressione Enter. O sistema salva a alteração e sai do arquivo /etc/dracut.conf.
- Execute o seguinte comando para gerar novamente initrd:
dracut -f /boot/initramfs-2.6.32-573.8.1.el6.x86_64.img
Se o sistema de arquivos virtual não for o initramfs padrão, execute o comando dracut -f Nome do arquivo initramfs ou initrd realmente usado. O nome real do arquivo initramfs ou initrd pode ser obtido a partir do arquivo grub.cfg, que pode ser /boot/grub/grub.cfg, /boot/grub2/grub.cfg, ou /boot/grub/grub.conf dependendo do SO.
- Se o sistema de arquivos virtual for initramfs, execute o seguinte comando para verificar se os drivers nativos de KVM foram carregados:
lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
Se o sistema de arquivos virtual for initrd, execute o seguinte comando para verificar se os drivers nativos de KVM foram carregados:
lsinitrd /boot/initrd-`uname -r` | grep virtio
Suponha que o sistema de arquivos virtual seja initramfs. A seguinte saída do comando será exibida:
[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
Se você adicionar drivers internos ao arquivo initrd ou initramfs, o ECS não será afetado. Isso facilita a modificação dos drivers. No entanto, você não pode verificar os drivers executando o comando lsinitrd. Você pode executar o seguinte comando para verificar se os drivers são incorporados no kernel:
cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
Ubuntu e Debian
- Execute o seguinte comando para abrir o arquivo modules:
vi /etc/initramfs-tools/modules
- Pressione i para entrar no modo de edição e adicione os drivers VirtIO ao arquivo /etc/initramfs-tools/modules (o formato depende dos requisitos do SO).
[root@CTU10000xxxxx ~]#vi /etc/initramfs-tools/modules ... # Examples: # # raid1 # sd_mOd virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio
- Pressione Esc, insira :wq, e pressione Enter. O sistema salva a alteração e sai do arquivo /etc/initramfs-tools/modules.
- Execute o seguinte comando para gerar novamente o initrd:
- Execute o seguinte comando para verificar se os drivers nativos de KVM foram instalados:
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
Se você adicionar drivers internos ao arquivo initrd ou initramfs, o ECS não será afetado. Isso facilita a modificação dos drivers. No entanto, você não pode verificar os drivers executando o comando lsinitrd. Você pode executar o seguinte comando para verificar se os drivers são incorporados no 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 e openSUSE (anterior ao SUSE 12 SP1 ou openSUSE 13)
- Execute o seguinte comando para modificar o arquivo /etc/sysconfig/kernel:
vi etc/sysconfig/kernel
- Adicione drivers INITRD_MODULES="" (o formato dos drivers depende do SO).
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"
- Execute o comando mkinitrd para gerar o initrd novamente.
Se o sistema de arquivos virtual não for o initramfs ou initrd padrão, execute o comando dracut -f Nome do arquivo initramfs ou initrd realmente usado. O nome real do arquivo initramfs or initrd pode ser obtido a partir do arquivo menu.lst ou grub.cfg (/boot/grub/menu.lst, /boot/grub/grub.cfg, ou /boot/grub2/grub.cfg).
Veja a seguir um exemplo de arquivo initrd do 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 na linha initrd é o arquivo initrd realmente usado. Execute o comando dracut -f /boot/initrd.vmx. Se o arquivo initrd não contiver o diretório /boot, como /initramfs-xxx, execute o comando dracut -f /boot/initramfs-xxx.
- Execute o seguinte comando para verificar se o módulo VirtIO para KVM está carregado:
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
- Reinicie o ECS.
- Execute o seguinte comando para verificar se existem drivers KVM no 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
Se você adicionar drivers internos ao arquivo initrd ou initramfs, o ECS não será afetado. Isso facilita a modificação dos drivers. No entanto, você não pode verificar os drivers executando o comando lsinitrd. Você pode executar o seguinte comando para verificar se os drivers são incorporados no kernel:
cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y
SUSE e openSUSE (SUSE 12 SP1)
- Execute o seguinte comando para abrir o arquivo /etc/dracut.conf:
vi /etc/dracut.conf
- Pressione i para entrar no modo de edição e adicionar drivers VirtIO a add-drivers (o formato depende dos requisitos do SO).
[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"
- Pressione Esc, insira :wq e pressione Enter. O sistema salva a alteração e sai do arquivo /etc/dracut.conf.
- Execute o seguinte comando para gerar novamente o initrd:
dracut -f /boot/initramfs-File name
Se o sistema de arquivos virtual não for o initramfs padrão, execute o comando dracut -f Nome do arquivo initramfs ou initrd realmente usado. O nome real do arquivo initramfs ou initrd pode ser obtido a partir do arquivo grub.cfg, que pode ser /boot/grub/grub.cfg, /boot/grub2/grub.cfg, ou /boot/grub/grub.conf dependendo do SO.
- Se o sistema de arquivos virtual for initramfs, execute o seguinte comando para verificar se os drivers nativos de KVM foram carregados:
lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
Se o sistema de arquivos virtual for initrd, execute o seguinte comando para verificar se os drivers nativos de KVM foram carregados:
lsinitrd /boot/initrd-`uname -r` | grep virtio
SUSE e openSUSE (posterior ao SUSE 12 SP1 ou openSUSE 13)
Modifique o arquivo /etc/dracut.conf.
- Execute o seguinte comando para abrir o arquivo /etc/dracut.conf:
vi /etc/dracut.conf
- Pressione i para entrar no modo de edição e adicionar drivers VirtIO a add_drivers (o formato depende dos requisitos do SO).
[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"
- Pressione Esc, insira :wq e pressione Enter. O sistema salva a alteração e sai do arquivo /etc/dracut.conf.
- Execute o seguinte comando para gerar novamente o initrd:
dracut -f /boot/initramfs-Nome do arquivo
Se o sistema de arquivos virtual não for o initramfs padrão, execute o comando dracut -f Nome do arquivo initramfs ou initrd realmente usado. O nome real do arquivo initramfs ou initrd pode ser obtido a partir do arquivo grub.cfg, que pode ser /boot/grub/grub.cfg, /boot/grub2/grub.cfg, ou /boot/grub/grub.conf dependendo do SO.
- Se o sistema de arquivos virtual for initramfs, execute o seguinte comando para verificar se os drivers nativos de KVM foram carregados:
lsinitrd /boot/initramfs-`uname -r`.img | grep virtio
Se o sistema de arquivos virtual for initrd, execute o seguinte comando para verificar se os drivers nativos de KVM foram carregados:
lsinitrd /boot/initrd-`uname -r` | grep virtio
Suponha que o sistema de arquivos virtual é initrd. A seguinte saída do comando será exibida:
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
Se você adicionar drivers internos ao arquivo initrd ou initramfs, o ECS não será afetado. Isso facilita a modificação dos drivers. No entanto, você não pode verificar os drivers executando o comando lsinitrd. Você pode executar o seguinte comando para verificar se os drivers são incorporados no kernel:
cat /boot/config-`uname -r` | grep CONFIG_VIRTIO | grep y