====== Gandi 的 HVM ====== ===== 1 - 什麼是 HVM ? ===== Gandi 的虛擬化平台是從 [[http://wiki.xenproject.org/wiki/Paravirtualization_(PV)|XenPV]] (我們從 2008 年開始使用的虛擬化平台),遷移至 [[http://wiki.xen.org/wiki/Virtualization_Spectrum|PVHVM]] 與 [[http://www.linux-kvm.org/|KVM]] (硬體與軟體虛擬化的混合雲能提供效能提昇與簡易使用)。 現在提供給每一個人使用,Gandi 伺服器提供了典型的功能是架構在 HVM 上面的 -- 像是 [[https://www.gandi.net/hosting/iaas/livescaling|動態調整 CPU*, RAM 與 disk]] -- 還有一些新的功能: * 效能提昇 * 可以使用 grub 來自訂開機核心或自管核心 * 相容於任何支援 "virtio" 與 "ACPI events" 的系統 //* 請注意目前 HVM 平台無法在開機狀態下調整移除 CPU。您需要停止虛擬機器後再移除。// 您現在可以建立或將舊的虛擬伺服器遷移到我們新的平台。 選擇我們提供給您的開發版本與核心,或是建制安裝您自己的系統。 這份文件會引導您如何開始。 使用 [[http://cli.gandi.net|Gandi CLI]] 讓您更容易從命令列管理您的伺服器,但是從網頁一樣可以很開心的完成工作。 ===== 2 - 使用 HVM 建立一個新的虛擬機器 ===== 我們提供了三種符合 HVM 的 Linux 3.12 核心映像檔。 要建立一個新的虛擬機器,只要輸入以下指令(或是從網頁上選擇映像檔進行建立): **Debian 7** $ gandi vm create --image="Debian 7 64 bits (HVM)" --hostname <自訂一個名稱> **Debian 8** $ gandi vm create --image="Debian 8 64 bits (HVM)" --hostname <自訂一個名> **Ubuntu 14.04 LTS** $ gandi vm create --image="Ubuntu 14.04 64 bits LTS (HVM)" --hostname <自訂一個名> 您的虛擬機器將會在我們的平台上自動產生。 如果您想要使用自訂的核心與套件,請跳過下面的章節。 ===== 3 - 遷移現有的虛擬機器(VM) 到 HVM ===== 使用下列的指令來遷移您在我們 HVM 平台上的虛擬機器非常容易的。 底下將引導您完成 "gandi-hosting-vm2" 的套件安裝(將會安裝 ACPI 套件),依照您的系統調整一些設定檔並且將內核換成 ''3.12-x86_64 (hvm)''。 我們建議您在遷移之前先 [[http://wiki.gandi.net/en/iaas/references/disk/snapshots|快照]] 您的系統 您需要在虛擬機器(VM)上使用 **root** 權限(或用 "sudo")來執行命令。為了安全起見,請依照下列指令進行 如果您目前使用 32 位元的系統,我們建議遷移後使用 GRUB(如下說明)或是可能的話請使用 64 位元系統取代現在的 ==== 3.1 - 遷移 Debian 7 或是 Ubuntu 14.04 虛擬機器 ==== === 3.1.1 - 安裝相依套件 === 首先,連接到您的虛擬機器(範例中我們使用 "xenpv-server" 當作虛擬機器的名子) local $> gandi vm ssh xenpv-server 然後,請安裝 "gandi-hosting-vm2" 套件: xenpv-server #> apt-get install gandi-hosting-vm2 === 3.1.2 - 編輯系統檔案 === 複製貼上下列指令來修改 ''/etc/fstab'' 設定檔: xenpv-server #> sed -i 's/xvda1/sda/' /etc/fstab **Ubuntu 的注意事項** 在 Ubuntu 上,你還需要修改 ''/etc/mtab'' 這個檔案。您可以複製貼上下列指令來修改設定: xenpv-server #> sed -i 's/xvda1/sda/' /etc/mtab **Debian 7 的注意事項** 在 Debian 7 上複製與貼上下列的指令來移除 gandi-config 在 "/etc/inittab" 內的設定。''gandi-hosting-vm2'' 會在第一次開機時將新的設定自動修正。 xenpv-server #> sed -i '/^# console configuration by gandi-config$/,$d' /etc/inittab === 3.1.3 - 更新系統中的核心 === 一旦您在 Ubuntu 或 Debian 機器上修改好了設定。您可以升級系統核心到我們提供的 Linux 3.12 版本,它與 HVM 相容。假設您的系統硬碟叫做 ''xenpv-server-disk'',您可以用: local $> gandi disk update xenpv-server-disk --kernel "3.12-x86_64 (hvm)" --cmdline 'root=/dev/sda' === 3.1.4 - 停止然後重開 === 您現在可以停止並且重新啟動虛擬機器然後他就會在我們的 HVM 平台上開始運作。 local $> gandi vm stop xenpv-server # 沒有關閉電源無法遷移到新平台 local $> gandi vm start xenpv-server === 3.1.5 - 更新您的系統並且重新開機 === 最後,連接您的伺服器然後更新套件,請使用核心更新的方式: xenpv-server #> apt-get update xenpv-server #> apt-get upgrade xenpv-server #> reboot 到這邊您應該可以在我們的 HVM 平台上順利的執行您的虛擬機器了! ==== 3.2 - 遷移 CentOS, Fedora, Mageia 或 Mandriva 這類的虛擬機器 ==== === 3.2.1 - 安裝相依套件 === 首先,連接到您的虛擬機器(範例中我們使用 "xenpv-server" 當作虛擬機器的名子) local $> gandi vm ssh xenpv-server 然後,請安裝 "gandi-hosting-vm2" 套件: xenpv-server #> yum install gandi-hosting-vm2 或是 ''urpmi gandi-hosting-vm2'' 適用於 Mageia / Mandriva。 === 3.2.2 - 編輯系統檔案 === 複製貼上下列指令來修改 ''/etc/fstab'' 設定檔: xenpv-server #> sed -i 's/xvda1/sda/' /etc/fstab === 3.2.3 - 更新系統中的核心 Update the system disk's kernel === 一旦您在 Ubuntu 或 Debian 機器上修改好了設定。您可以升級系統核心到我們提供的 Linux 3.12 版本,它與 HVM 相容。假設您的系統碟叫做 ''xenpv-server-disk'',您可以執行: local $> gandi disk update xenpv-server-disk --kernel "3.12-x86_64 (hvm)" === 3.2.4 - 停止然後重開 === 您現在可以停止並且重新啟動虛擬機器然後他就會在我們的 HVM 平台上開始運作。 local $> gandi vm stop xenpv-server # 沒有關機無法遷移到新平台 local $> gandi vm start xenpv-server === 3.2.5 - 更新您的系統並且重新開機 === 最後,連接您的伺服器然後更新套件,請使用以下的更新方式: xenpv-server #> yum update xenpv-server #> reboot 如果您在 Mageia / Mandriva 上不是使用 "yum",請執行 ''urpmi --auto-select'' 來更新。 到這邊您應該可以在我們的 HVM 平台上順利的執行您的虛擬機器了! ==== 3.3 - 遷移其他發行版本 ==== 在我們提供給您內建的映像檔之前您需要自行研究如何遷移您的發行版本到我們的 HVM 平台。我們建議您閱讀上述的步驟研究如何將發行套件遷移。基本上,您需要做: - 安裝 ''gandi-hosting-vm2'' 套件 - 在您的發行版本上安裝等同於 ''acpid'' 與 ''acpi-support-base'' 對應套件(因為 ''gandi-hosting-vm2'' 相依性的關係) - 修改 ''/etc/fstab'', ''/etc/mtab'' 和/或是 ''/etc/inittab'' 設定檔,或是等同功能的檔案,修改成語上述相同設定的內容。 - 升級系統硬碟內的核心到 "3.12-x86_64 (hvm)",可以用 CLI 或是網頁介面。 - 停止虛擬機器並且重新開機(不是軟開機,要切斷電源那種重開機) - 更新系統套件,然後重開機 如果您遇到了麻煩,請參考下面的故障排除與支援來嘗試修正您的問題。 ===== 4 - 使用自訂的核心 ===== 在我們的 HVM 平台上,您可以選擇使用我們提供的映像檔與核心,或是使用 GRUB 開啟您自訂的系統與核心 ==== 4.1 - 使用我們的 GRUB 來開啟您自訂的核心 ===== 我們發行的伺服器在系統硬碟中使用 grub ,平台將會使用硬碟他自己的 GRUB 來開機。 平台的 GRUB 會讀取你的系統硬碟中特定位置的 GRUB 設定檔來開機。 您系統中的 GRUB 設定檔必須存在以下路徑: ''/boot/grub/grub.cfg'' 您的系統硬碟中可以使用您自訂的核心(核心或是發行套件不是由 Gandi 提供的),透過 GRUB 中的您指定的設定與資源來開啟您自訂的核心啟動伺服器。 === 4.1.1 - 遷移一個現有的伺服器到 HVM 並使用 GRUB === 您可以使用上述的指令來遷移您的伺服器並使用 GRUB,但您會需要額外設定一下內核與設定檔。 不一樣的核心與增加額外的設定。 一定您安裝好必要的套件並且編輯了系統檔案,使用 "grub" 核心(取代 3.12 (hvm) kernel)。舉例: local $> gandi disk update xenpv-server-disk --kernel grub local $> gandi vm stop xenpv-server local $> gandi vm start xenpv-server === 4.1.2 - Debian 與 GRUB 的範例 === 上述相關的 Debian 指令之外,在您變更您的核心之前,請依照下列步驟設定您的虛擬機器使用 GRUB 開機: hvm-server #> apt-get install grub2-common hvm-server #> apt-get install linux-image-amd64 hvm-server #> grub-mkconfig -o /boot/grub/grub.cfg local $> gandi disk update hvm-server-disk --kernel grub local $> gandi vm stop hvm-server local $> gandi vm start hvm-server === 4.1.3 - 遷移其他發行套件使用 GRUB === 每一種發行套件(或是同系列) 都有者一些特別的路徑、套件或是設定檔來使用 GRUB。通常,有一個非常重要的 GRUB 設定您需要加入設定檔中來啟用緊急終端機,還需要額外注意 GRUB 設定檔的位置。 GRUB_CMDLINE_LINUX='console=ttyS0' ==== 4.2 使用 GRUB 執行 FreeBSD(自訂核心範例) ==== 請用一個暫時的虛擬機器將 FreeBSD 安裝在一個非系統硬碟中來安裝 GRUB 設定檔。然後建立一個新伺服器並指定這顆硬碟為系統開機碟。 首先,您需要準備自己的 FreeBSD 映像檔。在 GNU/Linux 工作站上面,範例如下: local $> qemu-img create -f raw freebsd.raw 3G local $> kvm -hda freebsd.raw -cdrom freebsd.iso -boot d -curses "-curses" 選項需要複製貼上一些指令. 在 "Partitioning" 視窗,選擇 "Shell", 然後輸入: # newfs /dev/ada0 # cat << EOF > /tmp/bsdinstall_etc/fstab /dev/ada0 / ufs rw 1 1 EOF # exit 在 "網路設定(Network Configuration)" 視窗,不要設定任何網路介面。 在 "手動設定(Manual configuration)" 視窗, 開啟一個 "Shell",然後輸入: # mkdir /boot/grub # cat << EOF > /boot/grub/grub.cfg menuentry "FreeBSD" { insmod ufs2 set root=(hd0) kfreebsd /boot/loader } EOF # sed -i -e s/ada/da/ /etc/fstab # echo ifconfig_vtnet0=dhcp >> /etc/rc.conf # exit 然後,您可以將他加入伺服器中。 local $> gandi vm create --hostname freebsd-temp-config local $> gandi disk create --name freebsd-system --vm freebsd-temp-config local $> gandi vm ssh freebsd-temp-config freebsd-temp-config #> # copy your FreeBSD image to the server, then: freebsd-temp-config #> dd if=freebsd.raw of=/dev/ local $> gandi vm create --hostname freebsd local $> gandi disk update freebsd-system --kernel grub local $> gandi vm ssh freebsd freebsd #> uname -a > FreeBSD freebsd X.X-RELEASE FreeBSD X.X-RELEASE [...) 已知的問題 / 解決方式: - 需要手動增加 swap (swapon /dev/da1) - 需要安裝 ''gandi-hosting-vm2'' - FreeBSD 預設的防火牆, PF, 在虛擬環境中有效能的問題。您可以使用 IPFW 取代,或是關閉網路介面的 TSO (''ifconfig_vtnet0="-tso DHCP"'') ==== 4.3 - 直接從硬碟開機 ==== 如果您的系統硬碟中有 MBR(主要開機磁區),您可以直接使用硬碟開機,這讓您可以使用自己的開機引導程式,例如您可以使用裸機的方式開機。 如果您使用 GRUB 的話就能避免一些 MBRs,磁區與低階的操作管理,**當您直接對硬碟進行操作時都必須格外小心**。 在 GRUB 提示命令時輸入 "exit" 您將可以用硬碟開機 ==== 4.4 自訂映像檔的範例 ==== 首先,使用 HVM 上面的映像檔建立一個虛擬機器: local $> gandi vm create --name temphvm --datacenter=LU --image="Debian 7 64 bits (HVM)" 然後,建立並掛載一個新的硬碟到虛擬機器上。您將設定這顆硬碟可以開機。 local $> gandi disk create --vm temphvm --name rawbootdisk 使用暫時的虛擬機器來複製您的開機映像檔(譬如用 "dd")。 一個好了,卸載虛擬機器中的硬碟然後修改 kernel 為 "raw": local $> gandi disk detach rawbootdisk local $> gandi disk update rawbootdisk --kernel raw local $> gandi vm delete temphvm 最後,建立一個新的虛擬機器然後將這個硬碟設定為系統碟: local $> gandi vm create --datacenter LU --image rawbootdisk ===== 5 - 問題與幫助 ===== ==== 5.1 - 我的 VM 再也無法開機了 ==== 如果您的虛擬機器在遷移到 HVM 之後無法開機,您可以將核心回復到 3.10(或是其他不是 HVM 的核心)然後開機試看看,或是將系統硬碟掛載到另外一台電腦進行檢查: - 卸載你虛擬機器的系統碟 (''$ gandi disk detach my_boot_disk'') - 建立一個新的暫時虛擬機器 (''$ gandi vm create --hostname temphvmfix'') - 在這台暫時的虛擬機器將您的系統硬碟掛載成非系統硬碟 (''$ gandi disk attach my_boot_disk --vm temphvmfix'') - 修正錯誤 - 從暫時的虛擬機器上卸載硬碟 (''$ gandi disk detach my_boot_disk'') - 在原本的虛擬機器上重新將硬碟掛載成系統碟 (''$ gandi disk attach my_boot_disk --vm my_original_vm'') - 恢復測試 ==== 5.2 - 支援 ==== 請 [[http://www.gandi.net/support/contact/|聯絡我們的支援團隊]] 來回報您遇到的任何問題。 您可以加入 #gandi 在 freenode 上的頻道來與我們的開發者與其他客戶交流。