iT邦幫忙

0

請問VM和VPS的差異

上網找了一下,把我對VM和VPS的差異繪製成一張圖
請問我這樣理解是否正確呢?
謝謝!

第一版的圖↓ (VM部分應該理解錯誤)
第一版的圖
VM:直接共用實體硬體
VPS:透過主要OS共用實體硬體

第二版的圖↓
https://ithelp.ithome.com.tw/upload/images/20190523/20114276ZoHJViUiSc.png
VM和VPS主要差異應該是在主系統和次系統有沒有共用軟體?
VM :會共用軟體,所以次系統和主系統一定會是相同的
VPS:完全獨立於主系統,所以次系統可以安裝任意作業系統

不曉得我這樣理解是否正確呢?

第三版的圖↓
https://ithelp.ithome.com.tw/upload/images/20190524/20114276E7T8IND1QX.png

VPS=廠商販售的網站托管服務的名詞。廠商規劃可分配資源的方式有以下4種。
左上 :所有資源個人獨享!(一台機器一個網站)
右上 :所有資源眾人共用!(由Web Server來接待訪客並引導到目標網站)
左下 :沒有門的隔牆,雖有一點隱私但是還是可能會互相影響。
右下 :設有門的隔間,只要Host供水電,剩下的獨立於Host也無妨。

這次應該觀念正確了吧XD?

看更多先前的討論...收起先前的討論...
這是在畫virtualbox, vmware workstation?
rew87516 iT邦新手 5 級 ‧ 2019-05-23 16:09:25 檢舉
我覺得第一版的圖好像錯了,改成第二版
slime iT邦大師 1 級 ‧ 2019-05-23 16:35:23 檢舉
看起來左邊比較像 Linux 的 chroot ?
rew87516 iT邦新手 5 級 ‧ 2019-05-24 14:11:14 檢舉
看了大神的解釋和努力理解後,改成第三版
raytracy iT邦大神 1 級 ‧ 2019-05-24 21:35:56 檢舉
樓主是...被 IT 耽誤的室內設計師.....
瓦力 iT邦新手 5 級 ‧ 2019-05-29 18:07:02 檢舉
ray大神回覆~~ (不虧是神啊~~~^^)
讓我噗嗤笑了出來~~ 顆顆
9
raytracy
iT邦大神 1 級 ‧ 2019-05-24 00:10:16
最佳解答

其實上面談的幾個東西, 因為本地翻譯的關係, 已經被混淆了幾十年, 導致開發 Web 的人搞不清楚, 事情要從 25 年前講起..

在 1995 年以前, 也就是 HTTP/1.0 協定之前的時代, 當時還停留在: 一台實體伺服器, 只能跑一個網站 的技術. (我在 1994 年用一台價值 $60 萬的伺服器, 幫公司做了一個網站, 上面只有一頁畫面, 老闆每天問我: 一定要用這麼貴的機器來當網站嗎?...)

從 1995 年開始, HTTP/1.1 協定發布, 同時期 Apache Server 也搭配 1.1 協定, 在 1.1 版推出新的 VirtualHost 組態指令, 並於 1.3 版開始上線使用, 這個概念可將昂貴的伺服器, 切分成許多網站單位販售, 開啟了網站託管業 (Web Hosting) 的序幕, 於是故事從這裡開始:

== Shared Hosting ==

這是一種提供網站託管的方式, 業者使用的就是 Apache 的VirtualHost 組態搭配 HTTP/1.1 技術, 只需要一套 Web Server 軟體, 就可以託管多個網站. 早期的 VirtualHost 組態只能用 IP 做區隔, 所以一個網站一定要占用一個 IP, 這個現象一直到 2005 年推出 Apache 2.2 版, 加入新的 Named VirtualHost 組態之後, 才擺脫綁 IP 限制, 只需要 1 個 IP, 就可以提供無限多網站託管.

這個技術的特性是:
他只是靠 Web Server 軟體來隔離網站, 實際上, 只有一台實體伺服器, 一套 OS, 一個最高權限的 root 帳號. 可想而知: 託管商不可能把這整台伺服器的管理權交給租用空間的人, 因為只要擁有 root 最高管理權限, 每個人都可以把別人的網站設定幹掉....

早期的 Shared Host 是靠人工做 Provision 的, 也就是當新客戶要租用的時候, 他是填寫申請表單, 由託管商的人員, 手動修改組態檔, 幫他新增一個屬於他的網站空間. 但這樣仍有許多問題要解決, 例如: 上傳/管理空間/資料庫...等等,

後來有了面板控制軟體 (Control Panel), 專門幫託管商做自動化的 Provision, 現在普遍流行的 cPanel, Plesk 就是這類輔助軟體: Comparison of web hosting control panels

這種技術, 引進國內的時候, 因為直接翻譯 Apache 組態檔裡面的 VirtualHost 指令, 取了一個很不好的產品名稱, 叫: 虛擬網站主機 (簡稱: 虛擬主機), 然後很多台灣託管業者就一直沿用這名稱, 從此奠定下初學者永遠搞不清楚「虛擬」定義的魔障...

事實上, 在國外的託管商, 將此類商品稱為: Shared Hosting, 翻譯成: 共享網站, 或是共享主機, 會比較貼切. 共享主機最大的問題是: 只要有一個網站掛掉, 或是組態改變需要重新開機, 或者重啟 Web Server 的話, 就是全部的網站通通要一起重開, 會造成其他網站也一併失聯....這對 1995~2000 年間, 蓬勃發展的 .com 事業而言, 是非常不穩定的服務...

== VPS ==

前面雖然有 Shared Hosting 技術, 可以將一台昂貴的伺服器, 隔離成許多個網站, 來降低每一個網站負擔的費用, 但因為 OS 層並沒有隔開, 所有網站的 CPU/RAM 資源都在同一個 Context 內, 無法限制每個網站的用量, 所以仍然有很大的風險.

在 1997 年, 有家叫做 SWSoft 的公司, 開始想研發一種技術, 試圖在 OS 層也做出某種程度的切割, 他們在 2002 年發表成果: Virtuozzo for Linux 軟體, 後來整個 Virtuozzo 部門在 2005 年 Spin-off 成為一家獨立的公司, 並將 Virtuozzo 的核心技術開源 (Open Sourced) 成為 OpenVZ 專案. (OpenVZ 的歷史)

OpenVZ 就是現在用的 Container (容器) 技術先鋒 (2000 年時有類似的 FreeBSD jails 技術, Google 則在 2006 年進入), 他在網站託管產業中被使用了很長一段時間, 但是除了託管業以外的一般軟體開發者很少接觸; 直到 2014 年開始被 Docker 公司重新改寫發揚光大之後, 才吸引到一般非託管業的軟體開發者目光...
(Docker到底哪裡比OpenVZ好?)

早期託管業者大量採用 Virtuozzo, 並將此類產品稱為 VPS.

VPS 相較於 Shared Hosting 的好處很明顯:
每一個網站管理者, 都可以有自己的管理權限, 可以隨便重啟自己的網站, 不用擔心干擾到別人; 在一台實體伺服器裡面, 可以建立許多個 Container, 他們在 OS 層有某種程度的隔離 (但是仍共用核心碼 Kernel space, 所以對核心程式庫有依存性), 用戶權限可以隔離, CPU/RAM 也都是自己專用和限制, 不會跟其他網站互相混搭....

當時的網站已經非常依賴資料庫運作, 但是 Shared Hosting 在資料庫效能和安全性方面, 有很大的缺陷, 這使得重度營利用戶迅速往 VPS 主機靠攏; 但同時因為 VPS 功能較多, 需要有獨佔的資源, 所以託管商也會收取較高的費用.

台灣的網站託管商, 並沒有將 VPS 翻譯成通用的名詞, 大部分仍以原文 VPS 稱呼此類產品, 少部分業者包裝成他們的產品後, 再自行命名.

== VM ==

這個名詞來自虛擬化 (Virtualization), 原本是 1960~1970 年代, 由 IBM 發明, 只用於 IBM S/360 大型主機 (Mainframe) 的技術, 1987 年 Insignia Solutions 公司將此概念製成 SoftPC 產品, 可以在 Unix 工作站內, 執行 DOS 軟體.

受到 SoftPC 的啟發, 1997 年的 Apple 也設計了一套虛擬化軟體叫 Virtual PC, 可以在 Mac 電腦內執行 Windows. 然後, 接下來的時序就重要了:

1998 年 IBM 一批工程師, 帶著 Mainframe 主機上的虛擬化技術, 出來成立了 VMware 公司, 1999 年開始推出 VMware Workstation 軟體, 也就是現在我們普遍認知的 Type-II Hypervisor, 開啟了 OS 層完全隔離的年代. 但因為是 Type-II, 仍受到母體 OS 的限制, 效能有限.

2001 年 VMware 發表 ESX Server, 開始邁入 Type-I Hypervisor, 也就是裸機虛擬化. 從這裡開啟了虛擬機器 (VM) 到現在長達 18 年的應用榮景.

VM 跟 Container 的不同在於: 他連 Kernel space 都是隔離的, 所以不需要像 Container 那樣, 依存於原生機上面的 Kernel 版本, VM 裡面可以安裝各種不同版本的 OS, 進行完全獨立的作業.

這裡不討論 VM vs. Container 的論戰, 兩者各有其優缺點和應用場景, 雖然後現代開發者逐漸青睞 Container, 但是安全風險問題仍略遜 VM.

======== 我是分隔線

VPS 和 VM 都可以達到隔離客戶, 獨立控制系統重啟, 權限分離的目的, 至於 Kernel space 是否共用? 對網站託管來說, 並沒有那麼的重要, 所以一般 IDC 託管業者, 並不會在產品上明確區分這兩種技術, 而且都沿用以前慣用的 VPS 名詞來稱呼此產品.

所以, 當你向傳統 IDC 託管業者購買 VPS 的時候, 其實並不知道他給你的是 VM? 或 Container? (事實上, 因為 VM 的管理技術發展得更成熟, 且安全性較高, 大部分業者會給你 VM 主機)

但不論是 VPS 或 VM, 業者都把整個 OS 的控制權交給網站開發者, 這代表他不會主動供應類似 Shared Hosting 的 Panel 軟體給你, 你得自行購買建置, 或是用其他方法來替代 Panel 的功能. 此外, 系統 OS 層的軟體更新以及維運/安全等工作, 也會落到網站開發者身上....(大部分網站設計公司沒有多餘時間去維運 VPS, 通常會將這些工作, 交給有專業能力的廠商來協助)

Q: 所以, VPS 網站託管是不是用 Container 技術?
A: 他以前曾經專指 Container, 但現在有可能是 VM.

目前只有公有雲 (AWS/GCP/Azure) 的託管, 會明確區分 VM 或是 Container, 並有不同的計價方式. (不過, 市場上也有專做 Container 的一般託管業者如: DigialOcean, OpenShift...等) 除此之外, VPS 這個名詞僅被廣泛用於網站託管業, 其他資訊行業鮮少使用這個名詞.

(這篇是業配文無誤...還有, 樓主上面給的架構圖不太完整:)

看更多先前的回應...收起先前的回應...
afgn iT邦新手 5 級 ‧ 2019-05-24 01:41:26 檢舉

Cool

活歷史

froce iT邦大師 5 級 ‧ 2019-05-24 08:24:32 檢舉

我在 1994 年用一台價值 $60 萬的伺服器, 幫公司做了一個網站, 上面只有一頁畫面, 老闆每天問我: 一定要用這麼貴的機器來當網站嗎?

該不會還是靜態網站吧?XD

rew87516 iT邦新手 5 級 ‧ 2019-05-24 08:52:24 檢舉

哇塞釣出大神了
謝謝您花時間回應這篇笨問題
雖然還很多看不是很懂
不過對我很有幫助!!

raytracy iT邦大神 1 級 ‧ 2019-05-24 08:52:33 檢舉

MySQL 第一個發布的版本是在: 23 May 1995....
PHP 第一個版本也是 1995 年,

所以, 1994 年做的網站也只能...一路 HTML 到底...

就酷 iT邦新手 5 級 ‧ 2019-05-24 09:46:15 檢舉

我媽問我為什麼跪著打字...

vicentli iT邦新手 3 級 ‧ 2019-05-24 10:06:42 檢舉

我也是跪了!

攻城屍 iT邦新手 5 級 ‧ 2019-05-27 09:50:16 檢舉

推推推 超詳細

adolpha iT邦新手 5 級 ‧ 2019-05-27 16:16:30 檢舉

我算是曾經提供這幾種服務的老屁股,raytracy 大的說明讓我五體投地

0
浩瀚星空
iT邦大師 1 級 ‧ 2019-05-23 16:50:17

其實認真來說,兩者是類同的東西。差別在於一個可控一個不可控。

vm是一種oS去呼叫os有點像是父子關係。
所以次os可以呼叫主os內的東西。

vps雖然也是有一個主os。但其os只是將主機資源做的很像是硬碟磁區規劃一樣。
認真來說要將其不要視為os也不為過。因該是說是一種資源主機的管理系統而已。

這兩個差別性在於。第一種可以隨時呼叫及關閉你開出來的主機。
第二種則是需要在設定規劃好後。要重新開機才行。
部份的系統可能還得需要重新架設安裝。

再來就是vm是共享資源,最多就是限制資源。vps則是偏向分配資源為主。(雖然還是可以超額配置就是了)

看更多先前的回應...收起先前的回應...
rew87516 iT邦新手 5 級 ‧ 2019-05-23 17:24:22 檢舉

依您的說明
vm開出來的主機似乎比較像是依附主os的軟體,就像是Firefox之類的,因為會使用到主OS的東西,所以無法獨立於主OS執行
vps開出來的主機與主os完全無關,就算直接移植到實體主機也沒問題,就像VirtualBox內的Linux把它備份後可以直接在實體主機上還原
這樣理解算正確嗎?

認真來說,只是名詞的不同。再加上主機商惡搞的情況下。才讓你有點搞不太清楚吧。

其實 raytracy大 他的說明比較詳細。不要被vm跟vps兩者給搞混就是了。

vm可以等於vps,也可以不等於。這樣是否可以了解。
我相信你一定會霧殺殺。

其實我自已也並不是很清楚。不過因為我有同時使用過這樣的技術。
vps主機我是用主動式架構系統。在一開始就得要決定好規劃及分配量。
。如果未來要再重新處理。則需要將系統先靜像出來備份。再重新規劃處理。

vm我是用在系統模擬居多就是了。也就是在我的主系統上,另外再開一個系統出來。

rew87516 iT邦新手 5 級 ‧ 2019-05-24 14:31:12 檢舉

現在我的理解是,vps是一種服務,vm是一種技術
要提供vps服務需要用到vm這個技術,但不見得一定是vm,也可以用Container這個技術來提供vps服務
這樣應該正確吧,哈

我現在是用vm與主OS分開在練習架設網站,所以才會搞混 @___@

是可以這樣說,但現在很多主機商都把vm這個名詞直接當成服務看待。
所以才會造成很多人誤解。
因為vm雖可以說是一種技術。但它也的確可以故為一種服務。很難明確的定義。

0
froce
iT邦大師 5 級 ‧ 2019-05-23 18:23:48

等一下,我怎麼覺得你一開始的問題就怪怪的?
這是我的理解:
你應該要問的是 Shared Hosting 和 Virtual private server 的差別吧?
Shared Hosting:就是一台linux,開帳號給你,限你的磁碟空間,其他共用。
Virtual private server:建構在container和VM技術上。

然後 container 和 VM 又有差。
container:共用kernel,採用類似chroot的方式來實現隔離,只能用linux。
VM:透過模擬CPU來實現,以linux上的來舉例,內核上透過KVM、QEMU來溝通內核空間和用戶空間,實現虛擬化。可以安裝其他OS如 windows。

看更多先前的回應...收起先前的回應...
rew87516 iT邦新手 5 級 ‧ 2019-05-24 08:54:24 檢舉

我只是想搞清楚VM和VPS這兩個名詞到底哪裡不一樣...囧a

froce iT邦大師 5 級 ‧ 2019-05-24 09:07:00 檢舉

簡化到一句話:
VPS是用VM架的。結案。

當然最佳解答就是搞懂下面雷神的那串。

rew87516 iT邦新手 5 級 ‧ 2019-05-24 10:43:38 檢舉

哈 簡潔明瞭

rew87516 iT邦新手 5 級 ‧ 2019-05-24 14:32:54 檢舉

我現在終於看懂你在說什麼了....XD
我把服務(vps)和技術(vm)混在一起了

0
補覺鳴詩
iT邦新手 2 級 ‧ 2019-05-23 19:41:37

是在問網站主機商的 Virtual Host 跟 Virtual private server 差異嗎?

Virtual Host
只有儲存空間 跟資料庫是專用的
其他都是跟別人共用
例如說 硬體 RAM、 CPU、網路頻寬資源
apache 、 PHP、SQL 的設定,這些你都無法自行定義

Virtual private server
其實就是一般我們說的 VM
從 OS 到 應用程式 你都可以自行管理

最後是實體主機
這應該就不用解釋了

rew87516 iT邦新手 5 級 ‧ 2019-05-24 14:34:26 檢舉

哈哈 謝謝你們努力解說
讓我茅塞頓開!!!

0
Mack Chan
iT邦新手 5 級 ‧ 2019-05-27 08:25:25

雷神的最佳解答和實力毫無疑問
其他前輩其實也非常強
很少有討論區可以討論這麼深入

我要發表回答

立即登入回答