Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
コンテンツコンテンツ
仮想化ガイド
  1. 前書き
  2. I 概要
    1. 1 仮想化技術
    2. 2 仮想化シナリオ
    3. 3 Xen 仮想化の紹介
    4. 4 KVM 仮想化の紹介
    5. 5 仮想化ツール
    6. 6 仮想化コンポーネントのインストール
  3. II libvirt を利用した仮想マシンの管理
    1. 7 libvirt デーモン
    2. 8 VM ホストサーバ の準備
    3. 9 ゲストのインストール
    4. 10 基本的な VM ゲスト の管理
    5. 11 接続と認可
    6. 12 高度なストレージ設定
    7. 13 仮想マシンマネージャ を利用した仮想マシンの設定
    8. 14 virsh を利用した仮想マシンの設定
    9. 15 AMD SEV-SNP による仮想マシンのセキュリティ強化
    10. 16 VM ゲスト の移行
    11. 17 Xen から KVM への移行ガイド
  4. III 全ハイパーバイザ共通の機能
    1. 18 ディスクのキャッシュモード
    2. 19 VM ゲスト の時刻設定
    3. 20 libguestfs
    4. 21 QEMU ゲストエージェント
    5. 22 ソフトウエア TPM エミュレータ
    6. 23 VM ゲスト に対するクラッシュダンプの作成
  5. IV Xen を利用した仮想マシンの管理
    1. 24 仮想マシンホストの設定
    2. 25 仮想ネットワーク
    3. 26 仮想環境の管理
    4. 27 Xen 内でのブロックデバイス
    5. 28 仮想化: オプション設定
    6. 29 管理作業
    7. 30 XenStore: ドメイン間で共有される設定データベース
    8. 31 Xen の高可用性仮想化ホストとしての使用
    9. 32 Xen: 準仮想化 (PV) ゲストから完全仮想化 (FV/HVM) ゲストへの変換
  6. V QEMU を利用した仮想マシンの管理
    1. 33 QEMU の概要
    2. 34 KVM VM ホストサーバ の構築
    3. 35 ゲストのインストール
    4. 36 qemu-system-ARCH を利用した仮想マシンの実行
    5. 37 QEMU モニタを利用した仮想マシンの管理
  7. VI トラブルシューティング
    1. 38 内蔵ヘルプとパッケージのドキュメンテーション
    2. 39 システム情報とログの収集
  8. 用語集
  9. A NVIDIA カードに対する GPU パススルー の設定
  10. B GNU ライセンス
ナビゲーション
適用先 openSUSE Leap 15.7

18 ディスクのキャッシュモード Edit source

18.1 ディスクキャッシュとは Edit source

ディスクキャッシュは、ハードディスクとの間での読み込みや書き込みの速度を向上させるために使用するメモリです。物理的なハードディスクの場合は標準機能としてディスクキャッシュが存在しますが、仮想ディスクの場合は VM ホストサーバ のメモリを使用することになりますので、種類などを設定して細かい調整を行うことができるようになっています。

18.2 ディスクキャッシュの動作 Edit source

通常、ディスクキャッシュは最もよく使用されるプログラムやデータを保持します。ユーザやプログラムがデータを要求すると、オペレーティングシステムは最初にディスクキャッシュ内を検索し、そこにデータがあれば、ディスクから読み込み直すことなくデータを渡すことができるようになっています。

キャッシュの仕組み
図 18.1: キャッシュの仕組み

18.3 ディスクキャッシュの利点 Edit source

仮想ディスクデバイスのキャッシュを行うことで、ゲストマシンの性能を全体的に向上させることができます。キャッシュモードとディスクイメージ形式、そしてストレージサブシステムの組み合わせを最適化して、性能を向上させてください。

18.4 ディスクのキャッシュモード Edit source

キャッシュモードを指定しない場合、既定では writeback が使用されます。それぞれのゲストディスクに対しては、下記のいずれかのキャッシュモードを設定することができます:

writeback

writeback はホスト側のページキャッシュを使用するための設定です。ゲスト側からの書き込み要求は、ホスト側のキャッシュに配置された時点で完了とみなされます。あとはキャッシュ管理の仕組みによって、実際のストレージに書き込みを行います。ゲスト側の仮想ストレージアダプタに対しては ライトバック キャッシュが存在しているものとして通知するため、ゲスト側からはデータの一貫性を確保するために、必要に応じてフラッシュ (キャッシュの清掃) コマンドが送られるようになります。

writethrough

書き込み処理は、ストレージデバイスへのデータ書き込みをもって完了とみなします。ゲスト側の仮想ストレージアダプタに対しては ライトバック キャッシュが存在していないものとして通知されるため、ゲスト側からはフラッシュ (キャッシュの清掃) コマンドは送られません。

none

ホスト側のキャッシュを迂回し、ハイパーバイザとストレージデバイスとの間で読み込みおよび書き込みを直接行うようになります。実際のストレージデバイスでは、書き込みキュー内にのみデータを保存した時点で完了とみなすものも存在することから、ゲスト側の仮想ストレージアダプタに対しては ライトバック キャッシュが存在しているものとして通知します。このモードはホスト側のディスクに直接アクセスするのと同じ動作になります。

unsafe

writeback モードと似たような動作になりますが、ゲスト側からの全てのフラッシュ (キャッシュの清掃) コマンドは無視されます。このモードを使用すると性能が向上する代わりに、ホスト側で障害が発生した際にデータ損失が発生する可能性があります。このモードはゲストのインストール時に便利な仕組みであり、本番環境での使用には適しません。

directsync

ゲスト側への書き込み完了はストレージデバイスへの書き込み完了まで待機させられ、ホスト側のキャッシュは迂回するようになります。 writethrough モードと同様に、このモードはフラッシュ (キャッシュの清掃) コマンドを送信しないゲストに対して有用です。

18.5 キャッシュモードとデータの一貫性 Edit source

writethrough, none, directsync

これらのモードは、ゲスト側のオペレーティングシステムから必要に応じてフラッシュ (キャッシュの清掃) コマンドを受信するため、最も安全な選択肢として用意されています。安全ではないゲストや不安定なゲストをお使いの場合は、 writethough または directsync をお使いください。

writeback

このモードはゲスト側に対して書き込みキャッシュの存在を通知するため、ゲスト側からは必要に応じてフラッシュ (キャッシュの清掃) コマンドを送ってもらう必要があります。このモードは、ゲスト側から書き込み完了を受け取ったあと、ホスト側でディスクへの書き込みが完了するまでに時間的な遅延を生じさせる設定であることから、データ損失の可能性がありうることになります。

unsafe

このモードは writeback 方式に似ていますが、ゲスト側からのフラッシュ (キャッシュの清掃) コマンドは全て無視されます。そのため、ホスト側の障害発生時、データ損失の危険性があることになります。

18.6 キャッシュモードとライブマイグレーションの関係 Edit source

ストレージデータのキャッシュは、ライブマイグレーションに対応する際には障害となりうるものです。現時点では、ライブマイグレーションを行うには raw , qcow2 のいずれかのイメージ形式を使用する必要があります。クラスタ型のファイルシステムを使用している場合は、全てのキャッシュモードでライブマイグレーションを行うことができます。それ以外の場合、読み書き可能な共有ストレージで使用できるキャッシュモードは none のみとなります。

libvirt の管理レイヤには、いくつかの要素をベースにした移行の互換性チェック機能が含まれています。ゲスト側のストレージがクラスタ型のファイルシステム内に存在している場合、それが読み込み専用か共有可能としてマークされていれば、移行が許可されるかどうかの判断ではキャッシュモードを考慮しなくなります。それ以外の場合、 libvirt ではキャッシュモードが none に設定されていない限り、移行を拒否するようになっています。ただし、移行時に --unsafe オプションを指定することで、この制限を無視することができます。 virsh を利用して移行する場合は、下記のようにします:

> virsh migrate --live --unsafe
ヒント
ヒント

AIO モード設定が native の場合、キャッシュモードを none に設定する必要があります。それ以外のキャッシュモードを使用している場合、 AIO モードは自動的に既定値である threads に切り戻されます。

このページを印刷