跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Enterprise Storage 7.1 文件 / 管理和操作指南 / 與虛擬化工具整合 / Ceph 做為 QEMU KVM 例項的後端
適用範圍 SUSE Enterprise Storage 7.1

27 Ceph 做為 QEMU KVM 例項的後端

最常見的 Ceph 使用案例涉及到向虛擬機器提供區塊裝置影像。例如,在理想的組態中,使用者可以建立包含 OS 和所有相關軟體的「黃金」影像。然後,使用者可以建立該影像的快照。最後,使用者可以複製該快照 (通常要複製多次,如需詳細資料,請參閱第 20.3 節 「快照」)。能夠建立快照的寫入時複製複製品,就表示 Ceph 能夠快速向虛擬機器佈建區塊裝置影像,因為用戶端不需要在每次運轉新的虛擬機器時都下載整個影像。

Ceph 區塊裝置可與 QEMU 虛擬機器相整合。如需 QEMU KVM 的詳細資訊,請參閱 https://documentation.suse.com/sles/15-SP1/single-html/SLES-virtualization/#part-virt-qemu

27.1 安裝 qemu-block-rbd

若要使用 Ceph 區塊裝置,需在 QEMU 上安裝相應的驅動程式。請檢查是否已安裝 qemu-block-rbd 套件,若未安裝,則予以安裝:

# zypper install qemu-block-rbd

27.2 使用 QEMU

使用 QEMU 指令行時,您需要指定池名稱和影像名稱。您也可以指定快照名稱。

qemu-img command options \
rbd:pool-name/image-name@snapshot-name:option1=value1:option2=value2...

例如,可依如下所示指定 idconf 選項:

qemu-img command options \
rbd:pool_name/image_name:id=glance:conf=/etc/ceph/ceph.conf

27.3 使用 QEMU 建立影像

您可以透過 QEMU 建立區塊裝置影像。必須指定 rbd、池名稱,以及要建立的影像名稱。此外,還必須指定影像的大小。

qemu-img create -f raw rbd:pool-name/image-name size

例如:

qemu-img create -f raw rbd:pool1/image1 10G
Formatting 'rbd:pool1/image1', fmt=raw size=10737418240 nocow=off cluster_size=0
重要
重要

事實上,raw 資料格式是可對 RBD 使用的唯一合理格式選項。從技術上講,您也可以使用 QEMU 支援的其他格式 (例如 qcow2),但這會增加額外的負擔,如果啟用了快取,還會在即時移轉虛擬機器時讓磁碟區變得不安全。

27.4 使用 QEMU 調整影像大小

您可以透過 QEMU 調整區塊裝置影像的大小。必須指定 rbd、池名稱,以及要調整大小的影像名稱。此外,還必須指定影像的大小。

qemu-img resize rbd:pool-name/image-name size

例如:

qemu-img resize rbd:pool1/image1 9G
Image resized.

27.5 使用 QEMU 擷取影像資訊

您可以透過 QEMU 擷取區塊裝置影像的資訊。必須指定 rbd、池名稱和影像名稱。

qemu-img info rbd:pool-name/image-name

例如:

qemu-img info rbd:pool1/image1
image: rbd:pool1/image1
file format: raw
virtual size: 9.0G (9663676416 bytes)
disk size: unavailable
cluster_size: 4194304

27.6 使用 RBD 執行 QEMU

QEMU 可以透過 librbd 直接將影像做為虛擬區塊裝置來存取。這可以避免額外的網路位置切換,並可利用 RBD 快取的優勢。

您可以使用 qemu-img 將現有的虛擬機器影像轉換成 Ceph 區塊裝置影像。例如,如果您有一個 qcow2 影像,則可以執行:

qemu-img convert -f qcow2 -O raw sles12.qcow2 rbd:pool1/sles12

若要執行從該影像開機的虛擬機器,您可以執行:

# qemu -m 1024 -drive format=raw,file=rbd:pool1/sles12

RBD 快取可大幅提高效能。QEMU 的快取選項可控制 librbd 快取:

# qemu -m 1024 -drive format=rbd,file=rbd:pool1/sles12,cache=writeback

如需 RBD 快取的詳細資訊,請參閱第 20.5 節 「快取設定」

27.7 啟用丟棄和 TRIM

Ceph 區塊裝置支援丟棄操作。這表示客體可以傳送 TRIM 要求,以便讓 Ceph 區塊裝置回收未使用的空間。可以透過結合丟棄選項掛接 XFS,在客體中啟用此功能。

若要讓客體可使用此功能,必須明確為區塊裝置啟用此功能。為此,您必須指定與磁碟機關聯的 discard_granularity

# qemu -m 1024 -drive format=raw,file=rbd:pool1/sles12,id=drive1,if=none \
-device driver=ide-hd,drive=drive1,discard_granularity=512
注意
注意

上面的範例使用 IDE 驅動程式。Virtio 驅動程式不支援丟棄功能。

如果您在使用 libvirt,請使用 virsh edit 編輯 libvirt 網域的組態檔案,以包含 xmlns:qemu 值。然後,將 qemu:commandline block 新增為該網域的子級。下面的範例展示如何將包含 qemu id= 的兩部裝置設定為不同的 discard_granularity 值。

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
 <qemu:commandline>
  <qemu:arg value='-set'/>
  <qemu:arg value='block.scsi0-0-0.discard_granularity=4096'/>
  <qemu:arg value='-set'/>
  <qemu:arg value='block.scsi0-0-1.discard_granularity=65536'/>
 </qemu:commandline>
</domain>

27.8 設定 QEMU 快取選項

QEMU 的快取選項與以下 Ceph RBD 快取設定對應。

寫回:

rbd_cache = true

寫入:

rbd_cache = true
rbd_cache_max_dirty = 0

無:

rbd_cache = false

QEMU 的快取設定會覆寫 Ceph 的預設設定 (未在 Ceph 組態檔案中明確指定的設定)。如果在 Ceph 組態檔案中明確指定了 RBD 快取設定 (請參閱第 20.5 節 「快取設定」),您的 Ceph 設定將會覆寫 QEMU 快取設定。如果您在 QEMU 指令行中指定了快取設定,則 QEMU 指令行設定會覆寫 Ceph 組態檔案設定。