Hướng dẫn chi tiết về Sao chép máy ảo bằng blocksync.py
Các hướng dẫn này áp dụng cho máy ảo sử dụng đĩa được cung cấp LVM và giả sử rằng Python có trên mỗi máy chủ lưu trữ
Tải xuống tập lệnh blocksync.py từ https://gist.github.com/rcoup/1338263 và đặt trên cả máy chủ nguồn và máy chủ đích trong thư mục / home / user của bạn.
Tiền thân
- Bạn sẽ cần có quyền truy cập 'ssh' vào cả hai máy (nguồn và đích) cho người dùng của mình.
Bạn cũng sẽ cần có quyền truy cập 'sudo' vào 'root' trên cả hai máy.
Ngoài ra, bạn có thể thực hiện mọi thứ với quyền root, nhưng chỉ khi khóa ssh của bạn cấp cho bạn quyền truy cập root vào ít nhất là máy đích. ** Trong trường hợp này, xóa tên người dùng khỏi dòng lệnh.
Cài đặt ví dụ
- Máy ảo nằm trên máy chủ dom0 được gọi là chewie
- Đích đến mong muốn trên máy chủ dom0 được gọi là darth và có IP bên trong ở đây 10.10.10,38 (ví dụ của chúng tôi)
- Trong trường hợp thực tế của chúng tôi, chúng tôi sử dụng centos 7 làm hệ điều hành dom0 trên cả hai máy
- Máy VIRTUAL trong trường hợp này chúng tôi đang di chuyển được gọi là LARRY
- Người dùng thực hiện hành động là USER (sẽ là tên của bạn)
- DOM0 có nghĩa là máy chủ vật lý thực tế
Thủ tục
Các bước ban đầu trên máy chủ nguồn
- Đăng nhập vào máy chủ dom0 hiện có máy (máy chủ "nguồn"), vd:
ssh user@chewie.domainname.com
- Vẫn là người dùng của bạn, vì vậy đừng trở thành người dùng sudo * Liệt kê các máy có
sudo virsh --all
- Kết xuất định nghĩa máy bằng cách sử dụng, ví dụ:
sudo virsh dumpxml larry> larry.xml
Sao chép định nghĩa kết xuất vào máy mới (máy chủ "đích"), vd:
scp -p larry.xml 10.10.10,38:larry.xml
bạn có thể thay đổi ip nội bộ thành tên máy chủ dom0 đích của bạn ** Lưu ý: tốt nhất là sử dụng địa chỉ IP cho mục tiêu, ví dụ: scp -p larry.xml user@10.10.10,38: larry.xml
Nếu bạn không thể sao chép do các khóa của mèo larry.xml và sao chép nó thì bạn có thể ssh vào máy khác và tạo tệp và dán nó.
Tìm kích thước và tên của đĩa VM bằng cách sử dụng
sudo lvs - đơn vị B
.
** Lệnh trên sẽ hiển thị kích thước chính xác theo byte. ** Tên đĩa của máy nằm trong cột đầu tiên của danh sách, nhóm âm lượng của nó ở cột thứ hai và kích thước cuối cùng. ** Xác định tên thiết bị là / dev // ** Kiểm tra nó bằng lệnh 'll' Ví dụ: trong đầu ra này: vm_larry vg1 -wi-ao ---- 69793218560B
LV VG Attr LSize Pool Nguồn dữ liệu% Meta% Di chuyển nhật ký Cpy% Sync Chuyển đổi
lv_root vg1 -wi-ao ---- 53687091200B
lv_swap vg1 -wi-ao ---- 17179869184B
vm_vsrv1 vg1 -wi-ao ---- 193273528320B
vm_vsrv10 vg1 -wi-ao ---- 64424509440B
vm_vsrv11 vg1 -wi-ao ---- 161061273600B
vm_vsrv12 vg1 -wi-ao ---- 204010946560B
vm_vsrv2 vg1 -wi-ao ---- 140110725120B
vm_vsrv3 vg1 -wi-ao ---- 128849018880B
vm_larry vg1 -wi-ao ---- 69793218560B
vm_vsrv5 vg1 -wi-ao ---- 257698037760B
vm_vsrv6 vg1 -wi-ao ---- 64424509440B
vm_vsrv7 vg1 -wi-ao ---- 161061273600B
vm_vsrv8 vg1 -wi-ao ---- 64424509440B
vm_vsrv9 vg1 -wi-ao ---- 214748364800B
Các bước ban đầu trên máy chủ đích
- Đăng nhập vào máy chủ đích, vd
ssh user@darth.domainname.com
- Ở lại như người dùng của riêng bạn. tức là không trở thành root.
Tạo một tệp định nghĩa âm lượng, ví dụ:
vi larry.domainname.com.au-vol.xml
hoặc là nano larry.domainname.com.au-vol.xml
với các dòng sau: LƯU Ý - Bạn sẽ cần lấy kích thước tính theo byte từ VM gốc và đưa vào tập lệnh bên dưới. Lệnh trên máy nguồn cho kích thước là sudo lvs --units B
<volume type='block'>
<name>larry.domainname.com.au</name>
<capacity unit='bytes'>69793218560</capacity>
<allocation unit='bytes'>69793218560</allocation>
<target>
<path>/dev/centos/larry.domainname.com.au</path>
<permissions>
<mode>0600</mode>
<owner>0</owner>
<group>6</group>
<label>system_u:object_r:fixed_disk_device_t:s0</label>
</permissions>
</target>
</volume>
Lưu ý: định nghĩa này dành cho đĩa 69793218560 Byte cho máy ảo VM, thay đổi khi cần thiết cho VM thực tế.
Lưu ý: tên và phần cuối của đường dẫn phải khớp và sẽ được sử dụng làm tên đĩa mới.
Tạo đĩa mới từ định nghĩa, sử dụng
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
nó sẽ nói Vol larry.domainname.com.au được tạo từ larry.domainname.com.au-vol.xml
Làm cho tập tin thiết bị đĩa có thể truy cập:
sudo chgrp wheel /dev/mapper/centos-larry.domainname.com.au
sudo chmod g + rw /dev/mapper/centos-larry.domainname.com.au
Chỉnh sửa định nghĩa xml được sao chép qua, ví dụ:
vi larry.xml
Tìm định nghĩa đĩa trong tệp (tìm kiếm "source dev =") và thay thế thiết bị bằng thiết bị vừa tạo (bạn có thể ls / dev / centos / để xem vm), ví dụ: / dev / drbd4 -> / dev / centos / larry.domainname.com
Sự thay đổi cây cầu này là duy nhất cho tình hình của chúng tôi.
** Tìm bất kỳ tham chiếu nào đến "br1" trong khổ thơ giao diện và thay đổi nó thành "br0", vd: bạn đang thay đổi cầu nguồn để dòng giống như thế này
Bước cuối cùng trên máy chủ nguồn
Đăng nhập vào máy chủ nguồn, vd
ssh user@chewie.domainname.com
Cách thực hành tốt nhất là tắt VM trên máy chủ nguồn trước khi thực hiện đồng bộ hóa cuối cùng nhưng không cần thực hiện. (virsh tắt NameOfMachine)
Nếu chưa có trên máy chủ nguồn, hãy tải xuống tập lệnh blocksync.py từ https://gist.github.com/rcoup/1338263
Nếu tên người dùng của bạn là người dùng (ví dụ) thì sao chép tập lệnh blocksync.py vào cả hai máy vào / home / user và chown user: user và chmod 755 script.
- Nếu chưa có trên máy chủ đích, hãy sao chép nó ở đó, ví dụ:
scp -p blocksync.py user@10.10.10,38: blocksync.py
- Sử dụng nó để sao chép đĩa nguồn vào đĩa đích, vd
Lệnh thực hiện sao chép
sudo -E python blocksync.py / dev / vg1 / vm_larry user@10.10.10,38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
Lưu ý: tên thiết bị đầu tiên dành cho máy chủ nguồn, như được xác định từ lệnh 'lvs'; cái này là từ máy chủ nguồn [[chewie]].
Lưu ý: điều này sẽ phá hủy nội dung của đĩa đích, đảm bảo rằng /dev/mapper/centos-larry.domainname.com.au là chính xác!
Lưu ý: quá trình đồng bộ sẽ mất nhiều thời gian - khoảng 100 giây mỗi gigabyte, tức là: 90 phút cho đĩa 60 gigabyte.
Tuy nhiên, bạn có thể thực hiện đồng bộ hóa khi VM đang sử dụng; đồng bộ hóa tiếp theo có thể nhanh hơn đến 25 phần trăm
Kịch bản sẽ in ra các tham số mà nó đang sử dụng (có thể có thông báo về mô-đun không dùng nữa, điều này không sao). Tiếp theo, nó sẽ hiển thị lệnh ssh mà nó đang sử dụng và chạy nó (bạn sẽ thấy nhân viên được ủy quyền chỉ nhắn tin khi thực hiện việc này). Trong quá trình đồng bộ hóa, nó sẽ hiển thị tổng số khối được sao chép và tốc độ trung bình của nó. Cuối cùng, nó in ra một thông báo hoàn thành với số giây nó đã mất.
Những điều cần biết
Bạn có thể hủy đồng bộ hóa với CTRL C và khởi động lại sau bằng cách chạy lại lệnh
Bước cuối cùng trên máy chủ đích
- Đăng nhập vào máy chủ đích, vd
ssh user@darth.domainname.com
- Tạo máy ảo, ví dụ:
virsh định nghĩa larry.xml
- Khởi động máy mới được xác định, ví dụ:
sudo virsh bắt đầu larry
- Đánh dấu nó để bắt đầu khởi động máy chủ, ví dụ:
sudo virsh autostart larry
Lưu ý: có thể cần phải thay đổi các chi tiết của VM cho phù hợp với môi trường mới.