存儲是用于保有數(shù)據(jù)的技術(shù)。
目前計算機存儲采用的技術(shù)方式主要有以下幾種:磁介質(zhì)(硬盤,磁帶),半導(dǎo)體(內(nèi)存,固態(tài)硬盤,閃存卡等),光介質(zhì)(光盤)等。不同的存儲方式在各方面具有不同的特點,如易失性(斷電是否失去數(shù)據(jù)),容量大小,讀寫支持(讀寫,只讀,快讀慢寫,一次性寫入等),數(shù)據(jù)存取方式(連續(xù)存取,隨機存取),性能(如延遲,吞吐量等),能耗等。
下文所說的存儲指二級存儲,又稱外存,或輔存。與此對應(yīng)的主要存儲是指內(nèi)存,即“運行內(nèi)存”。事實上只有這一種內(nèi)存,把移動設(shè)備的持久化存儲稱為內(nèi)存在技術(shù)上是錯誤的,這些其實是外存。外存與內(nèi)存的區(qū)別在于是否能直接與 CPU 連接。常見的外存設(shè)備包括硬盤,固態(tài)硬盤等。
硬盤是一種電子機械設(shè)備,使用轉(zhuǎn)動的磁盤和可平面移動的磁頭來存取數(shù)據(jù)。
硬盤的存取延遲一般在幾毫秒左右。它支持隨機存取,每秒大概幾十次到二百次。硬盤適用于連續(xù)存取較多的場景如多媒體數(shù)據(jù)或備份等,其吞吐量可達到 100 ~ 200 MB/s.
硬盤驅(qū)動器中可以有多張磁碟,互相平行重疊,碟間和兩側(cè)有讀寫磁頭(Head)。每張碟被劃分為若干個同心圓,稱為磁道(Track),每個磁道劃分為多個扇區(qū)(Sector);所有碟相同位置的磁道構(gòu)成一個柱面(Cylinder)。硬盤可以通過 CHS 方式對每個扇區(qū)進行尋址:Cylinde 編號(0 ~ 1023),Head 編號(0~254),Sector(1 ~ 63)。這種方式在常見的 512 字節(jié)扇區(qū)大小下,能處理的最大硬盤容量是 7844 GB。歷史上這些值直接對應(yīng)硬盤的內(nèi)部的物理器件,但隨著存儲密度的增大,硬盤向 BIOS 報告的參數(shù)也變?yōu)榱诉壿嫈?shù)據(jù)。為解決更大容量的尋址問題,同時提升部分場景的性能,AF (Advanced Formatting) 技術(shù)將扇區(qū)大小調(diào)整為 4 KB。較新的存儲系統(tǒng)現(xiàn)在主要采用 LBA(Logical Block Addressing) 尋址方式,直接使用 32 位或 64 位的扇區(qū)編號。
硬盤根據(jù)磁極與盤面的方向關(guān)系可分為 LMR 和 PMR 兩種。LMR(Longitudinal Magnetic Recording, 縱向磁性記錄)僅用于早期的硬盤,磁極與盤面平行。PMR(Perpendicular Magnetic Recording, 垂直磁性記錄)是目前所有硬盤都采用的技術(shù),磁極與盤面垂直,這樣能做到更高的數(shù)據(jù)密度。PMR 又分為兩種:CMR 和 SMR。CMR(Conventional PMR) 中磁道之間留有空白區(qū)域,以避免存取時與相鄰磁道相互影響。SMR(Shingled Magnetic Recording , 疊瓦磁性記錄) 中磁道間沒有間隔,修改數(shù)據(jù)時需要特殊處理,以免影響相鄰磁道。SMR 提升了數(shù)據(jù)存儲密度,在性能和穩(wěn)定性上做了一定的妥協(xié)。
硬盤的“硬”字是相對于軟盤而言的。軟盤(Floppy disk)是一種可移動的磁存儲媒體,塑料硬殼里邊的盤片使用較軟的聚酯薄膜制成。硬盤的盤片則由鋁或玻璃制成。
固態(tài)硬盤使用閃存芯片存儲數(shù)據(jù)。
固態(tài)硬盤的存取延遲一般在幾十到幾百微秒之間。隨機存取每秒可以達到千次以上,并且可在內(nèi)部使用類似 RAID 0 的技術(shù)進一步提升性能。吞吐量一般大于硬盤,高端的產(chǎn)品甚至經(jīng)常被物理接口(SATA, PCIE等)所限制。
由于 NAND(Not AND) 閃存的特性,固態(tài)硬盤長期不通電會損失數(shù)據(jù)(正常室溫情況下若干年)。閃存芯片可按字節(jié)讀取,但是寫入時則只能在特定情況下進行:代表 1 的位(bit)可被改寫為 0, 反之則不行;只有整塊(一般單塊在 16KB 到 512KB 之間)擦寫才能將 0 變?yōu)?1。閃存具有有限的 P/E 周期(Program-Eraspe),數(shù)據(jù)寫入量過大會造成寫入耗盡(wear out)。由于這些特性,針對固態(tài)硬盤,固件及軟件系統(tǒng)需要進行相關(guān)的處理,才能將保持高性能和保證設(shè)備狀態(tài)。文件系統(tǒng)可以發(fā)送 TRIM 命令,通知 SSD 塊已經(jīng)不再使用,可以擦除;固件可能會將數(shù)據(jù)分布到不同的位置,以平衡不同塊的寫入量。
固態(tài)硬盤里邊沒有“盤”。它不包含可運動的機械裝置,因此稱為“固態(tài)”。它也不包含磁性組件,但是由于習(xí)慣和翻譯的原因,通常還是把它和硬盤等可按塊隨機訪問的二級存儲設(shè)備統(tǒng)稱為磁盤(disk)。
磁盤可能因為機械磨損,材料降級等原因發(fā)生故障。為增強數(shù)據(jù)安全性,現(xiàn)代的磁盤基本都支持通過 S.M.A.R.T. 向軟件系統(tǒng)報告自身健康狀態(tài)。S.M.A.R.T. 標準僅定義了軟硬件間通信的接口協(xié)議,并未規(guī)定具體的監(jiān)控指標(Attribute, 特性),因此不同廠商的產(chǎn)品或不同的產(chǎn)品系列報告的數(shù)據(jù)意義并不完全相同。
S.M.A.R.T 報告的數(shù)據(jù)中,有一個最基本的狀態(tài),代表是否已超過健康閾值。另外還有一系列的指標,每個指標包含以下幾個值:
部分較關(guān)鍵的通用指標包括 5(0x05, Reallocated Sectors Count,重映射扇區(qū)數(shù)), 10(0x0A, Spin Retry Count,旋轉(zhuǎn)重試次數(shù)), 187(0xBB, Reported Uncorrectable Errors, 無法使用硬件 ECC 恢復(fù)的錯誤次數(shù)), 196(0xC4, Reallocation Event Count, 重映射事件次數(shù)),197(0xC5, Current Pending Sector Count,待重映射扇區(qū)數(shù)) 等。
RAID 技術(shù)用于將多個二級存儲設(shè)備(下稱磁盤)虛擬為一個,以提升性能和/或安全性。 RAID 有不同的等級,分別達到不同的整合效果。常用的等級有以下幾種:
RAID 0 將兩個以上的磁盤并聯(lián),提供多倍容量,多倍性能。數(shù)據(jù)無冗余,無容錯,單個磁盤損壞時會丟失所有數(shù)據(jù)。
RAID 1 使用兩個以上的磁盤互為鏡像,提供單盤的容量,多倍讀取性能,略低于單盤的寫入性能。只有所有磁盤同時損壞才會丟失數(shù)據(jù)。
RAID 5 使用三個以上的磁盤分布式存儲數(shù)據(jù)和容錯信息。讀寫性能稍低于 RAID 0, 單個磁盤損壞時不會丟失數(shù)據(jù)。
RAID 6 類似 RAID 5,存儲兩份容錯信息,使用四個以上磁盤。讀寫性能類似 RAID 5。兩個以內(nèi)磁盤損壞時不會丟失數(shù)據(jù)。
RAID 10 為 RAID 1 和 RAID 0 的結(jié)合,以更高的代價同時提供性能和安全性。
文件系統(tǒng)是用于在存儲介質(zhì)上組織和存取數(shù)據(jù)的軟件。它提供了數(shù)據(jù)分組的抽象機制(文件,目錄等),以及在此抽象機制上的操作接口。文件系統(tǒng)有很多種,以適應(yīng)不同的底層存儲機制(如硬盤,光盤,網(wǎng)絡(luò)等),達到不同的設(shè)計目標(如速度,靈活性,安全等)。
磁盤文件系統(tǒng)借助于磁盤的隨機讀寫能力,提供方便而高效的文件服務(wù)。它通常把存儲介質(zhì)抽象為卷(Volume),即邏輯磁盤,一個卷可能對應(yīng)一個或多個物理磁盤或磁盤分區(qū)。常見的磁盤文件系統(tǒng)包括以下幾種:
FAT(File Allocation Table) 家族是支持最廣泛的文件系統(tǒng)。FAT 把卷的空間分為三個部分:目錄表,文件分配表和數(shù)據(jù)區(qū)。其中數(shù)據(jù)區(qū)被分為不同的簇(cluster),每個簇包含 N (N 可以為 1, 2, 4, 8, 16, 32, 64, 128)個物理連續(xù)的扇區(qū)。文件內(nèi)容存儲在這些簇中,單個文件至少占用一個簇。文件分配表中為記錄了每個簇的使用情況:未使用,文件末尾,同文件下個簇的編號。這樣,文件內(nèi)容所使用的簇就形成了一個單鏈表。磁盤上存有兩份文件分配表,以便在數(shù)據(jù)損壞或硬件故障時進行恢復(fù)。目錄表中記錄每個文件/目錄的名稱,屬性,存取日期等元數(shù)據(jù),以及內(nèi)容起始簇的編號等。FAT 中文件名最長為 8 個字符加上 3 個字符的擴展名(稱為 8.3 文件名格式),Windows 95 以后對此進行了擴展,最多可達 255 個 UCS-2 字符。目前最常用的 FAT32 中單個文件不能超過 4 GB,單卷(邏輯磁盤)不能超過 2 TB(格式化為 4KB 扇區(qū)時為 16 TB)。
exFAT 是在 FAT32 的基礎(chǔ)上,專門為閃存設(shè)備設(shè)計的文件系統(tǒng),通常用于移動存儲,移動設(shè)備或嵌入式系統(tǒng)。它放寬了 FAT32 對文件和卷尺寸的限制。exFAT 中只有一份文件分配表,它支持對連續(xù)的文件內(nèi)容使用擴展(extend),而忽略文件分配表中的數(shù)據(jù),從而減少了文件修改時對閃存的寫入量。Windows 10 僅允許 32 GB 以上的分區(qū)格式化為 exFAT, 更小的分區(qū)會被推薦使用 FAT32 格式。
NTFS (New Technology File System) 是 Windows 的默認文件系統(tǒng),在 macOS 和 Linux 中也能作為只讀裝載。NTFS 中,文件/目錄的所有信息都是屬性(Attribute),包括文件內(nèi)容(稱為流,一個文件可以有多個流,其中至少有一個是默認流,其它的需要單獨命名)。這些屬性都保存在主文件表(Master File Table, MFT)的記錄里,每條記錄大小為 1 KB。如果空間足夠,一個文件僅需要這么一條記錄即可,無需另外分配磁盤空間;如果空間不足以容納所有的屬性,則會把部分屬性存儲在同卷的其它地方,在MFT中記錄這些位置。NTFS 使用了日志系統(tǒng),保證文件系統(tǒng)元數(shù)據(jù)不被意外破壞。
ext系列(ext2/ext3/ext4)是 Linux 下常用的文件系統(tǒng)。ext2 中每個文件或目錄對應(yīng)一個索引節(jié)點(inode, index node),其中記錄了文件的尺寸,權(quán)限等信息,以及數(shù)據(jù)塊的位置(指針)。單個 inode 中可以有 15 個指針:其中前 12 個直接指向數(shù)據(jù)塊;第 13 個是間接指針,它指向一個指針塊,指針塊中包含若干指向數(shù)據(jù)塊的指針;第 14 個是雙重間接指針,指向指向指針塊的指針塊;第 15 個是三重間接指針。ext3 在 ext2的基礎(chǔ)上增加了日志功能,提升了系統(tǒng)故障時的容錯性。ext4 支持更大的卷,為元數(shù)據(jù)和日志添加了校驗碼,同時在其它方面也有更多的改進。這些文件系統(tǒng)也可以通過第三方軟件在 Windows/macOS 中受限使用(部分特性不受支持)。
ZFS 是一種獨特的先進文件系統(tǒng),在 Solaris 操作系統(tǒng)中原生可用,也可通過第三方軟件在 Linux/macOS 中使用。ZFS 為長期大量數(shù)據(jù)存儲而設(shè)計,有多種安全措施來防止軟硬件錯誤帶來的數(shù)據(jù)丟失:所有數(shù)據(jù)都存有多層級校驗碼,數(shù)據(jù)和校驗碼可存儲多份,支持寫入日志,提供軟 RAID。功能上它支持快照,寫時復(fù)制(copy-on-write);性能上,ZFS 支持多級緩存設(shè)備,如內(nèi)存和固態(tài)硬盤。與大部分其它文件系統(tǒng)不同的是,ZFS 還提供了虛擬設(shè)備的功能,在虛擬設(shè)備上可以使用其它文件系統(tǒng),這樣可以用 ZFS 提供優(yōu)異的性能和數(shù)據(jù)安全性,同時使用其它文件系統(tǒng)的功能。ZFS 是新一代文件系統(tǒng)中較為成熟和完善的,但是潛在的版權(quán)法律問題,限制了它在 Linux 各發(fā)行版中的采用率。
Btrfs(B-tree file system) 基于寫時復(fù)制(copy-on-write)的原則,解決傳統(tǒng)文件系統(tǒng)中欠缺存儲池,快照,校驗碼,多設(shè)備整合等功能的問題。功能上它和 ZFS 類似,經(jīng)過完善和成熟后,有希望成為未來 Linux 的默認文件系統(tǒng)。
ReFS(Resilient File System) 是微軟設(shè)計開發(fā)的新一代文件系統(tǒng),類似 ZFS 和 Btrfs,尚未大規(guī)模普及,目前僅在 Windows Server 和 Windows 10 企業(yè)版本可用。
網(wǎng)絡(luò)文件系統(tǒng)作為遠程文件訪問協(xié)議的客戶端,提供服務(wù)器上文件的存取服務(wù)。常見的網(wǎng)絡(luò)文件系統(tǒng)(及類似系統(tǒng))包括以下幾種:
NFS(Network File System) 是一套分布式文件系統(tǒng)協(xié)議的開放標準。目前主要在 *nix 系統(tǒng)上應(yīng)用,在 macOS 和 Windows 下使用較少。目前主流使用的 NFS v3 以上版本,可選使用 TCP 或 UDP 作為底層傳輸協(xié)議。NFS v4 及以后的版本只使用一個端口 2049。
SMB(Server Message Block) 也叫 CIFS(Common Internet File System),是 Windows 自帶的網(wǎng)絡(luò)協(xié)議,用于共享文件,打印機等。macOS 自帶了 SMB 支持, Linux 可使用包 cifs-utils
和 samba
來使用該協(xié)議。SMB v2.0 及以后的版本基于 TCP, 使用端口 445。
9P(Plan 9 File System Protocol) 是一套輕量級的遠程文件系統(tǒng)協(xié)議,經(jīng)常用于虛擬機與外界的文件共享。WSL2(Windows Subsystem for Linux 2) 就使用了該協(xié)議與 Linux 文件系統(tǒng)交互。 9P 通常使用 TCP 端口 564。
WebDAV(Web Distributed Authoring and Versioning) 是 HTTP 的擴展,允許客戶端執(zhí)行遠程文件編輯操作。它在標準的 HTTP 方法(GET, POST, PUT, DELETE 等)外,添加了新的方法:COPY, LOCK, UNLOCK, MKCOL, MOVE, PROPFIND, PROPPATCH。主流 HTTP 服務(wù)器(Nginx, Apache, IIS 等)都有內(nèi)置或第三方的 WebDAV 支持,部分私人云軟件(ownCloud, Nextcloud等)也支持 WebDAV 訪問方式。 Windows 集成了 WebDAV 客戶端。WebDAV 和 HTTP/HTTPS 使用相同的端口,默認為 80 和 443。
FTP(File Transfer Protocol) 是用于文件傳輸?shù)臉藴示W(wǎng)絡(luò)協(xié)議,應(yīng)用十分廣泛。FTP 的控制流和數(shù)據(jù)流使用不同的端口(通常是21 和 20)。數(shù)據(jù)連接可選主動或被動模式,被動模式下服務(wù)器偵聽客戶端的請求,可解決客戶端由于 NAT 或防火墻等原因無公開端口的問題。 FTP 可設(shè)置為匿名連接,也可使用明文傳輸?shù)挠脩裘?密碼進行身份認證。FTPS(FTP Secure) 在 FTP 的基礎(chǔ)上增加了數(shù)據(jù)加密的功能,以提升安全性,它通常使用 990(控制)和 989 端口。
SFTP(SSH File Transfer Protocol) 用于在安全數(shù)據(jù)連接上管理和傳輸文件。它是 SSH(Secure Shell)協(xié)議的擴展,通常由 SSH 服務(wù)器提供支持,但是也可以作為獨立的文件服務(wù)使用。一般 SFTP 和 SSH 使用同一端口 22。
以上就是基本修養(yǎng):存儲與文件系統(tǒng)講解的詳細內(nèi)容,更多關(guān)于存儲與文件系統(tǒng)的資料請關(guān)注武林網(wǎng)其它相關(guān)文章!
新聞熱點
疑難解答
圖片精選