CentOS 7 設定開機模式
安裝CentOS時候, 會選擇圖形介面方式安裝,安裝完畢, 理所當開機就是圖形模式,
當設定都就緒之後, 開機就可以改成文字命令模式開機
# 取得目前開機模式 systemctl get-default # 設定模式 ## 命令模式 systemctl set-default multi-user.target ## 圖形模式 systemctl set-default graphical.target
安裝CentOS時候, 會選擇圖形介面方式安裝,安裝完畢, 理所當開機就是圖形模式,
當設定都就緒之後, 開機就可以改成文字命令模式開機
# 取得目前開機模式 systemctl get-default # 設定模式 ## 命令模式 systemctl set-default multi-user.target ## 圖形模式 systemctl set-default graphical.target
sudo vi /etc/ssh/sshd_config # 加上以下設定 PermitRootLogin yes # 重啟sshd sudo systemctl restart sshd.service
參考 http://www.linux-kvm.org/page/Networking#Public_Bridge
必須要這樣設定,才能讓 ravada vdi 或是 kvm 新增網卡時候, 不走nat模式, 走bridge模式
手動新增(每次開機都需要再執行一次)
# 請注意 要準備 eth1 為ubuntu第二網卡,請不要用原本的eth0 ip link add br0 type bridge ; ifconfig br0 up ip link set eth1 master br0
開機自動啟動
# 若是 lxc 使用ubuntu 18.04 請記得確定有安裝netplan apt install ifupdown #修改 /etc/network/interfaces auto br0 iface br0 inet dhcp bridge_ports eth1 bridge_stp off bridge_maxwait 0 bridge_fd 0
1. 匯出xml設定檔案,假設vm名稱為 win10_1909
mkdir win10_1909 virsh dumpxml win10_1909 > win10_1909/win10_1909.xml
2.找出所有qcow2並且複製到vm_name這個目錄
cp /var/lib/libvirt/images/win10_1909*.qcow2 win10_1909/
3.壓縮整個目錄
tar jcvfp win10_1909.bz2 win10_1909
1.解開bz2
tar vfxz win10_1909.bz2
2.匯入設定檔案
virsh define --file win10_1909/win10_1909.xml
3.複製qcow2檔案
cp win10_1909/*.qcow2 /var/lib/libvirt/images
1. 查看系統是否載入nbd模組, 若沒有就載入
#查看 lsmod |grep nbd #載入 modprobe nbd max_part=16
2. 掛載
qemu-nbd -c /dev/nbd0 xxxx.qcow2
3.fdisk查看/dev/nbd0
fdisk /dev/nbd0
Ravada vdi 網站資源
1. 實體機(or lxc in pve)安裝ubuntu 18.04
CPU需支援虛擬功能 ,
若使用pve的 lxc , 該 lxc container需在options中要啟用nest指令, 並且需修改主機中該lxc container的設定
mkdir -p /dev/net vi /etc/pve/lxc/<lxc_id>.conf 增加 lxc.mount.entry = /dev/kvm dev/kvm none bind,create=file
lxc.cgroup.devices.allow: c 10:232 rwm
啟後,確認權限是否為666,若沒有就要到pve主機(非lxc) 改一下 chmod 666 /dev/kvm
ps. pve的lxc安裝ravada 後來測試還是失敗 (2020/05/04)
且該container確認安裝以下套件 sudo apt-get install virt-manager ssh-askpass-gnome --no-install-recommends sudo apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker
2 安裝mysql
sudo apt-get update sudo apt-get upgrade sudo apt-get install mysql-server sudo mysql_secure_installation sudo mysqladmin -u root -p create ravada sudo mysql -u root -p ravada -e "create user 'rvd_user'@'localhost' identified by 'Pword12345*'" sudo mysql -u root -p ravada -e "grant all on ravada.* to rvd_user@'localhost'"
3 查看mysql設定檔案,可視需要修改使用者密碼,但要搭配上一步驟一起修改
sudo vi /etc/ravada.conf db: user: rvd_user password: Pword12345*
4 安裝相關套件
sudo apt-get install perl libmojolicious-perl mysql-common libauthen-passphrase-perl \ libdbd-mysql-perl libdbi-perl libdbix-connector-perl libipc-run3-perl libnet-ldap-perl \ libproc-pid-file-perl libvirt-bin libsys-virt-perl libxml-libxml-perl libconfig-yaml-perl \ libmoose-perl libjson-xs-perl qemu-utils perlmagick libmoosex-types-netaddr-ip-perl \ libsys-statistics-linux-perl libio-interface-perl libiptables-chainmgr-perl libnet-dns-perl \ wget liblocale-maketext-lexicon-perl libmojolicious-plugin-i18n-perl libdbd-sqlite3-perl \ debconf adduser libdigest-sha-perl qemu-kvm libnet-ssh2-perl libfile-rsync-perl \ libdate-calc-perl libparallel-forkmanager-perl libssh2-1-dev libssh2-1 libdate-calc-perl \ zlib1g-dev libpcre3-dev zlib1g-dev libpcre3-dev make gcc gcc-4.8 \ libdatetime-perl libdatetime-locale-perl libdatetime-timezone-perl libparams-validationcompiler-perl libspecio-perl libio-stringy-perl libpbkdf2-tiny-perl \ libfile-sharedir-perl libclass-singleton-perl libsub-quote-perl libexception-class-perl libref-util-perl libclass-data-inheritable-perl libclass-inspector-perl net-tools
sudo reboot
底下0.10-1_all版本, 可至 http://infoteleco.upc.edu/img/debian/ 確認是否最新
wget http://infoteleco.upc.edu/img/debian/libmojolicious-plugin-renderfile-perl_0.10-1_all.deb sudo dpkg -i libmojolicious-plugin-renderfile-perl_0.10-1_all.deb
sudo perl -MCPAN -we 'install "Net::SSH2"'
5 安裝Ravada
以下ravada版本0.7.0 可上官網確認最新版 http://infoteleco.upc.edu/img/debian/
wget http://infoteleco.upc.edu/img/debian/ravada_0.7.0_ubuntu-18.04_all.deb sudo dpkg -i ravada_0.7.0_ubuntu-18.04_all.deb sudo apt-get update sudo apt-get -f install
6 設定啟動參數
sudo systemctl daemon-reload sudo systemctl enable rvd_back sudo systemctl enable rvd_front sudo systemctl start rvd_back sudo systemctl start rvd_front
7 設定qemu 壓縮
sudo vi /etc/libvirt/qemu.conf 加上以下參數 save_image_format = "bzip2"
8 重開機後,新增使用者,並且同意該使用者為管理員
sudo /usr/sbin/rvd_back --add-user <使用者>
9 使用瀏覽器連線登(上一個步驟新增的使用者登入)
10 登入ravada後, 安裝VM(win 10)
記得要先把win10 安裝檔案放到ravada主機上(/var/lib/libvirt/images), 然後執行以下指令刷新列表
sudo virsh pool-list
ps.安裝win 10會很痛苦, 滑鼠很慢,之後安裝驅動程式就正常了
11 win10安裝完畢,登入win10下載驅動程式並且安裝起來
安裝virtio驅動程式 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/ 執行qemu-ga-x64.msi (64-bit) or qemu-ga-x86.msi (32-bit)
安裝spice guest tools https://www.spice-space.org/download.html https://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-latest.exe
#安裝win10後關機, 編輯開機設定,讓vm的cpu與本機同步 virsh edit <vm name> 加上host-passthrough(直接使用原本的cpu), 以及核心數4(請依照實際cpu數修改) <cpu mode='host-passthrough'> <topology sockets='1' cores='4' threads='1'/> </cpu>
若是 linux,樹梅派,可安裝virt-viewer這套件, 安裝完畢可以執行remote-viewer進行連線 若是windows,請到此下載 https://virt-manager.org/download/
ps 目前不要嘗試docker, 若要嘗試,請切換branch到369_dockers, 但有一些perl 的bug,要自己修正才能執行,可是最後又會出現backend錯誤
備份
1. 請參考 https://kafeiou.pw/2020/03/25/2303/ 透過virsh方式備份xml 2. 備份 mysql mysqldump -u root -p ravada domains > domains.sql mysqldump -u root -p ravada networks > networks.sql
還原
1.將/var/lib/libvirt/images 同步到新的主機上 2.同步相關xml 3.資料庫還原
單一vdi還原
除了使用virsh還原外,還需以下指令, 然後再到網頁調整一下硬體設定
rvd_back --import-domain=<machine name>
查看zfs的狀態
root@pve:/dev/zvol/zdata# zpool status
pool: zdata
state: ONLINE
scan: scrub repaired 0B in 2h35m with 0 errors on Sun Mar 8 02:59:48 2020
config:
NAME STATE READ WRITE CKSUM zdata ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0xDC_WD10EZEX-08WN4A0_WD-WCC6Y3LRYL6X ONLINE 0 0 0 wwn-0xDC_WD10EZEX-08WN4A0_WD-WCC6Y2SYFNY2 ONLINE 0 0 0
errors: No known data errors
查看zfs的檔案
root@pve:/dev/zvol/zdata# zfs list -t volume NAME USED AVAIL REFER MOUNTPOINT zdata/vm-100-disk-0 33.0G 175G 56K - zdata/vm-100-disk-1 683G 142G 683G - zdata/vm-101-disk-0 27.0G 142G 27.0G - zdata/vm-102-disk-0 10.3G 142G 10.3G - zdata/vm-103-disk-0 4.12G 142G 4.12G -
刪除某個vm, 但是失敗
root@pve:/dev/zvol/zdata# zfs destroy zdata/vm-103-disk-0 cannot destroy 'zdata/vm-103-disk-0': dataset is busy
停用 multipathd 服務, 然後再刪除看看, 結果成功
root@pve:/dev/zvol/zdata# systemctl stop multipathd.service Warning: Stopping multipathd.service, but it can still be activated by: multipathd.socket root@pve:/dev/zvol/zdata# zfs destroy zdata/vm-103-disk-0 root@pve:/dev/zvol/zdata# zfs list -t volume NAME USED AVAIL REFER MOUNTPOINT zdata/vm-100-disk-0 33.0G 179G 56K - zdata/vm-100-disk-1 683G 146G 683G - zdata/vm-101-disk-0 27.0G 146G 27.0G - zdata/vm-102-disk-0 10.3G 146G 10.3G - root@pve:/dev/zvol/zdata#
pve預設使用LV(Logical Volume), 所以可以使用指令的方式查詢目前磁碟劃分的狀態
root@pve:~# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- 339.33g 0.00 0.04
root pve -wi-ao---- 96.00g
swap pve -wi-ao---- 7.00g
pve預設使用 /dev/pve/data 掛載 lvm-thin , 因此移除掉(請先確認無任何資料)
root@pve:~# lvremove /dev/pve/data
查看還有多少可用空間
root@pve:~# vgdisplay pve --- Volume group --- VG Name pve System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 32 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 465.26 GiB PE Size 4.00 MiB Total PE 119106 Alloc PE / Size 26368 / 103.00 GiB Free PE / Size 92738 / 362.26 GiB VG UUID PGiSeZ-0yrO-lWUb-GWae-k307-5GPS-UTWXfN
將多出來的空間建立新的lv , 建立之後就可以針對 /dev/pve/data 格式化成ext4
root@pve:~# lvcreate -l 92738 -n data pve WARNING: dos signature detected on /dev/pve/data at offset 510. Wipe it? [y/n]: y Wiping dos signature on /dev/pve/data. Logical volume "data" created. root@pve:~# mkfs.ext4 /dev/pve/data
最後再mapping到系統的/data目錄 , 並且寫在/etc/fstab 以後開機自動掛載
root@pve:~# mkdir /data root@pve:~# mount /dev/pve/data /data root@pve:~# blkid|grep pve-data /dev/mapper/pve-data: UUID="1560ee98-1a51-4673-b117-807c8b353fc2" TYPE="ext4" root@pve:~# more /etc/fstab UUID="1560ee98-1a51-4673-b117-807c8b353fc2" /data ext4 defaults 0 1