KVM虛擬機存儲管理

  



    KVM的存儲選項有多種,包括虛擬磁盤文件、基於文件系統的存儲和基於設備的存儲。
後端

楊書凡31.png



1、KVM的存儲性能解析對比服務器

一、虛擬磁盤文件網絡

  當系統建立KVM虛擬機的時候,默認使用虛擬磁盤文件做爲後端存儲。安裝後,虛擬機認爲在使用真實的磁盤,但實際上看到的是用於模擬硬盤的虛擬磁盤文件。這一額外的文件系統層會下降系統速度。dom

  固然,基於磁盤鏡像的虛擬磁盤並不是全無益處,磁盤文件系統能夠很輕鬆地用於其它的KVM虛擬化宿主機。可是若是您但願優化KVM虛擬化性能,最好考慮其它的存儲方式。ssh


二、基於文件系統的KVM存儲ide

  在安裝KVM宿主機時,可選文件系統爲dir(directory)或fs(formatted block storage)做爲初始KVM存儲格式。默認選項爲dir,用戶指定本地文件系統中的一個目錄用於建立磁盤鏡像文件。性能

  fs選項能夠容許用戶指定某個格式化文件系統的名稱,把它做爲專用的磁盤鏡像文件存儲。兩種KVM存儲選項之間最主要的區別在於:fs文件系統不須要掛載到某個特定的分區。優化

  兩種選項所指定的文件系統,均可以是本地文件系統或位於SAN上某個物理宿主機上的網絡文件系統。後者具有必定的優點,由於SAN能夠很輕易地實現多個主機同時訪問,而本地磁盤或文件系統則沒法實現。ui

  還有一種基於文件的磁盤存儲方式是netfs,用戶能夠指定一個網絡文件系統的名稱,如Samba.用這種方式做爲KVM存儲很方便,由於這樣很容易訪問到位於其它服務器上的文件系統,同時用戶也能夠經過多臺宿主機訪問磁盤文件。spa

  全部的這些基於文件的KVM存儲方式都有一個缺點:文件系統固有缺陷。由於虛擬機的磁盤文件不能直接讀取或寫入KVM存儲設備,而是寫入宿主機OS之上的文件系統。這也就意味着在訪問和寫入文件時中間增長了額外一層,這一般會下降性能。因此,若是您但願尋找KVM虛擬化性能最優方案,最好考慮基於設備的存儲。


三、基於設備的KVM存儲

  另一種KVM存儲的方式就是使用基於設備的方式。共支持四種不一樣的物理存儲:磁盤、iSCSI、SCSI和lvm邏輯盤。磁盤方式指直接讀寫硬盤設備。iSCSI和SCSI方式可選,取決於用戶採起SCSI或iSCSI地址把磁盤設備鏈接。這種KVM存儲方式的優點在於,磁盤的名稱是固定的,而不須要取決於宿主機OS搜索到磁盤設備的順序。

  這種鏈接磁盤的方式也有缺點:靈活性不足。虛擬磁盤的大小很難改變,並且基於設備的KVM存儲不支持快照。

  若是要優化KVM存儲的靈活性,可使用LVM(Logical Volume Manager)。LVM的優點在於可使用快照,而快照並非KVM虛擬化自帶的功能。

  LVM能夠把全部存儲放到一個卷組裏,從而輕鬆建立一個邏輯卷。該卷組是物理磁盤設備的一個抽象,因此若是超出可用磁盤空間最大值,還能夠向卷組中添加新的設備,從而極大簡化了增長存儲空間的過程,增長的空間在邏輯卷中直接可使用。使用LVM使得磁盤空間分配更加靈活,並且增長和刪除存儲也更爲容易。

  最後,LVM不管是在單宿主機或多宿主機環境中均可以很好工做。在多宿主機環境中,您能夠在SAN上建立邏輯卷。若是使用Cluster LVM,能夠很容易的配置成多個主機同時訪問某個邏輯卷。



2、KVM存儲池管理

  爲簡化KVM存儲管理的目的,能夠建立存儲池。在宿主機上建立存儲池,能夠簡化KVM存儲設備的管理。採用存儲池的方式還能夠實現對提早預留的存儲空間的分配。這種策略對於大型應用環境頗有效,存儲管理員和建立虛擬機的管理常常不是同一我的。這樣,在建立首臺虛擬機以前先完成KVM存儲池的建立是很好的方法。


一、存儲池的基本概念

    存儲池是一個由libvirt管理的文件、目錄或存儲設備,提供給虛擬機使用。存儲池被分爲存儲卷,這些存儲卷保存虛擬鏡像或鏈接到虛擬機做爲附加存儲。libvirt經過存儲池的形式對存儲進行統一管理、簡化操做。對於虛擬機操做來講,存儲池和卷並非必需的。支持如下類型存儲池:

楊書凡32.png



二、virsh中和存儲池相關的命令

pool-autostart          自動啓動某個池

pool-build            創建池

pool-create-as          從一組變量中建立一個池

pool-create            從一個 XML 文件中建立一個池

pool-define-as          在一組變量中定義池

pool-define            在一個XML文件中定義(但不啓動)一個池或修改已有池

pool-delete            刪除池

pool-destroy           銷燬(刪除)池

pool-dumpxml           將池信息保存到XML文檔中

pool-edit             爲存儲池編輯 XML 配置

pool-info             查看存儲池信息

pool-list             列出池

pool-name             將池 UUID 轉換爲池名稱

pool-refresh            刷新池

pool-start              啓動一個(之前定義的)非活躍的池

pool-undefine           取消定義一個不活躍的池

pool-uuid              把一個池名稱轉換爲池 UUID



三、建立基於目錄的存儲池(dir:Filesystem Directory)

virsh pool-define-as test dir --target /kvm/test

virsh pool-build test

virsh pool-start test

virsh pool-autostart test



四、建立基於分區的存儲池(fs:Pre-Formatted Block Device)

Libvirtd會自動掛載mount分區

(1)準備分區並建立文件系統

fdisk /dev/sdc

mkfs.xfs /dev/sdc1

(2)建立:

virsh pool-define-as test fs --source-dev /dev/sdc1 --target /kvm/test

virsh pool-build test

virsh pool-start test

virsh pool-autostart test


  

五、建立基於磁盤的存儲池(disk:Physical Disk Device)

virsh pool-define-as test disk --source-dev /dev/sdc --source-format gpt --target /dev

virsh pool-define test

virsh pool-start test

virsh pool-autostart test


六、建立基於LVM的存儲池(logical:LVM Volume Group)

基於LVM的存儲池要求使用所有磁盤分區

建立存儲池時,首先準備一個vg,vg中不須要建立lv

virsh pool-define-as kvmvg logical  --source-name kvmvg --target /dev/kvmvg

  

七、建立基於iSCSI的存儲池(iscsi:iSCSI Target)

virsh pool-define-as  storage01  iscsi --source-host 192.168.2.20 \       //存儲服務器的地址

> --source-dev iqn.2017-10.com.cloud.www:storage001 \   //target目標

> --target /dev/disk/by-path

virsh pool-start storage01

virsh pool-autostart storage01


八、基於NFS的存儲池(netfs:Network Export Directory)

[root@kvm001 ~]# virsh pool-define-as --name kvmnfs --type netfs \

> --source-host 192.168.2.20 \

> --source-path /nfsshare \

> --target /nfstest      //須要提早建立目錄

 



3、KVM存儲池管理 

一、virsh中和存儲池相關的命令

vol-clone             克隆卷。

vol-create-as           從一組變量中建立卷

vol-create             從一個 XML 文件建立一個卷

vol-create-from           生成卷,使用另外一個卷做爲輸入。

vol-delete              刪除卷

vol-download            將卷內容下載到文件中

vol-dumpxml             保存卷信息到XML文檔中

vol-info              查看存儲卷信息

vol-key               根據卷名或路徑返回卷的key

vol-list              列出卷

vol-name              根據給定卷key或者路徑返回卷名

vol-path              根據卷名或key返回卷路徑

vol-pool              爲給定密鑰或者路徑返回存儲池

vol-resize             從新定義卷大小

vol-upload             將文件內容上傳到卷中

vol-wipe              擦除卷



2、在存儲池中建立一個qcow2格式的卷

virsh vol-create-as vm test.qcow2 1G --format qcow2

 

3、向vm2虛擬機添加test

用法:attach-disk <domain> <source> <target> 

virsh attach-disk  vm2  /kvm/vfs/test.qcow2  /kvm/vfs --cache none

相關文章
相關標籤/搜索