說到「存儲」,大家會想到什麼?
是這個?
還是這個?
哈哈,沒錯,我們現在處於資訊時代,每天都在和電腦、手機打交道。我們的工作和生活,已經完全離不開視頻、音樂、圖片、文本、表格這樣的數據文件。
而所有這些數據文件,都需要通過電子設備進行保存,這就是數據存儲,簡稱存儲。
▉ 存儲的基本載體——硬碟
對於普通用戶來說,最常見的存儲設備,就是硬碟。
我們知道,計算機的三大核心硬體,分別是CPU(中央處理器)、內存(Memory)和硬碟(Hard Disk)。CPU負責運算,硬碟負責存儲。而內存,是CPU和硬碟之間的橋梁。用於暫時存放CPU中的運算數據。
CPU、內存、硬碟
絕大部分的臺式機、伺服器、手機,都是內置存儲系統。也就是說,它們的硬碟安裝在設備內部。
以普通臺式機為例,硬碟通過專用接口和數據線,連接在主板上,實現和CPU、內存的數據連接。
臺式機上安裝好的硬碟
常用的硬碟專用接口如下:
手機等數碼設備的「硬碟」,則是做成了很小的存儲晶片,直接焊在主板上。
常見的手機存儲晶片:eMMC、UFS(更快)
我們再來簡單看看硬碟的內部結構。
目前主流的硬碟類型有兩種,分別是傳統機械硬碟和SSD固態硬碟。小編以大家比較熟悉的機械硬碟為例進行介紹。
左邊是機械硬碟,右邊是SSD固態硬碟
硬碟之所以叫硬碟,是因為它的核心部分是一塊或多塊由堅硬金屬材料製成的碟片。碟片上面塗抹了磁性介質,兩面都可以記錄信息。在盤面上讀/寫數據的,是磁頭。
硬碟,也叫磁碟(有點像唱片機)
下圖顯示的是一個盤面:
盤面中一圈圈灰色同心圓為一條條磁軌。從圓心向外畫直線,可以將磁軌劃分為若干個弧段,每個弧段被稱之為一個扇區(Sector,圖中綠色部分)。
扇區是磁碟的最小組成單元。大家應該看出來了,越靠圓心,扇區越短。那麼,是不是越往外,扇區越長,存儲的數據越多呢?
不一定。
老式的硬碟,不管靠內還是靠外,每個扇區的大小是一樣的,都是512位元組。這種硬碟用柱面-磁頭-扇區號(CHS,Cylinder-Head-Sector)組成的編號進行尋址。
而現在主流的硬碟,扇區密度是一致的,也就是說,越靠外側,扇區數越多。每個扇區的大小是4K字節,用一個邏輯塊編號尋址(LBA,Logical Block Addressing)。
以扇區為基礎,一個或多個連續的扇區組成一個塊,叫做物理塊。所以,硬碟往往又叫塊設備(Block Device)。
▉ 什麼是邏輯卷?什麼是文件系統?
為了方便管理,我們可以將硬碟這樣的物理塊設備,分割成多個邏輯塊設備。或者,我們也可以將多個物理塊設備,組合成一個容量更大的邏輯塊設備。
底層的相關技術和工具,包括RAID(大家可能比較熟悉)、JBOD、卷管理系統(Volume Manager)。
Windows的卷管理系統,就是它自帶的磁碟管理工具。而Linux的,是大名鼎鼎的LVM(Logical Volume Manager,邏輯卷管理)。
我們先說說Windows的。
在Windows中,磁碟分為基本磁碟和動態磁碟。默認情況下,用戶用的都是基本磁碟。
一個基本磁碟可以劃分為多個分區,分區類別包括主分區、擴展分區和邏輯分區。
硬碟分區
主分區是硬碟的啟動分區,我們常說的「C盤」就是硬碟上的主分區。MBR分區表可以劃分出4個主分區。如果使用GPT分區,可以管理128個主分區。
除去主分區以外,硬碟剩下的容量就被認定為擴展分區。擴展分區不能直接使用。擴展分區可以分成一個或若干個邏輯分區,也就是我們的「D盤」、「E盤」等。
動態磁碟是基本磁碟的升級模式。在動態磁碟中,分區叫做卷。卷的出現,就是為了便於對多硬碟進行管理。
簡單來說,動態磁碟可以將不同硬碟分到一個卷。假如你手中有160G和250G硬碟各一塊,如果想劃分90G和320G的分區,就可以藉助動態磁碟來完成。
動態磁碟裡面的卷,又分為簡單卷、跨區卷、帶區卷、鏡像卷、RAID-5卷。限於篇幅,就不做具體介紹了。基本磁碟裡的分區,現在也被微軟改叫為卷。
再來看看Linux的LVM工具。
其實LVM和動態磁碟的思路差不多的,也是把物理空間變成邏輯空間。
首先,物理存儲介質進行初始化,變成物理卷(PV,physical volume)。
然後,一個或多個物理卷組成一個卷組(VG,Volume Group)。
創建卷組之後,再創建邏輯卷(LV,logical volume)。
整個過程,如下圖所示:
LVM主要元素的構成
好了,不管是Windows還是Linux,邏輯卷都有了,是不是可以直接使用它們啦?
不行,還差一步。那就是文件系統(File System)。
文件系統就像倉庫管理員。作為用戶,你不需要知道倉庫裡面到底是什麼樣子,只需要把貨物交給他,他會以一個樹形結構目錄,登記這些貨物。你來取的時候,只需要告訴他路徑,他就會把貨物交給你。
文件夾結構
文件系統有很多種類型,常見的有Windows的FAT/FAT32/NTFS(大家應該很熟悉),還有就是Linux的EXT2/EXT3/EXT4/XFS/BtrFS等。
Windows系統下,通過對分區(卷)進行文件系統格式化,再分配一個盤符,我們就可以在「我的電腦」裡看到可用的磁碟。Linux系統下,我們需要對邏輯卷進行文件系統格式化,然後執行掛載操作,也就能對存儲空間進行使用了。
▉ 什麼是DAS/NAS/SAN
除了內置存儲之外,隨著存儲容量需求的不斷增加,加上維護便利性的需要,計算機系統開始引入了外掛存儲。也就是說,硬碟從計算機的內部,跑到了計算機的外部。
外掛存儲分為兩種,一種是直連式存儲(DAS,Direct Attached Storage),還有一種是網絡存儲(FAS,Fabric Attached Storage)。
DAS直連式存儲,一般是使用專用線纜(例如SCSI),與存儲設備(例如磁碟陣列)進行直連。
雖然數據存儲設備看似在外部,但直接掛接在伺服器內部總線上,是整個伺服器結構的一部分。
DAS的缺點是存儲設備只能連接到一臺主機使用,無法共享,成本較高,且安全性可靠性較低。
FAS網絡存儲,是一種多點連接式的存儲。它又分為NAS(Network-attached Storage,網絡接入存儲)和SAN(Storage Area Network,存儲區域網絡)。
這些概念的名字非常像,大家千萬別暈。畫個圖看得明白一些:
NAS與DAS相比,最大的特點是非直連。它可以通過IP網絡,實現多臺主機與存儲設備之間的連接。
NAS大大提高了存儲的安全性、共享性和成本。但是I/O(輸入輸出)漸漸成為性能瓶頸。隨著應用伺服器的不斷增加,網絡系統效率會急劇下降。為了解決這個問題,出現了SAN存儲方案。
SAN是在NAS基礎上做的演進。它通過專用光纖通道交換機訪問數據,採用ISCSI、FC協議。
SAN和NAS的關鍵區別,就在於文件系統的位置。畫個圖就明白了:
可以看出,如果說SAN是一塊網絡硬碟的話,NAS基本上已經像一臺獨立的伺服器了。NAS擁有文件系統,用戶可以通過TCP/IP協議直接訪問上面的數據。
現在很多家庭都開始使用小型NAS設備,相當於一個小型伺服器。
在NAS的模式下,不同的客戶端可以使用網絡文件系統(Network File System)訪問NAS上的文件。常見的網絡文件系統有Windows網絡的CIFS(也叫SMB)、類Unix系統網絡的NFS等。
FTP、HTTP其實也算是文件存儲的某種特殊實現,它們通過某個URL地址來訪問一個文件。
▉ 未完待續……
隨著網際網路的持續發展,網絡上的數據量在不斷激增,這給存儲系統帶來了巨大的壓力和挑戰。
雲計算的興起,會給我們全新的解決方案嗎?
來源:鮮棗課堂
編輯:xx