Eles se parecem com erros genéricos de tempo limite do disco rígido no sistema convidado. Eles podem ser causados pelo ZFS, mas também podem ser causados por outras operações de E / S altas. Como sistema convidado, o Linux é bastante sensível a esse respeito, pois tem um tempo limite baixo (geralmente 30 segundos). Isso pode não ser suficiente em uma VM, especialmente se a imagem do disco for um arquivo regular e o sistema host estiver sob carga; algumas gravações podem demorar mais do que o esperado se o cache do host estiver cheio.
Ou, para citar o manual do VirtualBox :
However, some guests (e.g. some Linux versions) have severe problems if a write to an image file takes longer than about 15 seconds. Some file systems however require more than a minute to complete a single write, if the host cache contains a large amount of data that needs to be written.
Observe que isso não está limitado ao VirtualBox. Outras soluções de virtualização podem mostrar o mesmo comportamento ao executar um convidado Linux.
Quanto ao tempo limite em si: O tempo limite do hdd do Linux (levando a exceções de ata e possivelmente corrupção sob alta carga) pode ser aumentado no sistema convidado.
Por exemplo, no Debian 7, tudo o que você precisa fazer é adicionar algumas linhas ao seu /etc/rc.local
:
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
TIMEOUT=86400
for f in /sys/block/sd?/device/timeout; do
echo $TIMEOUT >"$f"
done
exit 0
Em seguida, grep para exceções de ata para ver se eles sumiram:
# grep -Rn --col 'ata.*exception' /var/log/
No entanto, seria preferível aumentar o desempenho do disco da vm em vez de ter que alterar o tempo limite do sistema convidado. No caso do VirtualBox, o " Cache de E / S do Host " do controlador de armazenamento virtual da vm pode ser desativado. Se ativado, o cache do host pode ser o gargalo e diminuir as operações de disco se houver muita E / S de disco no host. Por outro lado, desabilitá-lo pode aumentar a carga na própria VM, para que os tempos limites ainda possam ocorrer se o convidado estiver sobrecarregado, portanto, ativar o cache do host pode até ser melhor em alguns casos, dependendo de sua carga de trabalho.
Se isso não ajudar, o manual do VirtualBox também recomenda a experimentação do intervalo de flush:
For IDE disks use the following command:
VBoxManage setextradata "VM name"
"VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/FlushInterval" [b]
For SATA disks use the following command:
VBoxManage setextradata "VM name"
"VBoxInternal/Devices/ahci/0/LUN#[x]/Config/FlushInterval" [b]
Values between 1000000 and 10000000 (1 to 10 megabytes) are a good starting point. Decreasing the interval both decreases the probability of the problem and the write performance of the guest.
Em alguns testes, os sistemas convidados do VirtualBox experimentaram esses tempos limite de disco rígido (travar a VM e / ou causar corrupção), não importando se o cache de E / S do host estava habilitado ou não. O sistema de arquivos do host não era lento, exceto por meio minuto, sempre que uma tarefa cron planejada fosse executada, causando esses tempos limites na VM. Foi só depois de definir o tempo limite do disco rígido como descrito acima que o problema desapareceu e não ocorreram mais tempos limite.