Virtual Machine
What?
Virtual Machine 是一種虛擬化技術,用來模擬一個完整的計算機系統。它允許使用者在一台實體機器上運行多個虛擬環境,每個環境都像是一台獨立的電腦,擁有自己的作業系統、應用程式和資源。
簡單來說, Virtual Machine 就像是一台「虛擬的電腦」,可以在你的實體硬體之上模擬出多台獨立的電腦。舉例來說,如果你需要在同一台開發用的筆記型電腦上,同時測試不同版本的 Windows 和 Linux, Virtual Machine 就變得非常有用。
Who?
-
開發者(Developers)
開發階段時需要測試應用程式在不同作業系統上的相容性,或快速建立隔離的測試環境。 -
IT 管理員(System Administrators)
用於伺服器整合,將多個伺服器轉換成虛擬化主機以減少硬體資源成本。 -
安全工程師(Security Engineers)
創建沙盒環境,用於分析惡意軟體或執行高風險操作。 -
普通使用者(End Users)
想要在自己的電腦上運行特定作業系統,例如在 macOS 上安裝 Windows。
When?
- 當你需要測試跨平台應用程式。
- 當你要部署多個伺服器,但希望降低硬體成本。
- 當你需要隔離某些高風險操作,例如執行未經檢查的程式碼。
- 當你想要回到某個特定的系統狀態(利用 VM 快照功能)。
例如:假設你是一名開發者,需要在 Linux 環境下進行 API 測試,但你的筆記型電腦是 Windows 系統,這時就可以快速啟動一台 Linux 的 Virtual Machine 來進行操作。
Where?
-
本地端(Local Environment)
- 例如安裝在你的筆記型電腦上的 VirtualBox 或 VMware Workstation。
-
雲端平台(Cloud Environment)
- 例如 AWS EC2 或 Google Cloud Compute Engine 中提供的 VM 實例。
-
資料中心(Data Center)
- 在大型企業內部運作,用於伺服器整合與資源管理。
Why?
-
資源有效利用: 一台實體主機可以同時運行多台 VM,避免硬體閒置浪費。
-
隔離性: 每台 VM 都是獨立運作,不會干涉其他 VM 或宿主系統。
-
可移植性: VM 可以打包並移動到其他設備或雲平台上,不受硬體限制。
-
方便恢復: 利用快照功能,可以輕鬆回到某個特定狀態,例如測試前狀態。
舉例而言,如果某應用程式意外崩潰,只需恢復快照即可,不必重新安裝整套系統。
How?
🛠️ 建立階段
建立一台新的 Virtual Machine 的基本流程如下:
- 選擇虛擬化工具,例如 VirtualBox 或 VMware Workstation。
- 安裝並啟動工具後,新建一個 VM 實例。
- 配置基礎設定,包括:
- 分配 CPU、RAM 和硬碟空間等資源。
- 選擇安裝作業系統所需的 ISO 檔案(如 Ubuntu.iso)。
- 啟動 VM 並完成 OS 安裝流程,就像正常安裝作業系統那樣操作即可。
🔍 查詢階段
當 VM 已建立後,可進行以下操作來查詢其狀態或執行命令:
-
使用虛擬化工具提供的介面檢查:
- CPU 使用率
- 網路流量
- 磁碟 IO 等資訊
-
在客戶端 OS 中執行命令,如:
# 查詢 Linux 系統內部資訊
top # 查看 CPU 與 RAM 使用率
df -h # 查看磁碟空間
- 若是雲端服務中的 VM,可透過平台 API 查詢其詳細狀況,例如:
# AWS CLI 查詢 EC2 實例狀態
aws ec2 describe-instances --instance-ids i-0123456789abcdef0
補充說明
🔧 關鍵技術工具
| 工具名稱 | 功能特色 | 適用場景 |
|---|---|---|
| VirtualBox | 免費開源虛擬化工具 | 個人桌面端 |
| VMware Workstation Pro | 商業級桌面虛擬化 | 高效能需求 |
| Hyper-V | 微軟內建虛擬化解決方案 | Windows Server 平台 |
| KVM | Linux 原生虛擬化技術 | 資料中心、大規模部署 |
| AWS EC2 | 雲端提供的 VM 實例 | 雲端計算 |
📌 範例比較
以下比較本地與雲端部署方式:
| 項目 | 本地 VirtualBox | 雲端 AWS EC2 |
|---|---|---|
| 成本 | 僅需硬體支出 | 按使用量計費 |
| 資源調度 | 手動配置 | 自動調整 |
| 擴展性 | 有限,由本地硬碟與 RAM 限制 | 高度可調整 |
🧠 延伸/常見誤解
1️⃣ 誤解:「VM 是完全獨立於宿主機。」
澄清:VM 雖然具有隔離性,但仍依賴宿主機提供物理資源,因此宿主機效能會影響所有 VM 的表現。
2️⃣ 誤解:「VM 和 Docker 是同樣技術。」
澄清:VM 是完整模擬一個 OS,而 Docker 是基於容器技術,共享宿主 OS 核心資源,更輕量但隔離度較低。