為什麼我們應該使用 VPS?

從前架設網站幾乎一定是光顧網站寄存服務,透過虛擬網站技術,一台實體機器裏「居住」了數十個甚至數百個網站,雖然每個網站所佔用的資源例如硬碟容量、網絡流量等等都受到限制,但一個惡意製作的網站程式仍然可以瞬間吞噬系統所有記憶體、CPU、Swap 空間等,甚至入侵其他網站盜取資料。隨著硬件的價格越來越便宜,虛擬作業系統越來越成熟,大量平價的 VPS 湧現,IT 人應該認真考慮從寄存服務遷移到 VPS。

什麼是 VPS?

VPS 直譯就是「虛擬私人伺服器」,它是把一台實體伺服器藉軟件技術分割成多個虛擬伺服器,每一台虛擬伺服器有專用的資源,包括一定數量的 CPU 週期、硬碟空間、記憶體、網絡流量、周邊硬件等等,從功能上看,它與實體伺服器幾乎沒有分別,用戶可以以超級用戶 (root) 的身份登入伺服器,隨他的喜好安裝軟件、配置系統。VPS 的價錢一般比實體伺服器便宜很多,但由於每一台 VPS 需要與同一台實體伺服器中的其他 VPS 競爭資源,效能上肯定比不上實體伺服器,例如當很多 VPS 同時需要讀寫硬碟的時候,檔案存取的速度便會下降。

VPS 一個吸引人的地方是它的彈性,用戶可以用超級用戶的身份登入系統,所以幾乎可以做任何喜歡的事,包括隨意安裝軟件,修改系統,更改設定,即使不幸搞垮了系統,也可以重頭來過,重新安裝操作系統。

VPS 的安全性是它的另一個優點,每一台 VPS 基本上是完全獨立的系統,可以運行不同的操作系統,隨時從新啓動或重灌系統而對其他 VPS 毫無影響,所以不用擔心別人程式裏的臭蟲,或者惡意程式對自己的影響。

VPS 價格高嗎?

以前 VPS 尚未普遍,價格偏高,隨著硬件的價格大幅下降(摩爾定律),VPS 的技術也越來越成熟,不少穩定可靠,而且開源和免費的 VPS 方案可供選擇,例如 OpenVZKVM 等等,價錢已經與寄存服務不相伯仲,若果你有超過三、四個寄存網站,總價格幾乎肯定超過一個 VPS,但是一台 VPS 卻可以容納無限個網站,無限個帳號,無限個數據庫,甚至有獨立的 IP 地址,容許你自行安裝網絡服務,例如域名伺服器 (DNS),當然,條件是不超越硬件資源的限制。由此可見,使用 VPS 更合符經濟原則。

常見的虛擬化技術

選購 VPS 的時候,一個很重要但很多人忽略的因素,是服務供應商使用什麼虛擬化技術,最常見的技術包括 OpenVZKVMXenVirtuozzo

OpenVZ 藉修改 Linux 內核實現虛擬化,每一台虛擬伺服器的操作系統必定與實體主機的相同,所以它只能提供 Linux 虛擬伺服器,使用 OpenVZ 的服務供應商一般不會有很多操作系統的選擇給顧客。這樣的設計也有好處,就是虛擬化所佔用的額外資源比較少,每一台虛擬主機的效能也較高。OpenVZ 另一個特點是記憶體的分配很具彈性,一台虛擬伺服器的記憶體可以與其他虛擬伺服器共享,或者作為其他虛擬伺服器的緩存。很多服務供應商利用 OpenVZ 這種彈性「超賣」實體主機的資源,這是 OpenVZ 的 VPS 通常比較便宜的原因,但是若果某一個虛擬伺服器突然吞噬大量記憶體,其他虛擬伺服器會即時受到影響。

與 OpenVZ 不同,KVM 的虛擬技術容許每一台虛擬伺服器運行不通的操作系統,KVM 給它們虛擬的硬件設備包括顯示卡、音效卡、網絡卡,甚至虛擬的 BIOS。虛擬伺服器之間完全獨立,不像 OpenVZ 那樣一台不爭氣的伺服器會拖垮所有其他伺服器。

Xen 所用技術與 KVM 類似,它有一項特點,就是可以把整台虛擬伺服器從一台實體主機搬到另一台實體主機,期間虛擬伺服器無須停止運作(嚴格來說中途會有大約半秒停頓,但亦足以令人嘆服,不是嗎?),對於需要從一台低階伺服器「搬家」到一台高階伺服器的用戶,這是在非常方便,所以很多雲端伺服器 (cloud server) 服務供應商都使用 Xen,例如 Amazon EC2Rackspace Cloud

Virtuozzo 跟上述三種方案最大的不同,是它屬於操作系統層次的虛擬技術(而非內核或硬件層次),所以每一台虛擬伺服器都運行相同的操作系統,相同的內核,相同的硬件,它最常用於網站寄存服務供應商。這種層次的虛擬技術容許整台伺服器「搬家」而無需中斷服務,虛擬技術所佔用的額外資源也十分少。Virtuozzo 另一與別不同的是它並非開源免費軟件,而是 Parallel Inc. 的付費產品(也就是編寫 Plesk Control Panel 那間公司)。

自主管理的和專業管理的 VPS

VPS 服務分為「自主管理」(unmanaged) 和「專業管理」(managed) 兩種,價錢差別甚大,有必要搞清楚兩者的分別。

自主管理的意思就是服務供應商給你一台虛擬伺服器,一個操控界面,其他的事便不管了。你要自行透過控制界面安裝操作系統,設定初始的超級用戶密碼,然後再自行安裝各式各樣的應用程式,執行各種配置和優化的工作。過程中若遇到什麼問題,除非是關於虛擬伺服器的,否則服務供應商沒有義務提供協助。部份供應商會提供一個預先安裝好的操作系統,內有一般常見的應用程式,並提供一個系統管理控制台,例如 CPanel 或 Plesk Control Panel 等等,讓初學者比較容易上手,但此後增減軟件、系統升級、維護、監控、備份等等工作,都要自行負責。

專業管理剛好相反,整個系統由專業人員安裝和設定好,並定期進行升級和維護,恆常的監控和管理也有專人負責,你遇到什麼問題也可以向他們請教。如此五星級的服務當然有代價,所以價錢比自主管理的 VPS 貴很多。

該怎樣選擇呢?我估計閱讀這個網站的人跟我一樣都是 IT 人,而且是優秀的 IT 人,優秀的人有一個特點,就是不喜歡事事被人安排妥當:中午十二時吃午飯,下午三時半吃三文治,黃昏六時半吃晚飯,晚上十時上床睡覺,半分出不得差錯。我們喜歡隨自己的心意,做自己喜歡的事,喜歡嘗試新的事物,喜歡涉獵最先進的技術,喜歡弄清楚事情的來龍去脈,享受無中生有的樂趣,撥弄配置檔案從而控制系統的運作,也滿足我們心靈深處的權力慾。最後,沒有人願意跟錢作對吧。所以,我推薦選擇自主管理的 VPS。

應該使用什麼操作系統?

這個問題不好回答,CentOS、Ubuntu、SuSE、Debian、Slackware 等等各有特色,也各有支持者。不過 VPS 一般是作為伺服器,而非桌面電腦或工作站,所以應該考慮那些以伺服器為應用目標的 Linux 版本,包括 Redhat 系列的 Redhat Enterprise Linux (RHEL) 和 CentOS,Ubuntu Server Edition、Debian 和 SuSE Linux Enterprise Server (SLES)。

我推薦 CentOS,RHEL 是 Redhat 的企業級 Linux 系統,不過是收費軟件,鑒於 Linux 的開放源碼政策,Redhat 必須把 RHEL 的源碼公開,於是 CentOS 把 RHEL 的源碼重新包裝,唯一的改動就是把系統內的 RHEL 品牌改為 CentOS,所以兩者功能上可說毫無分別。RHEL 和 CentOS 最為人詬病的是軟件的更新速度不夠快,官方軟件庫的東西往往落後最新的版本一大截,例如現在最新的 PHP 版本是 5.5.11,但是官方軟件庫的 PHP 只是 5.3.3,即使只看 PHP 5.3,這系列最新的版本已到了 5.3.28,可見官方軟件庫如何落後。不過網絡上有很多第三方軟件庫提供較新版本的軟件,所以問題不算很大。不過 RHEL 和 CentOS 的安全性和穩定性卻是任何伺服器最需要的,穩健的防火牆和 SELinux 從安裝完成那一刻便開始保護伺服器。