# 實體機與虛擬機轉換

# 轉移相關設定

##### **Windows使用disk2vhd備份工具加virtualbox轉換**

[**disk2vhd**載點](https://learn.microsoft.com/en-us/sysinternals/downloads/disk2vhd)

1. 下載界壓縮後disk2vhd64.exe，  
    [![圖片.png](https://book.4inlibra.com/uploads/images/gallery/2025-03/scaled-1680-/0Y8aE5KvHj.png)](https://book.4inlibra.com/uploads/images/gallery/2025-03/0Y8aE5KvHj.png)
    
      
    並勾取要備份的磁區跟右上角的3個選項，跟儲存的路徑。 [![圖片.png](https://book.4inlibra.com/uploads/images/gallery/2025-03/scaled-1680-/OcrKHWsnaM.png)](https://book.4inlibra.com/uploads/images/gallery/2025-03/OcrKHWsnaM.png)
2. 完成後得到一個.vhdx檔案，在使用Virtualbox指令進行格式轉移(Virtualbox需要先安裝[(路徑)](https://www.virtualbox.org/wiki/Downloads))  
    ```
    VboxManage.exe clonehd "原始VHDX檔案絕對路徑.vhdx" "轉換後的vdi檔案路徑.vdi" –format vdi
    ```
    
    <span style="color: rgb(224, 62, 45);">備註:1.該指令需要在Virtualbox目錄下執行。  
     2.也可以轉VDI|VMDK|VHD|RAW</span>
3. <span style="color: rgb(0, 0, 0);">完成後即可以在Virtualbox上使用。</span>

##### **參考網頁**

**https://youyouyou.pixnet.net/blog/post/121237292**

# PVE學習筆記

##### 虛擬機關閉或解鎖

```
qm unlock <VM ID>
qm stop <VM ID>
```

##### backup(備份)


```
vzdump 101 102 107 108 115 114 112 104 110 --compress lzo --mailnotification always --mode snapshot --quiet 1 --storage Backup --mailto mail@domain.com
```

##### 安裝agent

```
apt install qemu-guest-agent
```

##### node損壞重新上線

```
service rrdcached stop
rm -rf /var/lib/rrdcached/*
service rrdcached start
```

**確認結果**

```
service rrdcached status
```

##### TASK ERROR: cluster not ready – no quorum?法定人數不夠時

**<span style="color: rgb(224, 62, 45);">備註說明：觀念加強，不要忘記pve是採用多數決的去中心化模式，因此當cluster中的端點數量不足時會鎖住pve的設定檔，故如果只有2台nodes時可能會遇到這個問題。</span>**  
作法

```
pvecm status ---會看到Quorum: 2 Activity blocked
pvecm expected 1 ---叢集數更動為1，可先備份/etc/pve
service pve-cluster restart  ---重新啟動叢集
```

可以做修改或新增(重加)node  
EX:如需要刪除不要的node

```
pvecm delnode (node name)
```

##### 2FA取消

**將 <span style="color: rgb(224, 62, 45);">/etc/pve/user.cfg </span>中的使用者的訊息取消**

##### 開機諜有做raid1 or 5可容錯而其中一台損壞時

```
sgdisk -R newdisk olddisk （直接複製分割方案）
sgdisk -G newdisk         （確保唯一）
dd if=/dev/olddisk1 of=/dev/newdisk1
zpool replace rpool olddisk2 newdisk2 (可能需要使用-f強制)
```

##### 如果pve出現CVE-2018-3646的漏洞提示時該如何處理

```
echo off > /sys/devices/system/cpu/smt/control 關閉CPU超線程
```

##### pve虛擬機直接掛載實體硬碟

```
ls -l /dev/disk/by-id/
vi /etc/pve/qemu-server/xxx(VMID).conf
virtio0: /dev/disk/by-id/ata-ST2000DL003-9VT166_5YD1ZYK5,size=2000G
```

<span style="color: rgb(224, 62, 45);">**\#可以不用標註容量**</span>

##### Pve virtio 下載iso檔

```
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
```

##### 識別網卡

安装ethtool

```
apt install ethtool -y
```

使用網卡燈號檢查對應網卡

```
ethtool --identify (網路端口名稱)
```

[![1742269300058.jpg](https://book.4inlibra.com/uploads/images/gallery/2025-03/scaled-1680-/1742269300058.jpg)](https://book.4inlibra.com/uploads/images/gallery/2025-03/1742269300058.jpg)

<span style="color: rgb(224, 62, 45);">備註:有些網卡不支援這種方式</span>

如果沒有只能直接用switch接線測試。

打開端口自動啟動 &amp; 重啟系统  
確認所有網卡設備位置

```
lspci | grep -i 'eth'
```

通過ethtool識別端口對應設備位置以及系统設備名

```
ethtool -i [設備名稱]  #查看設備對應設備位置
ethtool [設備名稱]  #通過查看是否連接確認設備名對應實際端口，如果硬體支持可以使用ethtool --identify [設備名] 命令確認）
```

端口自動啟動 &amp; 重啟系统

##### 开启硬件直通

BIOS中打开硬件直通相关选项（VT-d &amp; VMX）  
编辑Grub

```
nano /etc/default/grub
```

注释原条目，并增加开启参数

```
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
```

如果你的pcie设备分组有问题也可以换成这一行对分组拆分（直通遇到问题都可以尝试这个）

```
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream"
```

更新grub

```
update-grub
```

上传启动镜像  
将镜像img扩展名修改为iso，直接通过PVE后台上传  
创建虚拟机并设置直通

##### 修改配置文件命令

```
nano /etc/pve/qemu-server/[虚拟机编号].conf
```

##### pve虛擬機遷移指定使用網路

```

qm migrate <虛擬機ID> <目標節點> --online --migration_network x.x.x.0/xx
```

##### 虛擬機直通PCI界面設定方式

依照amd或intel的cpu不同而編輯grub，

**Intel:**

新增下方指令到<span style="color: rgb(224, 62, 45);">GRUB\_CMDLINE\_LINUX\_DEFAULT=""</span>裡面

```
intel_iommu=on
```

[![image.png](https://book.4inlibra.com/uploads/images/gallery/2025-02/scaled-1680-/HMBimage.png)](https://book.4inlibra.com/uploads/images/gallery/2025-02/HMBimage.png)

**AMD:**

新增下方指令到<span style="color: rgb(224, 62, 45);">GRUB\_CMDLINE\_LINUX\_DEFAULT=""</span>裡面

```
amd_iommu=on
```

使用<span style="color: rgb(224, 62, 45);">update-grub</span> 更新啟動設定。

新增下方資料到<span style="color: rgb(224, 62, 45);">/etc/modules</span>

```
#vfio
#vfio_iommu_type1
#vfio_pci
#vfio_virgfd
```

重新開機

##### **將虛擬機從VMWare轉向PVE**

**<span style="color: rgb(224, 62, 45);">方法1:</span>**

<span style="color: rgb(0, 0, 0);">如果有訂閱<span style="color: rgb(224, 62, 45);">VMWare8.0</span>以上跟使用<span style="color: rgb(224, 62, 45);">PVE8.2</span>以上版本可以直接使用GUI介面進行轉移。</span>

[![圖片.png](https://book.4inlibra.com/uploads/images/gallery/2025-03/scaled-1680-/Tu3AjdLfcJ.png)](https://book.4inlibra.com/uploads/images/gallery/2025-03/Tu3AjdLfcJ.png)

轉移的時候VM需要關機，看起來是最簡單的方式但我沒有試過，所以做之前記得做完整的資料備份。

**<span style="color: rgb(224, 62, 45);">方法2:</span>**

使用GUI介面上傳OVA到PVE在進行佈建，上船方式如下圖所示。

[![圖片.png](https://book.4inlibra.com/uploads/images/gallery/2025-03/scaled-1680-/kKMqXe9D6a.png)](https://book.4inlibra.com/uploads/images/gallery/2025-03/kKMqXe9D6a.png)

上傳完成後再點擊旁邊的Import進行佈建，調整成PVE可以搭配的硬體規格。

因為VMWare本身無法直接匯出OVA檔，需要使用官方工具，但如果沒有要那麼麻煩可以直接匯出OVF在用下方指令合成OVA檔

```
tar -cvf VM.ova VM.ovf VM.vmdk VM.mf
```

**<span style="color: rgb(224, 62, 45);">備註:要匯出的VM需要關機或複製一台新的做匯出，匯出的名稱最好是全英文的。</span>**

如果不想那麼麻煩其實也可以將OVF資料(含vmdk mf 等)上傳到使用PVE主機後進行布建，但這些過程就都是使用指令。

1. 使用<span style="color: rgb(224, 62, 45);">scp</span>將資料上傳到PVE主機。  
    ```
    scp <來源路徑> root@<IP>:目標路徑
    ```
2. 然後再使用qm importovf進行ovf的匯入。  
    ```
    qm importovf {vmid} {VM name}.ovf {target storage}
    ```
    
    <span style="color: rgb(224, 62, 45);">備註:可以加--format然後將格式轉成`raw`<span style="font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); display: inline !important; float: none;">, </span>`vmdk`<span style="font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); display: inline !important; float: none;">, </span>`qcow2或`<span style="font-family: monospace, monospace; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(248, 249, 250); display: inline !important; float: none;">--cpu x86-64-v2-AES --scsihw virtio-scsi-single等等，也可  
     以之後再用GUI修改比較簡易。</span></span>
3. 最後最重要如果是<span style="color: rgb(224, 62, 45);">Windows系統</span>，要將硬碟控制器從原本的iscsi更<span style="color: rgb(224, 62, 45);">改成SATA或ide</span>，先使用<span style="color: rgb(224, 62, 45);">Detche</span>刪除該硬碟，然後硬碟會變成Unset，點擊硬碟重新設定控制器SATA或ide就可以。

<span style="color: rgb(224, 62, 45);">**方法3:**</span>

系統轉移通常最重要的是資料，可以使用clonezilla或指令qm disk import進行匯入，

```
qm disk import {target VMID} {vmdk file} {target storage}
```

<span style="color: rgb(224, 62, 45);">備註:跟qm importovf一樣後面可以加cpu format等等參數進行設定。</span>

匯入後硬碟的設定會是unset，如果是Windows系統就改成sata或ide。

**使用qemu-img將vhdx轉成qcow2**

```
qemu-img convert -O qcow2 {原始檔案} {目標檔案}
```

另一種方式

```
qemu-img convert -f {來源格式} -O {目的格式} 來源檔案 目標檔案
```

##### 將Local-Lvm合併到local

1.如果local-lvm已經有虛擬機或檔案都要移走，不然都會不見。

2.在cmd模式使用以下指

```
lvremove pve/data

lvextend -l +100%FREE -f pve/root

resize2fs /dev/mapper/pve-root
```

 3.完成後local會增加。

4.local-lvm已經沒用需要刪除。

# VirtualBox筆記

#### 指令使用無標頭啟動（headless）

```
VBoxManage startvm "VM名稱|uuid" --type headless

VBoxHeadless --startvm {VM名稱|uuid}
```

### 問題處理

##### l開啟虛擬機出現kernel driver not installed(rc=-1908)

執行虛擬機出現以下圖示

[![Screenshot at 2025-04-25 10-29-13.png](https://book.4inlibra.com/uploads/images/gallery/2025-04/scaled-1680-/screenshot-at-2025-04-25-10-29-13.png)](https://book.4inlibra.com/uploads/images/gallery/2025-04/screenshot-at-2025-04-25-10-29-13.png)

使用root或sudo執行下方指令進行virtualbox設定

```
sudo /sbin/vboxconfig
```

會出現下方回應

[![image.png](https://book.4inlibra.com/uploads/images/gallery/2025-04/scaled-1680-/image.png)](https://book.4inlibra.com/uploads/images/gallery/2025-04/image.png)

這是因為安裝的時候少了一些重要核心程式所致

安裝以下套件

```
sudo apt install build-essential dkms

sudo apt install linux-headers-generic-hwe-24.04
```

備註：Linux-headers-generic-hwe要注意一下host本機系統版本

完成後在執行

```
sudo /sbin/vboxconfig
```

出現以下完成圖示

[![image.png](https://book.4inlibra.com/uploads/images/gallery/2025-04/scaled-1680-/cIiimage.png)](https://book.4inlibra.com/uploads/images/gallery/2025-04/cIiimage.png)

#### 虛擬機無法使用usb

將host的使用者加入vboxusers群組即可。