-
Trước khi chuyển ổ đĩa của máy ảo, kiểm tra disk controller hiện tại . Với các máy ảo EXSi sẽ được quản lý với SCSI VMware Paravirutal Controller, cơ chế sinh UUID trong các disk sẽ khác, nên khi chuyển sang KVM, sử dụng SISC bus sẽ khiến UUID được
-
Cài đặt package
yum install qemu-img virt-install virt-viewer
- Kiểm tra ổ đĩa
# ls
hungnt-convert.vmdk
- Chuyển ổ đĩa định đạng vmdk sang qcow2 thử dụng qemu-img
qemu-img convert -f vmdk -O qcow2 hungnt-convert.vmdk hungnt-convert.qcow2
- Khởi tạo máy ảo từ disk , bus sata hoặc ide, SCSI đang bị kiểm soát bởi VMware SCSI Paravirtual Controller
virt-install --connect qemu:///system \
--name centos7 --ram 2048 --vcpus 1 \
--network network=default,model=virtio \
--boot hd \
--disk path=/var/lib/libvirt/images/hungnt-convert.qcow2,format=qcow2,device=disk,bus=sata \
--vnc --os-type linux \
--channel unix,target_type=virtio,name=org.qemu.guest_agent.0
- Rebuild initramfs
rpm -qa kernel | sed 's/^kernel-//' | xargs -I {} dracut -f /boot/initramfs-{}.img {}
- Update package
yum update -y
- Cài đặt QEMU-guest-agent
yum install -y qemu-guest-agent
systemctl enable qemu-guest-agent.service
systemctl start qemu-guest-agent.service
- Tắt iptables
systemctl disable firewalld
systemctl stop firewalld
- SeLinux Policy cho phép QEMU và Cloud-init hoạt động
yum -y install policycoreutils-python
yum reinstall -y selinux-policy-targeted
semanage permissive -a virt_qemu_ga_t
semanage permissive -a cloud_init_t
- Cài đặt acpid
yum install -y acpid
systemctl enable acpid
- Cài đặt cloud-init và cloud-utils-growpart
yum install -y epel-release
yum install -y cloud-init cloud-utils cloud-utils-growpart dracut-modules-growroot
- Sau khi cài đặt cloud-init, thực hiện chỉnh sửa một số cấu hình
sed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg
sed -i 's/ssh_pwauth: 0/ssh_pwauth: 1/g' /etc/cloud/cloud.cfg
sed -i 's/name: centos/name: root/g' /etc/cloud/cloud.cfg
- Để nhận được hostnamne từ cloud-init, xoá file hostname
rm -f /etc/hostname
- Cho phép VM có thể route với link local address
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
- Tắt IPv6 net-module
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
- Xoá cấu hình net-card mặc định
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0
- Cho phép interface tự động cấu hình card mạng và tự động up sau sau khi atach
systemctl start NetworkManager
systemctl enable NetworkManager
- Để nova console-log có thể get log. Chỉnh sửa tại file
/etc/default/grub
, trên sectionGRUB_CMDLINE_LINUX
thay thếrhgb quiet
bằngconsole=tty0 console=ttyS0,115200n8
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
to
GRUB_CMDLINE_LINUX="crashkernel=auto console=tty0 console=ttyS0,115200n8"
- Rebuild GRUB
grub2-mkconfig -o /boot/grub2/grub.cfg
- Xoá cloud init info
rm -rf /var/lib/cloud/*
- Xoá log
yum clean all
rm -f /var/log/wtmp /var/log/btmp
rm /root/.bash_history; history -c
- Shutdown máy ảo
poweroff
- Sysprep VM
yum install /usr/bin/virt-sysprep
virt-sysprep -d centos7
- Copy image của máy ảo sang CEPH node. Sau khi disk được chuyển sang ceph node, disk sẽ sử dụng đúng dung lượng tối đa ( disk size = virtual size)
scp /var/lib/libvirt/images/hungnt-convert.raw root@ceph_node1:/root
- Hiện tại disk đang ở mode thin provisioned.
# qemu-img info hungnt-convert.qcow2
image: hungnt-convert.qcow2
file format: qcow2
virtual size: 16G (17179869184 bytes)
disk size: 2.0G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
- Chuyển disk về định dạng raw
qemu-img convert -O raw hungnt-convert.qcow2 hungnt-convert.raw
- Trên Openstack, khởi tạo volume có size bằng virtual size của image
openstack volume create volume-convert --size 16
- Xem info volume_id vừa khởi tạo
# openstack volume show volume-convert | grep id
| id | 75ca7927-027d-4593-8a57-e9dbf619fe6b |
- Sau khi đã có ID, thực hiện update status volume về dạng bootable
cinder set-bootable 75ca7927-027d-4593-8a57-e9dbf619fe6b True
- Lấy ID của volume xuống node CEPH, thực hiện tìm và xóa volume này trên CEPH. Format các volume từ cinder xuống ceph sẽ là
pool/volume-$volume_uuid
rbd info volumes/volume-75ca7927-027d-4593-8a57-e9dbf619fe6b
rbd rm volumes/volume-75ca7927-027d-4593-8a57-e9dbf619fe6b
- Trích dẫn image format
--image-format format-id
Specifies which object layout to use. The default is 2.
format 1 - (deprecated) Use the original format for a new rbd image. This format is understood by all versions of librbd and the kernel rbd module, but does not support newer features like cloning.
format 2 - Use the second rbd format, which is supported by librbd and kernel since version 3.11 (except for striping). This adds support for cloning and is more easily extensible to allow more features in the future.
- Thực hiện khởi tạo image , sử dụng ID trung với volume cũ ( volume vừa xóa )
rbd import --image-format 2 /root/hungnt-convert.raw volume-75ca7927-027d-4593-8a57-e9dbf619fe6b --dest-pool volumes
- Image sau khi được khởi tạo chỉ nhận size từ image nguồn
rbd info volumes/volume-75ca7927-027d-4593-8a57-e9dbf619fe6b
rbd image 'volume-75ca7927-027d-4593-8a57-e9dbf619fe6b':
size 16 GiB in 4096 objects
order 22 (4 MiB objects)
id: e1b2b6b8b4567
block_name_prefix: rbd_data.e1b2b6b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Mon Jul 8 10:13:33 2019
- Thực hiện Resize trên Openstack
openstack volume set 75ca7927-027d-4593-8a57-e9dbf619fe6b --size 25
- Sau khi resize kiểm tra lại trên CEPH
# rbd info volumes/volume-75ca7927-027d-4593-8a57-e9dbf619fe6b
rbd image 'volume-75ca7927-027d-4593-8a57-e9dbf619fe6b':
size 25 GiB in 6400 objects
order 22 (4 MiB objects)
id: e1b2b6b8b4567
block_name_prefix: rbd_data.e1b2b6b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Mon Jul 8 10:13:33 2019