KVMでオンラインディスクのサイズ変更は可能ですか?


14

いくつかのプロジェクトでLinux仮想化用のKVMを評価しています。これまでのところ、すべて順調です。ただし、要件の1つは、再起動したりオフラインにすることなく、実行中のゲストにディスク領域を追加できることです。これはKVMで可能ですか?

私がこれまでに見つけた唯一の(まだテストはしていない)ことは、ディスクをマシンにホットプラグできることです。このルートを選択すると、常にゲストのLVMボリュームグループに新しいディスクを追加し、選択した論理ボリュームを拡張できます。このアプローチの最大の欠点は、時間が経つにつれて、ゲストが可変数の仮想ディスクを持つことになってしまうことです。「実際の」ディスクスペースはSANを介してホストに提供されるため、いつでもホストにスペースを追加できます。


(そして「はい」、それは可能です。)
poige

回答:


4

マシンを落とさずにそれをやりたいのなら、あなたはあなたが言及したことをするのにこだわっていると思います。

仮想マシンのLUNをSANのすぐ外に配置し、そこのスペースを管理するだけではどうですか?とにかくライブマイグレーションなどの機能を使用する場合は、これがより効果的です。

KVMはQEMUに基づいているため、画像形式のサポートはすべてそのプロジェクトから得られます。ここでは良いことだサイズを変更する方法- QEMU / KVMをサポートすることを様々なフォーマットで。しかし、Qemuフォーラムは、ここで確実な回答が得られない場合にこの質問をするのに適した場所です。

理想的でない可能性のある別のオプションは、本当に大きなqcow2または他のスパースイメージ形式をドライブに使用することです。そのため、各マシンにOS用の小さなドライブと、LVM下のデータ用の大きなスパースイメージを提供できます。これにより、少なくとも管理しなければならない仮想ドライブ/イメージの数が維持されます。しかし、このシンプロビジョニングは問題になる可能性がありますが、1000台のマシンに対してこれを行うと、誰もが見ている空き領域を確保できます。

XEN現在、同じ制限があると思います。


さらに検討すると、あなたが言及したように、ゲスト自体からSANストレージをマウントするのがおそらく方法です。また、追加情報にも感謝します。
エイル

シンプロビジョニングも断片化のためにコストがかかる可能性があります。
wazoox

14

私はそれが古い質問であることを知っていますが、解決策を探している間にそれを見つけ、それが他の人を助けるかもしれないことを願っています。

今日に関して、マシンのハードドライブのサイズを変更すること可能です。私はここで作業方法を見つけました:

https://bugzilla.redhat.com/show_bug.cgi?id=648594

次の手順を実行する必要があります。

  1. サイズを変更するハードドライブのファイル名とKVMデバイス名を確認します。

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

私たちにとって興味深いのはディスクです。あなたが探してブロックする必要がsourceありaliasます。私の場合、ファイル名はでtest.img、エイリアス名はvirtio-disk0です。この名前に、drive-qemuドライブ名を取得するために先頭に追加する必要があります。

  1. 次に、実際にqemuモニターを使用してドライブのサイズを変更します。

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

filenameは.img拡張子なしで使用され、drive-はディスクエイリアスに追加されたことに注意してください。100Gは、必要なドライブの結果のサイズです

  1. マシンにログインして、実際のサイズが変更されたことを確認します。

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

それでおしまい!これで、新しいパーティションを作成するか、既存のパーティションのサイズを変更できます。


1
戻ってきてこの答えを追加してくれてありがとう!従来の方法よりもずっと簡単になります。
デイブシェロマン

3

私の知る限り、これは不可能です-新しいディスクイメージを追加できます。また、指摘したように、LVMボリュームに新しいイメージを追加することもできますが、アクティブで起動可能なディスクイメージのサイズを変更するには、それをシャットダウンできる必要がありますパーティションをダウンして編集します。

以下は、画像を拡大するための良い説明です。シャットダウンが必要ですが、おそらく--nonsparse imageオプションを避けてgpartedディスクをisoファイルにddし、事前にKVMゲストにマウントする場合、おそらく数分のダウンタイムで逃げることができます。お役に立てれば。


2
問題は実際にはKVM関連ではありません。Linuxから起動したディスクのサイズを変更することはできません。物理RAIDアレイにも適用されます。
wazoox

3

Linuxシステムは、実行中にディスク間で移動できます。制限は、あなたが変えることができないということであるパーティションを持つディスク上のパーティションを使用中。

これを行うには、ルートファイルシステムがLVM上にある必要があります。これは、多くの場合、別個のブートファイルシステムが必要であることを意味します(ただし、これは必須ではありません。

新しいディスクを接続した後、vgextendでLVMに追加し、pvmoveを使用してrootfsを新しいディスクに移動し、lvextendとresize2fsを使用して論理ボリュームとファイルシステムをそれぞれ拡張し、vgreduceを使用してボリュームから古いディスクを削除しますグループ。古いボリュームを削除すると、プラグを抜くことができます。

単純なケースでは、ブートファイルシステム用の小さなディスクを用意します。しかし、それがそれ自体にある場合は、アンマウントしてプラグを外し、新しいものを接続して、システムを停止せずにブートディスクを再構築するのは簡単です。(実行中にクラッシュしないでください)

注:resize2fsはファイルシステムを縮小することもできます。


0

可能なATMではありませんが、開発中の機能です。代わりにできることは、VMからiSCSIターゲットに接続し、SAN側でそのターゲットのスペースを管理することです。


あなたは彼が使用できる答えで質問に答えませんでした。
メイ

@David:そして、何があなたをそれを考えさせ、私の答えを却下するのですか?私の答えは、当面の問題の回避策を提供しないのですか?
dyasny

あなたは「Not atm ...」と言ってから、現時点では不可能な機能について彼に話しました。(今、ほぼ2年後、それは異なるかもしれません-しかし、この答えはそれを言っていません。)
メイ

1
それで2年前に私は彼に「それは2年で可能になるだろう」と言ったはずでしたか?私はあなたに預言者のように見えますか?当時、ホットプラグは開発中でしたが、まさにそれが私が言ったことです。次に、ストレージをVMに接続するための別のアプローチを提供しました。これは、qemu機能セット全体に依存しません。決してそれが唯一の方法だっ述べていないが、それはある方法。
dyasny

私は今理解しています...あなたの意図をよりよく示すためにあなたの答えを編集しました。
メイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.