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