本節書摘來異步社群《資訊存儲與管理(第二版):數字資訊的存儲、管理和保護》一書中的第2章,第2.3節,作者:【新加坡】g.somasundaram ,【美】alok shrivastava,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
資訊存儲與管理(第二版):數字資訊的存儲、管理和保護
使用者通過應用程式來存取資料。運作這些應用程式的計算機被稱作“主機”或“計算系統”。主機可以是實體機,也可以是虛拟機。計算虛拟化軟體可以在一個實體計算架構上建立多個虛拟機。計算虛拟化和虛拟機将會在本章的後面進行探讨。實體主機的例子很多,比如桌面電腦、伺服器、伺服器叢集、筆記本電腦以及移動裝置。主機由cpu、記憶體、i/o裝置,以及一系列執行運算操作的軟體構成。軟體包括作業系統、檔案系統、邏輯卷管理器和裝置驅動等。這些軟體可以作為單獨的實體安裝,也可以作為作業系統的一部分安裝。
cpu由四個部件組成:算術邏輯單元(arithmetic logic unit,alu),控制單元(control unit),寄存器(register)和一級緩存(l1 cache)。主機上的記憶體有兩種,随機存取存儲器(ram)和隻讀存儲器(rom)。i/o裝置負責主機的通信。i/o裝置包括鍵盤、滑鼠和顯示器等。
軟體運作在主機上,對資料的輸入和輸出進行處理。下面一節将會詳細講述主機系統中不可或缺的各種軟體元件。
在傳統的計算環境中,作業系統控制着計算的所有方面。它負責應用和計算系統實體部件之間的協作。作業系統還提供了通路資料的應用。作業系統負責監測使用者行為和環境,并作出反應。它還負責組織和控制硬體元件,管理硬體資源的配置設定,為其被管理的所有資源的通路和使用提供基本保護。作業系統可執行基本的存儲管理任務,同時管理着底層元件(如檔案系統、卷管理器和裝置驅動)。
在虛拟計算環境中,虛拟層處于作業系統和硬體資源之間。作業系統的工作方式因引入的計算虛拟化的實作形式而不同。在正常的實作方式下,作業系統的工作方式類似訪客,隻進行與應用互動相關的活動。這時,硬體管理的功能由虛拟層負責。
記憶體的虛拟化
記憶體一直以來都是,以後也将是主機部件中成本較高的一個器件。它決定了一個主機可以運作的應用的大小和數量。記憶體的虛拟化允許多個應用和程序,在其記憶體需求之和大于可用記憶體的情況下,依然可以運作且互不影響。
記憶體的虛拟化是作業系統将主機記憶體虛拟化的一個功能。作業系統建立一個虛拟記憶體,其位址空間大于實體記憶體空間。虛拟記憶體由實體記憶體空間和一部分硬碟存儲組成。作業系統中管理虛拟記憶體的工具叫做虛拟記憶體管理器(virtual memory manager,vmm)。vmm管理着虛拟記憶體和實體記憶體的映射關系,并在虛拟位址指向硬碟部分時,從硬碟擷取資料。vmm使用的硬碟空間叫做交換空間(swap space),也稱頁檔案(page file)或者交換檔案(swap file)。它是硬碟上的一塊空間,被作業系統當作實體記憶體對待。
在虛拟記憶體的實作中,系統的記憶體被分為連續的區塊(block),這些塊由固定大小的頁組成。分頁(paging)這個程序負責将不活動的頁面移至交換檔案中,在需要時将這些頁面從交換檔案取回到實體記憶體中。這樣可以在多個應用之間充分利用有限的可用實體記憶體。作業系統将最少使用的頁面從記憶體中移至交換檔案中,以保證更活躍的程序有足夠的實體記憶體空間。通路交換檔案要比通路實體記憶體頁慢,因為交換檔案在硬碟上,而硬碟的速度慢于記憶體。
裝置驅動(device driver)是一種專用軟體,它用于實作作業系統與某種裝置,如列印機、滑鼠或硬碟的互動。裝置驅動讓作業系統識别、通路和控制裝置。裝置驅動依賴于硬體,不同作業系統的驅動也不同。
早期,硬碟驅動器(hdd)呈現給作業系統的是一組連續的實體塊。整個硬碟驅動器都配置設定給檔案系統或是其他資料體,由作業系統或應用程式使用。這樣做的缺點是缺乏靈活性:當一個硬碟驅動器的空間使用完時,想要擴充檔案系統的大小就很難。而當硬碟驅動器存儲容量增加時,把整個硬碟驅動器配置設定給檔案系統通常會導緻存儲空間不能充分利用。
邏輯卷管理器(logical volume manager,lvm)的發展使得檔案系統容量的動态擴充以及高效的存儲管理成為可能。lvm是一個運作在實體機器上管理邏輯和實體儲存設備的軟體。lvm也是一個介于檔案系統和實體磁盤之間的中間層。它可以把一個大容量實體磁盤劃分為若幹小的虛拟磁盤,也可以把幾個小的實體磁盤組合成一個大的虛拟磁盤(這個過程叫做串聯concatenation),提供給應用程式使用。
磁盤分區(disk partitioning)的引入就是為了改善硬碟驅動器的靈活性和使用率。在分區時,硬碟驅動器被劃分為幾個邏輯卷(logical volume,lv),如圖2-1所示。例如,一個大的實體磁盤,可以根據檔案系統和應用程式的資料管理要求,劃分為若幹小的邏輯卷。當硬碟在主機上進行初始分區時,是将一組連續的柱面配置設定給一個分區。主機的檔案系統在通路分區時,完全不需要知道磁盤的實體結構和分區資訊。

串聯(concatenation)把若幹小的實體磁盤組合起來,呈現給主機一個較大的邏輯盤(見圖2-1)。
lvm提供了優化的存儲通路,簡化了存儲資源的管理。它隐藏了實體磁盤的細節和資料在磁盤上的位置。管理者改變存儲的配置設定時無需停止正在運作的應用。
lvm的基本部件是實體卷(physical volume)、卷組(volume group)和邏輯卷(logical volume)。在lvm術語中,每一個連接配接到主機系統的實體磁盤都是一個實體卷(pv)。lvm把由實體卷提供的實體存儲空間轉換為邏輯存儲空間,供作業系統和應用程式使用。一個卷組由一個或多個實體卷組合而成。對一個實體卷進行初始化時,lvm會為其配置設定一個唯一的實體卷辨別(pvid)。卷組中的實體卷可以動态添加或移除。一個實體卷隻能屬于一個卷組,它的全部空間都并入卷組,不能被其他卷組共享。在卷組建立時,每一個實體卷都被劃分為若幹個相同大小的資料塊,這些資料塊稱為實體區域(physical extent)。
邏輯卷是在給定的卷組中建立的。一個邏輯卷可以被認為是一個虛拟磁盤分區,而卷組則可以被認為是一個磁盤。一個卷組可以劃分為許多邏輯卷。邏輯卷的大小取決于其包含的實體區域的數目。
對作業系統來說,邏輯卷就像是一個實體裝置。一個邏輯卷可以由不連續的實體分區組成,并可以跨越多個實體卷。在邏輯卷上建立檔案系統後,就可以将邏輯卷配置設定給應用了。可以為邏輯卷配置鏡像,以確定更好的資料可用性。
檔案是有關聯關系的記錄或資料的集合,它們作為一個有命名的整體存儲。檔案系統(file system)是大量檔案的分層組織結構。檔案系統使得對存放在磁盤、磁盤分區或邏輯卷内的資料檔案的通路變得更加容易。檔案系統包含相應的邏輯結構和軟體例程,負責控制對檔案的存取。有了檔案系統,使用者可以對檔案進行建立、修改、删除和通路操作。對磁盤上檔案的通路需要由檔案擁有者授權才能進行,這通常也是由檔案系統來控制的。
檔案系統使用目錄(directory)把資料組織成分層結構。目錄就是儲存指向檔案的指針的地方。所有的檔案系統都維護着一個到目錄、子目錄和檔案的指針映射,這些内容也是檔案系統的一部分。常見的檔案系統有以下幾種。
fat32(file allocation table,檔案配置設定表):适用于微軟windows。
nt檔案系統(ntfs):适用于微軟windows。
unix檔案系統(ufs):适用于unix。
擴充檔案系統(ext2/3):适用于unix。
除了檔案和目錄,檔案系統還包括許多其他相關的記錄,統稱為中繼資料(metadata)。例如,unix系統的中繼資料包括超級塊(superblock)、索引節點(inode)、空閑的和正在使用的資料塊清單等。一個檔案系統的中繼資料必須保持一緻,才能算得上是健康的檔案系統。
超級塊包含了檔案系統的重要資訊,比如檔案系統的類型、建立和修改時間、大小和布局、可用的資源數量(如空閑塊數量,索引節點數量等),以及訓示檔案系統挂載狀态(mount status)的标記等。索引節點與檔案和目錄關聯,包含檔案長度、擁有者、通路權限、最後通路和修改時間、連接配接數量,以及資料存放的位址。
檔案系統塊(file system block)是最小的配置設定資料的單元。每一個檔案系統塊對應實體磁盤上一個連續的區域。在檔案系統建立之初,檔案系統塊的大小就确定了。檔案系統的大小是由檔案系統塊的大小以及所存儲資料使用的總塊數決定的。因為大部分檔案都比單個預定義的檔案系統塊的大小要大,是以一個檔案可以跨越多個塊。随着新塊的添加和删除,檔案系統中的塊将變得不再連續了(碎片化)。使用一段時間後,随着檔案數量的增多,檔案系統就變得更加碎片化了。
下面的清單說明了使用lvm将使用者檔案映射到磁盤存儲子系統的過程(該過程可結合圖2-2來了解):
1.使用者和應用程式建立并管理檔案;
2.這些檔案存儲在檔案系統上;
3.檔案系統映射到檔案系統塊上;
4.檔案系統塊映射到邏輯卷的邏輯區域(logical extent)上;
5.通過作業系統或是lvm再把邏輯區域映射到磁盤的實體區域(physical extent)上;
6.這些實體區域最終被映射到實體存儲子系統的磁盤扇區上。
如果沒有lvm,那麼就不會有邏輯區域。沒有lvm,檔案系統塊将被直接映射到磁盤扇區。
檔案系統樹(file system tree)以根目錄(root directory)開始。根目錄下有子目錄。檔案系統隻有在挂載之後才能使用。
fsck是unix和linux主機上用來檢查檔案系統一緻性的系統工具。下面是一個處于不一緻狀态的檔案系統示例:在檔案系統的内容發生更改時,在将這些更改寫入磁盤之前,整個計算機系統突然崩潰。在系統啟動時(boot),fsck指令會首先檢查檔案系統的一緻性,以確定啟動成功。如果該檔案系統是一緻的,fsck指令就會接着檢查所有其他的檔案系統。如果發現哪個檔案系統不一緻,它就不會被挂載。不一緻的檔案系統可被fsck指令自動修複,有時需要使用者的互動、确認和糾正才能完成。對應于fsck,chkdsk是一個可用于dos、os/2和微軟windows作業系統的指令。
檔案系統可以是日志型的,也可以是無日志型的。無日志型的檔案系統(nonjournaling file systems)可能會造成檔案的丢失,這是因為更新資料和中繼資料時的寫操作是分開的。當系統在寫過程中崩潰時,會帶來中繼資料和資料的丢失或損壞。當系統重新開機時,系統會嘗試着通過檢查和修複操作來更新中繼資料結構。在大型檔案系統上,這個操作會消耗大量的時間。如果沒有足夠的重建資訊,那麼檔案就會發生錯位或丢失,進而導緻檔案系統的損壞。
日志型的檔案系統(journaling file system)使用了一個獨立的區域(稱為log或journal),來存放日志資訊。日志中包含了所有将要寫的資料(實體日志,physical journal),或是隻包含待更新的中繼資料(邏輯日志,logical journal)。在檔案系統更新之前,更新資訊先被寫入日志區域。隻有日志區域被更新後,在檔案系統上的操作才能進行。如果檔案系統在操作過程中崩潰,那麼在日志區域中就有足夠的恢複資訊來重制日志過程,并完成修複操作。日志使得檔案系統的檢查特别快,因為它隻關心檔案系統中那些活動的和最近經常通路的部分。另外,由于待操作的資訊都被儲存了,檔案丢失的可能性就降低了。
帶日志的檔案系統的一個缺點是要比一般檔案系統慢一些。導緻系統變慢的原因是因為每次檔案系統變化時,都需要在日志區域進行額外的操作。然而,日志檔案系統帶來的檔案系統檢查時間的縮短和檔案系統的完整性遠彌補了其缺點。如今,幾乎所有檔案系統的實作都是帶日志的。
專用的檔案伺服器可以用來在網絡上管理和共享大量的檔案。這些檔案伺服器支援很多檔案系統,并且采用了作業系統相關的檔案共享協定,例如nfs和cifs。這些協定在第7章都有較長的描述。
計算虛拟化是從作業系統中屏蔽或抽象實體硬體的技術,它使得在一台實體機器或者機器叢集上可以同時運作多個作業系統。利用這一技術可以建立叫做虛拟機(virtual machine,vm)的可移植虛拟計算系統。虛拟機上運作着封裝在一起的作業系統和應用執行個體,不同虛拟機内的作業系統和應用是隔離的。計算虛拟化是通過位于作業系統和硬體之間的虛拟層(virtualization layers)來實作的。虛拟層也被稱為hypervisor,hypervisor為所有的虛拟機提供所需的硬體資源(如cpu,記憶體和網絡)。在一台實體伺服器上,如果性能許可,可以建立大量的虛拟機。
虛拟機是一個邏輯實體,但是在作業系統看來,它卻是一個有自己的cpu、記憶體、網絡控制器和磁盤的實體主機。所有的虛拟機彼此孤立,共享底層的硬體資源。從hypervisor的角度來看,虛拟機不過是多種檔案(包括vm配置檔案和資料檔案等)的集合。
實體伺服器常常會面對資源沖突的問題,特别是在兩個或多個應用對于資源的需求有沖突的時候。例如,不同應用可能需要同一系統資料庫項有不同的值,或者需要同一dll的不同版本。如果這其中有應用需要保證高可用性,那問題就更容易出現了。結果,伺服器一次隻能為一個應用提供資源(參見圖2-3(a))。商業組織不得不為每個部署的應用購買新的實體機,這提高了成本,降低了靈活性。另一方面,許多應用并不能完全利用硬體資源。這樣處理器的性能、記憶體和存儲都處于沒有充分利用的狀态。計算虛拟化可以解決這些問題(參見圖2-3(b)),進而使用者可以在一台實體機器上可以運作多個作業系統和應用,大幅提高了伺服器的使用率,促進了伺服器的資源整合。
通過整合伺服器,商業機構可以減少資料中心伺服器的數量。這樣省去了重新購置伺服器的成本,同時降低了營運成本,節省了資料中心的地闆空間和機架空間。建立虛拟機與配置新實體伺服器相比所需時間更少,商業機構可以更快更容易地部署伺服器(即虛拟機)。單個虛拟機的重新開機、更新或崩潰都不會影響到同一實體機器上的其他虛拟機。另外,虛拟機可以從一台實體機複制到另外一台機器上,在這個過程中應用不受影響。虛拟機的非中斷性遷移(nondisruptive migration)對于不同實體機器之間的負載均衡,硬體維護和保證可用性等場合都是非常必要的。
桌面虛拟化
在傳統的桌面模式中,作業系統、應用和使用者配置檔案是和特定的硬體綁定的。是以當用戶端壞掉或丢失時,業務生産率會受到很大影響。桌面虛拟化打破了作業系統、應用、使用者配置檔案和設定對于硬體的依賴。it人員可以更改、更新或者部署上述元素的任何一個而不會影響其他元素。桌面運作在資料中心的虛拟機上,使用者可以通過多種用戶端裝置通路桌面,例如筆記本電腦、桌上型電腦和移動裝置(也稱為精簡裝置——thin devices)。應用的執行和資料存儲都是在資料中心集中進行的,而非在用戶端裝置上。由于桌面運作在資料中心的虛拟機上,降低了資料洩漏和資料遭盜竊的風險。此外,備份可集中進行,合規也得到簡化。虛拟桌面易于維護,因為安裝更新檔、配置新應用和作業系統、為使用者部署資源或者删除使用者都是集中進行的。