1. 程式人生 > >【大話存儲】學習筆記(14章), 虛擬化.md

【大話存儲】學習筆記(14章), 虛擬化.md

中斷向量 高速io app服務器 class 後來 image linux vfs 底層

操作系統對硬件的虛擬化

操作系統:就是為其他程序提供編寫和運行環境的程序

由程序來運行程序,而不是程序自己來運行,這是操作系統提供的虛擬化的表現

加電之後,首先運行OS,隨時可以載入其他程序執行。執行完以後切換回OS本身。

但是每次還是要等待這個程序執行完畢,才能接著載入下個程序執行。任何中斷事件,都會中斷正在運行的程序。

程序執行完畢,會將CPU歸還給OS。從而繼續OS本身的運行。這種操作系統就是單任務操作系統,典型代表就是DOS。

而批處理就是操作系統將多個程序一個一個的排列起來。省去了人為載入的過程。所以批處理操作系統相對單任務來說又進了一步,但是本質仍然是一個程序獨占資源。

再後來操作系統針對系統時鐘中斷開發了中斷服務程序,也就是多任務OS中的調度程序

中斷來臨,CPU根據中斷向量表的內容,指向調度程序所在的內存地址入口,執行調度程序的代碼。
調度程序將CPU的執行跳轉到各個應用程序所在的內存地址入口。

從微觀上看,每個應用程序獨占CPU,但是時間非常小10ms,從宏觀上看就是同時執行多個任務。

多任務操作系統的關鍵就是有多任務調度程序。
技術分享圖片

虛擬化的好處

虛擬化的好處是,將下層復雜的邏輯轉換為上層簡單的邏輯,方便人類讀懂。

其實整個計算機技術就是抽象、封裝、虛擬、映射的過程。就連CPU也在想辦法把功能封裝到CPU的邏輯電路裏面,從而出現了更多的指令集。1.6GHz的酷睿雙核CPU性能比主頻3GHz的奔騰4代CPU更高。

計算機存儲子系統的虛擬化

存儲子系統主要分為:

  • 磁盤
  • 磁盤控制器
  • 存儲網絡
  • 磁盤陣列
  • 卷管理層
  • 目錄虛擬層
  • 文件系統虛擬層

下面將介紹這些子系統如何進行抽象虛擬的。

磁盤控制器的虛擬化

控制器的工作就是根據驅動程序發來的磁盤讀寫信息,向磁盤發送SCSI指令和數據。

所以磁盤控制器完全可以對驅動程序隱藏下掛的物理磁盤。而虛擬出一個或者多個虛擬磁盤。RAID就是典型代表。控制器將物理磁盤組成RAID Group,然後在RG的基礎上虛擬出多個LUN,通告給主機驅動。

存儲網絡的虛擬化

在交換式SAN中,任何節點都是通過交換設備來進行通信的,如果在交換節點上做些手腳,就可以達到虛擬化的效果。

我們可以在交換機上嵌入SCSI協議感知模塊。,SCSI發起設備向目標設備傳輸的數據,經過交換機,會主動復制對應的幀到另一個節點的LUN上,形成鏡像。若一個節點故障,則會將數據重定向

到鏡像的LUN上。

還可以將某些N節點的LUN合並成,然後動態的從這個池中分出虛擬LUN

磁盤陣列的虛擬化

磁盤陣列本來就是一個小計算機系統,是對存儲子系統的抽象虛擬化最佳表現。

何為磁盤陣列,指的是將大量磁盤進行組織管理,抽象虛擬成邏輯磁盤。通過和主機適配器通信,呈現給主機。

盤陣控制器的角色都是不直接參與連接每塊磁盤,而是利用後端適配器來管理下掛的磁盤

適配器就是中心控制器驅動的二級磁盤控制器。作為中心CPU的IO適配器,直接控制和管理物理磁盤,然後由中心控制器統一實現RAID、卷管理等功能。

後端適配器與中心控制器CPU之間通過PCIX總線等連接。

中心控制器不但可以實現最基本的RAID功能,還可以實現LUN鏡像、快照、遠程復制、CDP數據保護、LUN再分配等。

卷管理層

運行在應用主機上的功能模塊,對底層的物理磁盤或者LUN搜集再分配。

對盤陣控制器虛擬化之後的LUN再虛擬化

  • 比如進行鏡像處理,

  • 或者對其中的多個LUN做成軟RAID 。

  • 再或者將所有的LUN合並形成資源池。

然後掰成多個

文件系統

SAN存儲解決的是怎麽記錄的問題,文件系統解決的是怎麽組織磁盤的數據

需要在相應的地方做標記,通過一個鏈表一次一次指引找出完整的數據。

把鏈表單獨做成一個記錄,放在固定的位置,可以通過表找出一條數據在磁盤上的完整分布。利用這種思想做出來的文件系統,比如FAT文件系統,把每個完整數據稱為文件

文件分配表:FAT , File Allocate Table文件可以在磁盤不連續的存放,由單獨數據結構來描述文件在磁盤的分布,

NTFS:給出文件在磁盤上的具體扇區,利用“開始——結束”這樣的結構來描述文件的分布情況。

文件系統將磁盤抽象成了文件櫃,同一份文件放在櫃子的不同抽屜,利用元數據 來記錄“文件——對應抽屜” 的分布情況。

描述其他文件分布情況及屬性的文件,元文件Metadata

文件系統是對磁盤塊的虛擬、抽象、組織和管理。只需要訪問文件,就等於訪問了扇區。

目錄虛擬層

操作系統中有一個虛擬目錄結構,在linux中叫VFS。--

虛擬文件系統,也就是說文件系統的目錄不是真實的,任何的文件系統可以掛在目錄下。成為虛擬目錄的子目錄,可以增強靈活性。

其次,OS外部設備虛擬成一個虛擬文件,比如卷。/dev/hda

磁盤——控制器——存儲網絡——總線適配器——卷管理層——文件系統——虛擬目錄層和最終應用層

技術分享圖片

帶內虛擬化和帶虛擬化

  • 帶內 InBand :控制指令和數據包走同一路線,所謂控制指令指的是控制數據流向的數據,如IP路由協議產生的數據包,它也是利用實際數據線路進行傳輸。

  • 帶外 OutBand:控制指令走單獨的路線。

帶外和帶內虛擬化:

  • 帶內虛擬化:進行虛擬化的設備直接橫在發起者和目標路徑之間,也就是串在同一路徑上,作為一個“泵”

  • 帶外虛擬化:旁路,用這條路徑來走控制信號,而實際數據還是由發起者直接走向目標。發起者必須先咨詢旁路的虛擬化設備,經過提示之後,才根據虛擬化設備的指示直接向目標請求數據

硬網絡與軟網絡

硬網絡

硬件網絡設備其功能還是靠軟件來實現的,特別是路由設備,本質是一臺Server,上面運行著處理數據包的程序。

所以硬件網絡環境實際上是用一部分PC充當網絡硬件設備,其他PC利用網絡設備的PC實現通信

軟件網絡程序

message queue和Message Broker在硬件網絡設備 的基礎上,模擬出一個純軟件的網絡轉發引擎。

MQ:消息轉發器。客戶端通過TCP/IP與之相連,將消息轉發到這個轉發器上,然後根據策略將消息轉發到其他客戶端上。類似於交換機,不過MQ的鏈路層由TCP/IP來充當

MB:應用邏輯轉發引擎。應用層次的轉發,類似郵件服務器。只不過可轉發各種格式的數據包。

技術分享圖片

多虛一

HPC

HPC主要分為兩類:

  • CPU密集運算:專門用來計算數據,稱為計算節點

  • IO密集運算:專門用來存儲計算過程中所需要提取或者存放的數據,稱為存儲節點

計算節點看做CPU和內存,存儲節點看做硬盤。對獨立的PC,CPU內存與硬盤的連接為高速IO總線,如PCIe

但是對HPC ,有些利用Infiniband有些利用以太網。前者一般適用於IO密集運算,後者用於CPU密集運算。

Web + APP + db

客戶端通過Web服務器獲得網頁,應用邏輯由APP服務器處理。最後通過Web服務器進行展現。

可以把Web看做顯示終端,APP看做CPU和內存,將DB看做硬盤

一虛多

計算虛擬化:模擬硬件系統,將程序對這個硬件系統CPU發送的指令經過處理之後,加以虛擬傳到物理CPU上。比如Vmware的ESX

用磁盤陣列來虛擬磁帶庫

VTL,Virtual Tape Lib

要提高磁帶庫的速度,只能多個驅動器同時工作,成本高。

VTL使用磁盤來存儲數據而不是磁帶,虛擬出機械手、磁帶驅動器、磁帶

【大話存儲】學習筆記(14章), 虛擬化.md