LinuCレベル3 プラットフォームスペシャリスト 仮想化基盤の構築 問24
仮想化基盤の構築/仮想化技術の動作原理と最適化KVMゲストのLinuxで、virtioディスク /dev/vda に現在適用されているI/Oスケジューラ(none、mq-deadline、bfq、kyber等)を確認し、必要なら別のスケジューラへ切り替えたい。参照・書き込みするファイルとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 プラットフォームスペシャリストの出題範囲「仮想化基盤の構築」に対応。実際の試験問題ではありません)
- A/sys/block/vda/queue/nr_requests
- B/sys/block/vda/queue/read_ahead_kb
- C/sys/block/vda/queue/scheduler
- D/sys/block/vda/queue/rotational
正解:C
解説
ブロックデバイスのI/Oスケジューラは /sys/block/<デバイス>/queue/scheduler で確認・変更します。catすると選択可能なスケジューラが並び、現在適用されているものが[ ]で囲まれて表示されます。このファイルにスケジューラ名をechoで書き込むと切り替わりますが、再起動すると元に戻るため、恒久化にはudevルール等を使います。仮想マシンではホスト側でも並べ替えが行われるため、ゲスト側の選択はホストのストレージ構成と合わせて検討します。
選択肢ごとの解説
- A誤り。nr_requestsはデバイスのリクエストキューに積める要求数の上限を表すファイルで、スケジューラの種類を選ぶものではありません。
- B誤り。read_ahead_kbは先読みするデータ量(KiB)を設定するファイルで、I/Oスケジューラの選択とは別の設定です。
- C正しい。現在のスケジューラが[ ]付きで表示され、スケジューラ名を書き込むと切り替えられます。
- D誤り。rotationalはデバイスが回転型(HDD)かどうかを0/1で示すファイルで、スケジューラの確認や変更には使いません。