基本修養(yǎng):存儲與文件系統(tǒng)講解
存儲 (Storage)
存儲是用于保有數(shù)據(jù)的技術(shù)。
目前計算機存儲采用的技術(shù)方式主要有以下幾種:磁介質(zhì)(硬盤,磁帶),半導(dǎo)體(內(nèi)存,固態(tài)硬盤,閃存卡等),光介質(zhì)(光盤)等。不同的存儲方式在各方面具有不同的特點,如易失性(斷電是否失去數(shù)據(jù)),容量大小,讀寫支持(讀寫,只讀,快讀慢寫,一次性寫入等),數(shù)據(jù)存取方式(連續(xù)存取,隨機存?。阅埽ㄈ缪舆t,吞吐量等),能耗等。
下文所說的存儲指二級存儲,又稱外存,或輔存。與此對應(yīng)的主要存儲是指內(nèi)存,即“運行內(nèi)存”。事實上只有這一種內(nèi)存,把移動設(shè)備的持久化存儲稱為內(nèi)存在技術(shù)上是錯誤的,這些其實是外存。外存與內(nèi)存的區(qū)別在于是否能直接與 CPU 連接。常見的外存設(shè)備包括硬盤,固態(tài)硬盤等。
硬盤 (HDD, Hard Disk Drive)
硬盤是一種電子機械設(shè)備,使用轉(zhuǎn)動的磁盤和可平面移動的磁頭來存取數(shù)據(jù)。
硬盤的存取延遲一般在幾毫秒左右。它支持隨機存取,每秒大概幾十次到二百次。硬盤適用于連續(xù)存取較多的場景如多媒體數(shù)據(jù)或備份等,其吞吐量可達(dá)到 100 ~ 200 MB/s.
硬盤驅(qū)動器中可以有多張磁碟,互相平行重疊,碟間和兩側(cè)有讀寫磁頭(Head)。每張碟被劃分為若干個同心圓,稱為磁道(Track),每個磁道劃分為多個扇區(qū)(Sector);所有碟相同位置的磁道構(gòu)成一個柱面(Cylinder)。硬盤可以通過 CHS 方式對每個扇區(qū)進(jìn)行尋址: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)硬盤 (SDD, Solid-state Drive/Solid-state Disk)
固態(tài)硬盤使用閃存芯片存儲數(shù)據(jù)。
固態(tài)硬盤的存取延遲一般在幾十到幾百微秒之間。隨機存取每秒可以達(dá)到千次以上,并且可在內(nèi)部使用類似 RAID 0 的技術(shù)進(jìn)一步提升性能。吞吐量一般大于硬盤,高端的產(chǎn)品甚至經(jīng)常被物理接口(SATA, PCIE等)所限制。
由于 NAND(Not AND) 閃存的特性,固態(tài)硬盤長期不通電會損失數(shù)據(jù)(正常室溫情況下若干年)。閃存芯片可按字節(jié)讀取,但是寫入時則只能在特定情況下進(jìn)行:代表 1 的位(bit)可被改寫為 0, 反之則不行;只有整塊(一般單塊在 16KB 到 512KB 之間)擦寫才能將 0 變?yōu)?1。閃存具有有限的 P/E 周期(Program-Eraspe),數(shù)據(jù)寫入量過大會造成寫入耗盡(wear out)。由于這些特性,針對固態(tài)硬盤,固件及軟件系統(tǒng)需要進(jìn)行相關(guān)的處理,才能將保持高性能和保證設(shè)備狀態(tài)。文件系統(tǒng)可以發(fā)送 TRIM 命令,通知 SSD 塊已經(jīng)不再使用,可以擦除;固件可能會將數(shù)據(jù)分布到不同的位置,以平衡不同塊的寫入量。
固態(tài)硬盤里邊沒有“盤”。它不包含可運動的機械裝置,因此稱為“固態(tài)”。它也不包含磁性組件,但是由于習(xí)慣和翻譯的原因,通常還是把它和硬盤等可按塊隨機訪問的二級存儲設(shè)備統(tǒng)稱為磁盤(disk)。
S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology)
磁盤可能因為機械磨損,材料降級等原因發(fā)生故障。為增強數(shù)據(jù)安全性,現(xiàn)代的磁盤基本都支持通過 S.M.A.R.T. 向軟件系統(tǒng)報告自身健康狀態(tài)。S.M.A.R.T. 標(biāo)準(zhǔn)僅定義了軟硬件間通信的接口協(xié)議,并未規(guī)定具體的監(jiān)控指標(biāo)(Attribute, 特性),因此不同廠商的產(chǎn)品或不同的產(chǎn)品系列報告的數(shù)據(jù)意義并不完全相同。
S.M.A.R.T 報告的數(shù)據(jù)中,有一個最基本的狀態(tài),代表是否已超過健康閾值。另外還有一系列的指標(biāo),每個指標(biāo)包含以下幾個值:
- ID,整數(shù),指標(biāo)的標(biāo)識,由廠商定義,但有部分是通用的
- 原始值(Raw value),整數(shù),其意義由廠商定義
- 正規(guī)值(Normalized value),1 到 253 之間,通常默認(rèn)為 100,數(shù)字越小代表磁盤健康情況越差
- 最差值(Worst value),代表歷史記錄到的最差的正規(guī)值
- 閾值(Threshold value),當(dāng)正規(guī)值小于或等于該值時,磁盤的健康程度已經(jīng)到達(dá)了臨界點,必須進(jìn)行處理了
部分較關(guān)鍵的通用指標(biāo)包括 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, Redundant Array of Independent Disks)
RAID 技術(shù)用于將多個二級存儲設(shè)備(下稱磁盤)虛擬為一個,以提升性能和/或安全性。 RAID 有不同的等級,分別達(dá)到不同的整合效果。常用的等級有以下幾種:
-
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) (FS, File System)
文件系統(tǒng)是用于在存儲介質(zhì)上組織和存取數(shù)據(jù)的軟件。它提供了數(shù)據(jù)分組的抽象機制(文件,目錄等),以及在此抽象機制上的操作接口。文件系統(tǒng)有很多種,以適應(yīng)不同的底層存儲機制(如硬盤,光盤,網(wǎng)絡(luò)等),達(dá)到不同的設(shè)計目標(biāo)(如速度,靈活性,安全等)。
磁盤文件系統(tǒng) (Disk file system)
磁盤文件系統(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ù)損壞或硬件故障時進(jìn)行恢復(fù)。目錄表中記錄每個文件/目錄的名稱,屬性,存取日期等元數(shù)據(jù),以及內(nèi)容起始簇的編號等。FAT 中文件名最長為 8 個字符加上 3 個字符的擴展名(稱為 8.3 文件名格式),Windows 95 以后對此進(jìn)行了擴展,最多可達(dá) 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 的默認(rèn)文件系統(tǒng),在 macOS 和 Linux 中也能作為只讀裝載。NTFS 中,文件/目錄的所有信息都是屬性(Attribute),包括文件內(nèi)容(稱為流,一個文件可以有多個流,其中至少有一個是默認(rèn)流,其它的需要單獨命名)。這些屬性都保存在主文件表(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ù)和日志添加了校驗碼,同時在其它方面也有更多的改進(jìn)。這些文件系統(tǒng)也可以通過第三方軟件在 Windows/macOS 中受限使用(部分特性不受支持)。
-
ZFS 是一種獨特的先進(jìn)文件系統(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 的默認(rèn)文件系統(tǒng)。
-
ReFS(Resilient File System) 是微軟設(shè)計開發(fā)的新一代文件系統(tǒng),類似 ZFS 和 Btrfs,尚未大規(guī)模普及,目前僅在 Windows Server 和 Windows 10 企業(yè)版本可用。
網(wǎng)絡(luò)文件系統(tǒng) (Network File System)
網(wǎng)絡(luò)文件系統(tǒng)作為遠(yuǎn)程文件訪問協(xié)議的客戶端,提供服務(wù)器上文件的存取服務(wù)。常見的網(wǎng)絡(luò)文件系統(tǒng)(及類似系統(tǒng))包括以下幾種:
-
NFS(Network File System) 是一套分布式文件系統(tǒng)協(xié)議的開放標(biāo)準(zhǔn)。目前主要在 *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) 是一套輕量級的遠(yuǎn)程文件系統(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í)行遠(yuǎn)程文件編輯操作。它在標(biāo)準(zhǔn)的 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 使用相同的端口,默認(rèn)為 80 和 443。
-
FTP(File Transfer Protocol) 是用于文件傳輸?shù)臉?biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議,應(yīng)用十分廣泛。FTP 的控制流和數(shù)據(jù)流使用不同的端口(通常是21 和 20)。數(shù)據(jù)連接可選主動或被動模式,被動模式下服務(wù)器偵聽客戶端的請求,可解決客戶端由于 NAT 或防火墻等原因無公開端口的問題。 FTP 可設(shè)置為匿名連接,也可使用明文傳輸?shù)挠脩裘?密碼進(jìn)行身份認(rèn)證。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)講解的詳細(xì)內(nèi)容,更多關(guān)于存儲與文件系統(tǒng)的資料請關(guān)注本站其它相關(guān)文章!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。