libvirt sanlock虛擬機器鎖管理器外掛程式

2021-09-29 03:23:26 字數 4690 閱讀 8538

libvirt sanlock虛擬機器鎖管理器外掛程式

此頁面描述了將

sanlock

服務用作

虛擬機器磁碟互斥的

鎖定驅動程式

外掛程式。

sanlock守護程式設定

在許多作業系統上,sanlock外掛程式分發在乙個子包中,該子包需要與主

libvirt rpm

分開安裝。在

fedora / rhel

主機上,可以使用以下

yum命令

完成此操作

$ su - root

# yum install libvirt-lock-sanlock

下一步是啟動

sanlock

守護程式。為了獲得最大的安全性,

sanlock

希望與看門狗守護程式建立連線。如果

sanlock崩潰/

異常終止,這將導致整個主機重新啟動。要在

fedora / rhel

主機上啟動看門狗守護程式,可以執行以下命令:

$ su-根

$ su - root

# chkconfig wdmd on

# service wdmd start

看門狗執行後,可以按以下方式啟動

sanlock

# chkconfig sanlock on

# service sanlock start

注意:如果您希望避免使用看門狗,請

/etc/sysconfig/sanlock

在開始之前

新增以下行

sanlockopts="-w 0"

必須在將要執行虛擬機器的每個主機上啟動

sanlock

守護程式。因此,如有必要,請重複這些步驟。

libvirt sanlock外掛程式配置

一旦執行了

sanlock

守護程式,下一步就是配置

libvirt sanlock

外掛程式。每個使用

sanlock

的libvirt

驅動程式都有乙個單獨的配置檔案。對於

qemu

,我們將編輯

/etc/libvirt/qemu-sanlock.conf

有乙個必填引數,需要設定

host_id

。這是1

到2000

之間的整數,在

執行虛擬機器的每個主機上必須將其設定為唯一值。

$ su - root

# augtool -s set /files/etc/libvirt/qemu-sanlock.conf/host_id 1

在每個主機上重複此操作,將1更改為主機的唯一值。

libvirt sanlock儲存配置

sanlock

外掛程式需要在所有執行虛擬機器的主機之間共享的檔案系統上的目錄中建立租約。顯而易見的選擇包括

nfs或

gfs2

。libvirt sanlock

外掛程式希望其租約目錄位於此位置,

/var/lib/libvirt/sanlock

因此請更新主機的主機,

/etc/fstab

以在該位置安裝合適的共享

/群集檔案系統

$ su - root

# echo "some.nfs.server:/export/sanlock /var/lib/libvirt/sanlock nfs hard,nointr 0 0" >> /etc/fstab

# mount /var/lib/libvirt/sanlock

如果您的

sanlock

守護程式恰好在非

root

使用者特權下執行,則需要將此命令告知

libvirt

,以便它正確處理建立的檔案。這可以通過

在配置檔案中設定

user和/

或group

變數來完成。說明中對中的相同變數指定了可接受的值範圍

/etc/libvirt/qemu.conf

。例如:

augtool -s set /files/etc/libvirt/qemu-sanlock.conf/user sanlock

augtool -s set /files/etc/libvirt/qemu-sanlock.conf/group sanlock

但是請記住,如果這是

nfs共享,則需要使用

no_root_squash-ed

才能使chown

(可能還有

chmod

)成功。

就儲存要求而言,如果檔案系統使用

512位元組的扇區,則需要

1mb為每個來賓磁碟提供儲存空間。因此,如果您的網路具有

20個虛擬化主機,每個虛擬機器執行

50個虛擬機器,每個來賓平均要有

2個磁碟,則需要

20*50*2 == 2000 mb

儲存用於

sanlock。

在網路上的一台主機上,設定

cron

作業以virt-sanlock-cleanup

定期執行指令碼是明智的。該指令碼刪除正在執行的虛擬機器當前未使用的所有租用檔案,從而釋放共享檔案系統上的磁碟空間。除非非常頻繁地建立和刪除

vm磁碟,否則足以每週執行一次清理。

qemu / kvm驅動程式配置

0.9.3

版開始,

qemu / kvm

驅動程式已與鎖管理器框架完全整合。但是,現成的配置當前使用nop鎖管理器外掛程式。為了獲得磁碟保護,因此必須重新配置

qemu

以啟用sanlock驅動程式。這可以通過編輯

qemu

驅動程式配置檔案(

/etc/libvirt/qemu.conf

)並更改

lock_manager

配置可調引數來實現。

$ su - root

# augtool -s  set /files/etc/libvirt/qemu.conf/lock_manager sanlock

# service libvirtd restart

如果一切順利,

libvirtd

將與sanlock

交談並建立基本的鎖空間。可以通過查詢以下檔案的存在來檢查

# ls /var/lib/libvirt/sanlock/

__libvirt__disks__

每次啟動

guest

虛擬機器時,其他租約檔案都會出現在此目錄中,每個虛擬磁碟乙個。租用檔案是根據虛擬磁碟支援檔案的標準路徑的

md5校驗和命名的。因此,如果為來賓提供了磁碟作為後盾,則該

/var/lib/libvirt/images/demo.img

租戶將看到租約

/var/lib/libvirt/sanlock/bfa0240911bc17753e0b473688822159

顯而易見,為了使鎖定正常工作,每個執行虛擬機器的主機都應以相同的方式配置儲存。最簡單的方法是使用

libvirt

儲存池功能來配置用於來賓儲存的任何

nfs卷,

iscsi

目標或scsi hba

。只需在每個主機上覆制相同的儲存池

xml。重要的是,任何暴露塊裝置的儲存池都必須配置為在其下建立卷路徑,

/dev/disks/by-path

以確保跨主機的穩定路徑。確保這一點的示例

iscsi

配置為:

myiscsipool

/dev/disk/by-path

域配置萬一

sanlock

由於某種原因無法訪問磁碟鎖,它將殺死所有丟失其鎖的域。可以使用域

xml中的

on_lockfailure

元素更改此預設行為

。存在此元素時,

sanlock

將sanlock_helper

使用指定的動作進行呼叫(由

libvirt

提供)。該幫助程式二進位制檔案將連線到

libvirtd

,因此如果

libvirtd

配置為在讀寫

unix

套接字上要求,則可能需要進行身份驗證。為了向

sanlock_helper

提供適當的憑據,

客戶端身份驗證檔案

需要包含以下內容:

[auth-libvirt-localhost]

credentials=sanlock

[credentials-sanlock]

authname=login

password=password

虛繼承 虛表 虛指標

c 實現多型的方法 其實很多人都知道,虛函式在c 中的實現機制就是用虛表和虛指標,但是具體是怎樣的呢?從more effecive c 其中一篇文章裡面可以知道 是每個類用了乙個虛表,每個類的物件用了乙個虛指標。具體的用法如下 class a class b public a a,b的實現省略 因為...

虛指標,虛函式,虛函式表,純虛函式

虛指標 虛繼承 在使用多重繼承時,如存在 class a 有m a變數 class a1 virtual public a,m a1 class a2 virtual public a m a2 class b public a1,public a2 m b 時 存在以下記憶體儲存順序 虛指標 指向...

虛函式 虛指標和虛表

關於虛函式的背景知識 用virtual關鍵字申明的函式叫做虛函式,虛函式肯定是類的成員函式。存在虛函式的類都有乙個一維的虛函式表叫做虛表。類的物件有乙個指向虛表開始的虛指標。虛表是和類對應的,虛表指標是和物件對應的。多型性是乙個介面多種實現,是物件導向的核心。分為類的多型性和函式的多型性。多型用虛函...