Kvm-Virtualization

libvirt:備份期間的客戶機性能

  • November 13, 2016

這是我在主機中執行的備份腳本的簡化版本:

# shutdown the guest to ensure its filesystem is in a stable state
virsh shutdown web --mode=acpi
sleep 20s # the real script uses a smarter method to wait for the guest shutdown to complete

# make a snapshot copy of the offline guest
lvcreate -n web-bsnap -L50GB -s /dev/vg0/web

# start the guest to minimize the offline time
virsh start web

# create the backup volume
lvcreate -n web-0 -L 193273528320B /dev/vg0

# make the backup by copying the offline snapshot
nice -n 19 dd if=/dev/vg0/web-bsnap of=/dev/vg0/web-0 bs=4K

# remove the snapshot
lvremove -f /dev/vg0/web-bsnap

備份需要 1 個多小時,但問題是,在此期間,來賓變得非常慢(有時也無法訪問)。我不需要備份在 1 或 2 小時內結束,如果需要可能需要 10 小時,但我希望它以最低優先級執行,這樣它就不會干擾正常的訪客操作。出於這個原因,該nice命令在那裡,但似乎沒有任何區別。

主機系統是 Debian GNU/Linux 8 amd64,帶有來自 sid (4.7) 的 Linux 核心。客人也一樣。主機和來賓上的 jessie 核心(3.16)的問題是一樣的。

主機硬體對於通常的來賓工作負載來說是超大的,具有 256GB 的 RAM、Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz,具有 6 個核心和企業 SATA 磁碟上的 2TB RAID1 儲存,所有這些都用於單個訪客的網站平均每秒提供 1 個網頁。通常的伺服器負載低於 1。

我可以做些什麼來減少備份的干擾?

Dmitry Zayats 提出的解決方案非常吸引人,但我最終選​​擇了一個不同的解決方案來保持腳本來賓分區不可知:

dd if=/dev/vg0/web-bsnap of=/dev/vg0/web-0 bs=4K &

DDPID=$!

DDRUNNING=1
while [ $DDRUNNING -gt 0 ] ; do
 kill -STOP $DDPID
 sleep 3.875s
 kill -CONT $DDPID
 sleep 0.125s
 DDRUNNING=$(ps -p $DDPID | grep $DDPID | wc -l)
done

一個 180GB 的來賓映像大約需要 20 個小時,但在我的情況下它不會影響系統性能。

事情是這樣的——nice 調整程序優先級。在 dd 的情況下 - 這主要是 IO 密集型,而不是 CPU 密集型,這就是為什麼這個機制不適合你。

這是我會怎麼做

mkfs /dev/mapper/vg0-web-0
mkdir /mnt/websnap
mkdir /mnt/level0
mount /dev/mapper/vg0-web-0 /mnt/level0
mount /dev/mapper/vg0-web-bsnap /mnt/websnap
rsync -av --bwlimit=10000 /mnt/websnap/ /mnt/level0/

有了這個,您將不會進行塊複製(當您的捲未接近 100% 滿時,這可能效率低下)而是基於文件的複制加上您可以使用 –bwlimit 控制您的頻寬

引用自:https://serverfault.com/questions/811616