第12章 ストレージの概念

本章では、ストレージデバイスの記述と管理に使用される概念を紹介します。ストレージプールやボリュームなどの用語はこれに続くセクションで説明します。

12.1. ストレージプール

ストレージプール は、ゲスト仮想マシンにストレージをプロビジョニングするために libvirt によって管理されるファイル、ディレクトリー、またはストレージデバイスです。ストレージプールはローカルにすることも、ネットワーク経由で共有することもできます。ストレージプールは、管理者 (ストレージ担当管理者であることが多い) がゲスト仮想マシンで使用できるように取り分けた一定量のストレージのことです。ストレージプールは、ストレージ管理者またはシステム管理者のいずれかによってストレージボリュームに分割され、これらのボリュームはブロックデバイスとしてゲスト仮想マシンに割り当てられます。つまり、ストレージボリュームとパーティションの関係は、ストレージプールとディスクの関係に等しくなります。ストレージプールは仮想コンテナーであるものの、ストレージプールは、qemu-kvm によって許可される最大サイズ、ホスト物理マシン上のディスクのサイズという 2 つの要素によって制限されます。ストレージプールは、ホスト物理マシン上のディスクのサイズを超えることはできません。最大サイズは以下の通りです。
  • virtio-blk = 2^63 バイトまたは 8 エクサバイト (raw ファイルまたはディスクを使用)
  • Ext4 = ~ 16 TB (4 KB ブロックサイズを使用)
  • XFS = ~8 エクサバイト
  • qcow2 とホストファイルシステムはそれぞれ独自のメタデータを維持し、非常に大きなイメージサイズを使用する場合はスケーラビリティーの評価または調整を行う必要があります。raw ディスクを使用すると、スケーラビリティーや最大サイズに影響を与える可能性のある層の数が少なくなります。
libvirt では、ディレクトリーベースのストレージプール、/var/lib/libvirt/images/ ディレクトリーをデフォルトのストレージプールとして使用します。このデフォルトストレージプールは別のストレージプールに変更可能です。
  • ローカルのストレージプール - ローカルのストレージプールは直接ホスト物理マシンサーバーに割り当てられます。ローカルのストレージプールには、ローカルのディレクトリー、直接割り当てられているディスク、物理パーティション、LVM ボリュームグループなどが含まれます。これらのストレージボリュームはゲスト仮想マシンのイメージを格納しているか、または追加ストレージとしてゲスト仮想マシンに割り当てられます。ローカルのストレージプールは直接ホスト物理マシンサーバーに割り当てられるため、ゲスト仮想マシンの移行や大量のゲスト仮想マシンを必要としない小規模の導入、テスト、および開発などを目的とする場合に便利です。ローカルのストレージプールはライブマイグレーションには対応していないため、多くの実稼働環境には適していません。
  • ネットワーク接続の (共有) ストレージプール - ネットワーク接続のストレージプールには、標準のプロトコルを使ってネットワーク経由で共有するストレージデバイスが含まれます。ホスト物理マシン間での仮想マシンの移行を行なう際、virt-manager を使用する場合はネットワーク接続のストレージが必須になりますが、virsh を使用する場合はオプションになります。ネットワーク接続のストレージプールは libvirt で管理します。ネットワーク接続のストレージプールに対応するプロトコルには、以下が含まれます。
    • ファイバーチャンネルベースの LUN
    • iSCSI
    • NFS
    • GFS2
    • SCSI RDMA プロトコル (SCSI RCP) - InfiniBand アダプターと 10GbE iWARP アダプターで使用されるブロックエクスポートプロトコル

注記

マルチパスのストレージプールは完全にはサポートされていないため、作成したり、使用したりしないでください。