零,前言
前幾天翻過(guò)BIOS,關(guān)閉了一個(gè)看不懂的功能,重啟系統(tǒng)(黑蘋(píng)果),發(fā)現(xiàn)有些軟件無(wú)法正常運(yùn)行。主要包括虛擬機(jī)軟件(,)和一些軟件(XAMPP等)用于開(kāi)發(fā)環(huán)境,但除此之外,其他軟件都可以正常運(yùn)行,于是我開(kāi)始想知道原理是什么。于是上網(wǎng)查了一下,原來(lái)我關(guān)閉的功能竟然是“虛擬化”!因?yàn)槠綍r(shí)經(jīng)常用,所以好奇查了一下相關(guān)資料。
一、什么是虛擬化
虛擬化就是將一臺(tái)計(jì)算機(jī)模擬成多臺(tái)邏輯計(jì)算機(jī),在這些邏輯計(jì)算機(jī)上同時(shí)運(yùn)行不同的程序,互不干擾。
通俗的講就是提供一個(gè)運(yùn)行環(huán)境,利用已有的軟件和硬件模擬一套“虛擬層”硬件,然后在這個(gè)虛擬硬件上運(yùn)行軟件。
因此,我們平時(shí)使用的各種虛擬機(jī),其實(shí)都是基于虛擬化的功能。也就是說(shuō)如何關(guān)閉mac自動(dòng)運(yùn)行軟件,如果沒(méi)有虛擬化功能,就不會(huì)有那么多虛擬機(jī)軟件。
普通電腦結(jié)構(gòu)圖:
操作系統(tǒng)在硬件上運(yùn)行,軟件由操作系統(tǒng)直接管理。
傳統(tǒng)虛擬機(jī)結(jié)構(gòu)圖:
主機(jī)的軟件在真實(shí)操作系統(tǒng)上運(yùn)行
虛擬機(jī)的操作系統(tǒng)在虛擬硬件上運(yùn)行
軟件在虛擬機(jī)上運(yùn)行在虛擬操作系統(tǒng)上
虛擬機(jī)的軟件感覺(jué)不到宿主系統(tǒng)的存在,也感覺(jué)不到真實(shí)硬件的存在。
Linux版本的結(jié)構(gòu):
它是一個(gè)基于 Linux 的容器,但它不是虛擬機(jī)。實(shí)現(xiàn)內(nèi)核隔離,比虛擬機(jī)級(jí)別低。
容器中的軟件感覺(jué)不到對(duì)方軟件
在同一臺(tái)計(jì)算機(jī)上
但是容器中的軟件都在一個(gè)系統(tǒng)上
mac版本結(jié)構(gòu)圖:
軟件在 Linux 虛擬機(jī)中運(yùn)行的容器中
只能看到Linux系統(tǒng)和虛擬硬件
但是看不到mac系統(tǒng)和真實(shí)硬件
二、虛擬化能力的常用用法軟件
虛擬機(jī)是肯定的,雖然不是虛擬機(jī),但也離不開(kāi)虛擬化。但是為什么我關(guān)閉虛擬化后 XAMPP 不起作用?
查資料發(fā)現(xiàn):
mac版本的XAMPP本質(zhì)上是一個(gè)虛擬機(jī),將Linux系統(tǒng)虛擬化!
(難怪mac版本啟動(dòng)需要一分鐘,Linux版本可以瞬間啟動(dòng)服務(wù)……)
而其他不使用虛擬化技術(shù)的軟件(各種日常軟件、IDE等)自然不受影響。 JAVA運(yùn)行環(huán)境也可以正常運(yùn)行。
三、Intel 和 AMD 自己的虛擬化技術(shù)
作為全球最大的 PC 處理器供應(yīng)商,英特爾和 AMD 的虛擬化技術(shù)并不相同。我目前還沒(méi)有能力從底層去理解,只能說(shuō)一些膚淺的理解。
Intel 的虛擬化技術(shù)稱(chēng)為 Intel-VT ( ),而 AMD 的稱(chēng)為 AMD-V(AMD,在 AMD 主板的 BIOS 中稱(chēng)為 SVM)。
主流虛擬化軟件 產(chǎn)品可以同時(shí)支持這兩種技術(shù)。但是,Apple 的產(chǎn)品需要特殊說(shuō)明。由于 Apple 的 PC 沒(méi)有使用 AMD 的 CPU,mac 操作系統(tǒng)不支持 AMD-V。
這為神秘而hacky的Apple解決方案提供了理論基礎(chǔ):對(duì)于Intel平臺(tái)的CPU,安裝macOS并不是特別困難; AMD CPU就沒(méi)那么幸運(yùn)了,即使有辦法讓系統(tǒng)運(yùn)行在AMD平臺(tái)上,由于指令集不同,也無(wú)法實(shí)現(xiàn)所有功能。最重要的功能缺失了,恐怕就是虛擬化了。
因此如何關(guān)閉mac自動(dòng)運(yùn)行軟件,即使黑蘋(píng)果安裝在AMD平臺(tái)上,也不能用于開(kāi)發(fā),因?yàn)闆](méi)有虛擬化功能,根本無(wú)法構(gòu)建服務(wù)。
四、總結(jié)
幾天前的這次偶然嘗試讓我無(wú)意中了解了虛擬化。
我還了解到,使用虛擬化功能,我們可以在物理機(jī)上構(gòu)建集群。后來(lái)才知道騰訊云、百度云等著名的云計(jì)算平臺(tái)都使用了虛擬化技術(shù)。我們購(gòu)買(mǎi)的小型服務(wù)器實(shí)際上是一臺(tái)一臺(tái)的虛擬機(jī)。
本次探索的意義在于為我接下來(lái)對(duì)虛擬化系統(tǒng)(KVM)的研究提供理論知識(shí)。