Vagrant上でubuntu/xenial32, ubuntu/xenial64が動作しない(続)

前回の記事の続き.trustyと同レベルには解決した.

環境(再掲)

Host:

Guest:

症状(再掲)

Vagrantubuntu/xenial64(あるいはubuntu/xenial32)を起動すると

  • 起動後まもなく,root filesystemがread-onlyになる
  • 動いている間も動作が遅い

ログファイルを見ると,次のようなメッセージが得られた.

  • sd 2:0:0:0: [sda] tag#7 Medium access timeout failure. Offlining disk!
  • sd 2:0:0:0: rejecting I/O to offline device
  • Buffer I/O error on device
  • Buffer I/O error on device sda1, logical block 249088

ubuntu/trusty64などではこの症状は発生しない.

原因

ディスクコントローラの「ホストのIOキャッシュを使う」が無効になっているためである.

  • ubuntu/trusty64に対して,この設定を無効化した所,症状が再現した.
  • 逆にubuntu/xenial64に対して,この設定を有効化した所,症状が発生しなくなった.

ホストのIOキャッシュを無効にするとストレージとの通信が高確率で失敗するということになるため,やはりVirtualBoxにはバグがあると考えられるが,vagrant上でubuntu/xenial64を安定して利用するという目的はとりあえずこれで達成できる.

解決策

起動時の設定でhostiocacheを有効にする.Vagrantfileに以下の設定を追加する.

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["storagectl", :id, "--name", "SCSI Controller", "--hostiocache", "on"]
  end