ま、そんなところで。

ニッチな技術系メモとか、車輪を再発明してみたりとか.

VirtualBox上のLinuxOSの動作がとても遅い場合に試す設定のメモ

VirtualBox上でLinuxOSを動作させる場合、動作が非常に遅くなるケースがあります.
このような場合に行う設定のメモ.

1. VirtualBoxストレージのディスクコントローラの確認

VirtualBoxストレージのディスクコントローラ、「ホストのI/Oキャッシュを使う」オプションがOFFになっていないか確認.
OFFになっているようだったら、ONにする.

ホストのI/Oキャッシュを使う

2. I/O スケジューラの変更

仮想マシン側とホスト側でI/Oスケジューラが動いていると、仮想マシン側は2重にスケジューリングされるので、当然I/Oのパフォーマンスは落ちてしまいます.
仮想マシン側のI/OスケジューリングをOFFにしてホスト側のスケジューリングに便乗するようにすると、パフォーマンスの改善が見込めます.

① udevルールを作成

/etc/udev/rules.d/50-ioschedulers.rules を作成.
(※ ruleの優先度を決めるファイル先頭の数値は必要に応じて適当な値にすること)

② ruleの設定

ruleの内容は以下のように設定すると、起動時にスケジューラをnoneに設定してくれる.

# i/o schedulerを仮想マシン用に"none"にする.
# ※ KERNEL==は物理ディスクデバイス. 以下設定では /dev/sda〜/dev/sdz を指す.
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}="0", ATTR{queue/scheduler}="none"

**③ 確認

再起動後、none にカッコがついていれば設定できています.

# ASM_DISK = デバイス名. 確認したいディスクデバイス sda...sdz を指定.
# cat /sys/block/${ASM_DISK}/queue/scheduler
sudo -E cat /sys/block/sda/queue/scheduler
[none] mq-deadline 

3. VirtiaoBox Guest Additionsをインストール

Guest Additionsのインストールでも仮想マシンのパフォーマンスUpが見込めます.

3-1. 前準備

GuestOS側で必要なソフトをインストールする

sudo apt install build-essential
# ※ non-LTSの場合.
sudo apt install linux-headers-generic 
# ※ LTSの場合. xx-yyはubuntuのLTSバージョン 20.04, 22.04.. etc
sudo apt install linux-headers-generic-hwe-{xx-yy}

3-2. Guest Additionsのインストール

①メディアを挿入する

guest additions CD の挿入

仮想マシン側で挿入された仮想ディスクをマウントする

# /mnt直下にdvd用のマウントポイントとなるディレクトリ作成
sudo mkdir -p /mnt/dvd
# Guest Additionsのディスクを/mnt/dvdへマウント
sudo mount /dev/dvd /mnt/dvd
/mnt/dvd: WARNING: device write-protected, mounted read-only.d

※ /dev/dvd もしくは /dev/cdrom がない場合、/media/{UserName}/以下にディスクがマウントされていないか確認

③ディスク内のVBoxLinuxAdditions.runを実行する

sudo /mnt/dvd/VBoxLinuxAdditions.run

仮想マシンを再起動

仮想マシンを再起動します.

sudo shutdown -r now

参考サイト