GNU/Linux >> Linux の 問題 >  >> Linux

KVMLibvirtのデフォルトのストレージプールの場所を変更する方法

このガイドでは、Libvirtのストレージプールとボリュームとは何か、および Virshを使用してKVMlibvirtのデフォルトのストレージプールの場所を変更する方法について説明します。 プログラム、 Virt-manager およびコックピット Linuxの場合。

Libvirtのストレージプールとボリューム

Libvirtは、ストレージプールとボリュームを介してKVMホストシステムのストレージ管理を提供します。

ストレージプールは、仮想マシンで使用するためにKVMホストに割り当てられたストレージの量です。ストレージプールはストレージボリュームに分割され、ブロックデバイスとしてVMに割り当てられます。

つまり、ストレージプールは、ボリュームの保存に使用できるKVMホストシステム上のストレージリソースです。また、ストレージボリュームは、仮想マシンに割り当てることができるストレージデバイスです。

ストレージボリュームは、パーティション、論理ボリューム、ファイルなどのブロックデバイスにすることができます。仮想ハードディスク、cd / dvd /フロッピーデバイス、およびゲストマシンに接続されたISOイメージは、ストレージボリュームの例です。

ストレージプールなしでストレージボリュームを持つことはできません。まず、ストレージプールを作成してから、プール内にストレージボリュームを作成する必要があります。

デフォルトでは、libvirtで作成されたすべての仮想マシンは、/var/lib/libvirt/images/ 位置。これは、LibvirtVMイメージのデフォルトのストレージプールです。

ストレージプールの種類

ストレージプールは、次のいずれかのタイプになります。

  1. ディレクトリプール-画像ファイルをホストするためのプールとしてディレクトリを使用します。ファイルは、raw、qcow、qcow2、dmg、vmdk、vpc、ISOイメージなどの有効なボリュームフォーマットタイプのいずれかです。
  2. ファイルシステムプール-既存のマウントされたファイルシステムのディレクトリを使用する代わりに、ブロックデバイス(パーティションやLVMグループなど)をプールとして使用します。
  3. ネットワークファイルシステムプール-ネットワークファイルシステムを使用します(例:cifsglusterfsnfs など)ストレージボリュームを格納するためのプールとして。ディレクトリやブロックデバイスの代わりに、ネットワークホストと共有ディレクトリのパスが必要です。
  4. 論理ボリュームプール-ボリュームを保存するためのプールとしてLVMボリュームグループを使用します。
  5. ディスクプール-物理ディスクをプールとして使用します。ボリュームは、ディスクにパーティションを追加することで作成できます。
  6. iSCSIプール-iSCSIターゲットを使用してボリュームを保存します。すべてのボリュームは、iSCSIサーバーに事前に割り当てられている必要があります。
  7. iSCSI直接プール-これはiSCSIプールのバリアントです。 iscsiadmを使用する代わりに、libiscsiを使用します 。ホスト、ターゲットIQNであるパス、およびイニシエーターIQNが必要です。
  8. SCSIプール-iSCSIターゲットとほぼ同じ方法でSCSIホストバスアダプタを使用します。
  9. マルチパスプール-現在、マルチパスはサポートされていません。
  10. RBDプール-このストレージドライバーは、RADOSプール内のすべてのRBDイメージを含むプールを提供します。 RBD(RADOS Block Device)は、Ceph分散ストレージプロジェクトの一部です。
  11. Sheepdogプール-ボリュームを保存するためのプールとしてSheepdogClusterを使用します。
  12. Glusterプール-Gluster分散ファイルシステムをプールとして使用します。
  13. ZFSプール-ZFSファイルシステムをプールとして使用します。
  14. Vstorageプール-Virtuozzo分散ソフトウェア定義ストレージをプールとして使用します。

このガイドでは、Directory poolを使用します

1。 KVMLibvirtのデフォルトのストレージプールの場所を変更する

すでに述べたように、すべてのKVM/Libvirtイメージは/var/lib/libvirt/images/に保存されます デフォルトでは場所。この場所はrootfsにあるため パーティションの場合は、$HOMEなどの他の場所に移動することをお勧めします。 ディレクトリ。

virshを使用して、KVMLibvirtVMイメージのデフォルトの場所を変更できます。 コマンドラインプログラムと、 Virt-managerと呼ばれるそのグラフィカルフロントエンド 、およびコックピット Webコンソール。

まず、virshを使用してLibvirtのデフォルトのストレージプールパスを変更する方法を説明します。 プログラム。

1.1。 virshプログラムを使用してKVMLibvirtのデフォルトのストレージプールの場所を変更する

1.1.1。 KVMホストシステムにログインし、実行中のすべてのゲストの電源を切ります。

実行中のVMのリストを見つけるには、次のようにします。

$ virsh list --all

実行中のVMがある場合はシャットダウンします。

$ virsh shutdown

1.1.2。 KVMホストマシンで構成されているすべてのストレージプールを一覧表示します:

$ virsh pool-list 

出力例:

 Name      State    Autostart
 default   active   no

ご覧のとおり、ストレージプールはdefaultの1つだけです。 。 kvm/libvirtをインストールすると自動的に作成されます 。

1.1.3。 コマンドを使用して、デフォルトのストレージプールの詳細を表示しましょう:

$ virsh pool-info default 

出力例:

 Name:           default
 UUID:           76f47a3c-7656-4c34-9ab5-c87e5136d532
 State:          running
 Persistent:     yes
 Autostart:      no
 Capacity:       369.22 GiB
 Allocation:     65.60 GiB
 Available:      303.62 GiB

上記の出力には、ストレージプールの名前、UUID、状態、永続性、自動起動、容量、ストレージプールの割り当て済みスペース、残りの使用可能なスペースなどの詳細が一覧表示されます。

ストレージプールのパスを変更するので、それも見つける必要があります。

1.1.4。 デフォルトのストレージプールのパスを表示するには、 grepを使用します virshを使用したコマンド 以下のように:

$ virsh pool-dumpxml default | grep -i path

出力例:

<path>/var/lib/libvirt/images</path>

上記の出力にあるように、デフォルトのストレージプールは/var/lib/libvirt/images/です。 。以降の手順で変更します。

1.1.5。 virshを使用して、デフォルトのストレージプールに保存されている既存のVMイメージをすべて一覧表示します 以下のように:

$ virsh vol-list default | grep "/var/lib/libvirt/images/"

出力例:

archlinux.img   /var/lib/libvirt/images/archlinux.img

デフォルトのストレージプールに1つのArchLinux仮想マシンイメージがあります。

1.1.6。 次のコマンドを使用して、デフォルトのストレージプールを停止し、定義を解除します。

$ virsh pool-destroy default
$ virsh pool-undefine default

1.1.7。 コマンドを使用してデフォルトのストレージプールを編集します:

$ virsh pool-edit default 

これにより、VMのXMLファイルがデフォルトのエディターで開きます。

"<path>/var/lib/libvirt/images</path>"という行を見つけます targetの下 ディレクティブを選択して、選択した新しいパスに変更します。

私の場合、<path>を変更しました /var/lib/libvirt/imagesの要素 /home/sk/.local/share/libvirt/imagesへ 。

<pool type='dir'>
  <name>default</name>
  <uuid>76f47a3c-7656-4c34-9ab5-c87e5136d532</uuid>
  <capacity unit='bytes'>396452147200</capacity>
  <allocation unit='bytes'>71178977280</allocation>
  <available unit='bytes'>325273169920</available>
  <source>
  </source>
  <target>
    <path>/home/sk/.local/share/libvirt/images</path>
    <permissions>
      <mode>0755</mode>
      <owner>1000</owner>
      <group>1000</group>
      <label>unconfined_u:object_r:svirt_home_t:s0</label>
    </permissions>
  </target>
</pool>

新しいパスが存在することを確認してください。存在する場合は、それを作成し、新しいパスディレクトリに十分な権限を割り当てます。ファイルを保存して閉じます。

ヒント:

何らかの理由でデフォルトのストレージプールが存在しない場合は、次のように作成できます。

$ virsh pool-define-as --name default --type dir --target /home/sk/.local/share/libvirt/images/

ストレージパスを独自のものに置き換えます。

1.1.8。 最後に、デフォルトのストレージプールを開始します:

$ virsh pool-start default

1.1.9。 システムの起動時に自動的に起動するようにストレージプールを設定します:

$ virsh pool-autostart default

1.1.10。 次のコマンドを使用して、libvirtストレージプールパスが変更されているかどうかを確認します。

$ virsh pool-dumpxml default | grep -i path

これで、新しいパスが表示されます。

     /home/sk/.local/share/libvirt/images

今後、仮想イメージは新しいストレージプールに保存されます。

1.1.11。 ストレージプールの状態を確認します:

$ virsh pool-list 
 Name      State    Autostart
-------------------------------
 default   active   yes

1.1.12。 libvirtdサービスを再起動します:

$ sudo systemctl restart libvirtd

1.1.13。 最後にもう1つ行う必要があります。古いストレージパスから新しいストレージパスにすべてのVMイメージをコピーします:

$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/

すべて完了しました!

これは、Virshを使用して、コマンドラインからKVMLibivrtのデフォルトのストレージプールの場所を新しい場所に変更する方法です。 プログラム。ご覧のとおり、KVM / Libvirtゲストのデフォルトのストレージパスを変更するのはかなり簡単です!

次に、Virt-managerという名前のグラフィカルアプリケーションを使用してLibvirtのデフォルトのストレージプールパスを変更する方法を見てみましょう。 。

1.2。 Virt-managerを使用してKVMLibvirtのデフォルトのストレージプールの場所を変更する

Virt-manager 、Virtual Machine Managerの略で、 libvirtを介して仮想マシンを管理するために使用されるグラフィカルユーザーインターフェイスアプリケーションです。 。言い換えれば、Virt-managerはlibvirtの単なるグラフィカルフロントエンドです。 。

1.2.1。 Virt-managerアプリケーションを開きます。 QEMU / KVMを右クリックし、詳細をクリックします オプション。

[編集]->[接続の詳細]をクリックすることもできます Virt-managerインターフェースから。

1.2.2。 ストレージの下 セクションには、デフォルトのストレージプールの場所が表示されます。

1.2.3。 プールの停止をクリックします 次にプールを削除 左下のペインのオプション。

これにより、デフォルトのプールが非アクティブ化されて削除されます。

1.2.4。 プラス(+)をクリックします 左下のペインにサインオンして、仮想マシンで使用する新しいストレージプールを作成します。

ストレージプールの名前を入力します(例:default 私の場合)。プールのタイプを選択します。この例では、ファイルシステムディレクトリを選択しました 。ターゲットの場所を指定して、[完了]をクリックします。

1.2.5。 これで、新しいストレージがアクティブになります。 自動起動を確認してください システムの起動時に新しいストレージプールを自動的に開始するボックス。

1.2.6。 すべてのVMイメージを古いストレージディレクトリから新しいストレージディレクトリに移動します。

$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/

1.2.7。 最後に、libvirtdサービスを再起動します:

$ sudo systemctl restart libvirtd

1.3。コックピットを使用してKVMLibvirtのデフォルトのストレージプールの場所を変更する

コックピット は、Webブラウザを介してLinuxサーバーを監視および管理するための無料のWebベースのサーバー管理ツールです。

1.3.1 Webブラウザーを開き、 http:// localhost:9090 に移動して、コックピットコンソールにログインします。 またはhttp:// IP-address:9090 アドレスバーから。

1.3.2。 仮想マシンをクリックします 左ペインのタブ。右側で、[ストレージプール]をクリックします オプション。

1.3.3。 [ストレージプール]セクションの下に、デフォルトのストレージプールが表示されます。小さな矢印をクリックして[ストレージプール]タブを展開し、[非アクティブ化]をクリックします および削除 ボタン。

注: すでにデフォルトの保存場所を変更しているので、新しいパスが表示されます。システムでは、古いデフォルトのパス、つまり/var/lib/libvirt/imagesが表示されます。 。

1.3.4。 ストレージプールの名前、タイプ、およびターゲットパスを入力し、[作成]をクリックします 。 [スタートアップ]チェックボックスがオンになっていることを確認してください。

1.3.5。 アクティブ化をクリックします ボタンをクリックしてプールを開始します。

1.3.6。 すべてのVMイメージを古いストレージディレクトリから新しいストレージディレクトリに移動します。

$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/

1.3.7。 libvirtdサービスを再起動します:

$ sudo systemctl restart libvirtd

トラブルシューティング

ストレージプールパスを変更した後、VMの起動時に次のエラーが発生する可能性があります。

Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied.

これは、qemuが原因です。 ユーザーがストレージディレクトリへの読み取り権限を持っていない可能性があります。修正するには、次のリンクを参照してください:

  • [解決済み]ストレージファイルにアクセスできません、KVMLibvirtでアクセスが拒否されましたエラー

結論

このガイドでは、KVM/Libvirtの重要なトピックであるストレージプールについて説明しました。 。ストレージプールとボリュームとは何か、次に3つのプログラム、つまりVIrsh、Virt-manager、Cockpitを使用してkvmlibvirtのデフォルトのストレージプールの場所を変更する方法を学びました。これがお役に立てば幸いです。


Linux
  1. RedhatLinuxでデフォルトのKVM仮想ストレージを構成する

  2. Linux – Kvm / libvirt / virt-manager Vmの複製を作成する方法は?

  3. yum キャッシュのデフォルトの場所 (/var/cache/yum) を変更する方法

  1. KVM/libvirt/virt-manager VM の複製を作成するには?

  2. Linux でユーザーのデフォルト グループを変更するにはどうすればよいですか?

  3. ドメイン アカウントのデフォルト シェルを変更する方法

  1. デフォルトの「読書」プログラムを変更するにはどうすればよいですか?

  2. Linux でデフォルトのシェルを変更する方法

  3. qmake PREFIX の場所を変更する方法