這次技術文章的主題是藉由2015/3/24技術分享會上的PPT,寫成詳細文件,做一個學習的紀錄。
What is N‧T‧F‧S?
- New Technology-最早是Windows NT預設的檔案系統,故命名為「NT」
- File System(檔案系統)-定義電腦如何找到檔案的方式
e.g. 我怎麼知道某個txt檔要讀取硬碟上的哪個位置?
可以想像有一個「容器」,內部紀錄各檔案的名稱及存放位置,當電腦在存取檔案時即會先到這個容器搜尋。
接著要說明典型的檔案系統-FAT(File Allocation Table):
右上的Table就是FAT的核心,裡面會記錄各個檔案的起始位置,
例如:moo這個檔案的起始位置是5,我們在下面的對照表找到第5的位置,
這個位置會再紀錄檔案下一個存放的位置12,
接著到12位置又會指向下一個位置1,
最後在1的位置記錄著EOF(End of File),表示這是檔案的結尾。
所以檔案系統不外乎就是有一個參照表,指向我要的真實檔案。
NTFS的概念其實也是如此。
NTFS磁區包含四個部分:
主檔案表(Master File Table):是NTFS的核心。前16個檔是系統檔,定義了MFT本身紀錄了些什麼。
工作管理員->perfomance->Open Resource Monitor可以觀察目前這些檔佔用資源的狀況。
MFT Zone:存放於NTFS所預留的硬碟位置及空間(避免受到其他檔案資料干擾),名為MFT zone。
資料區域:user可自由使用的區域。
主資料表備份:MFT Mirror,當MFT損毀時可以讀取此處資料做復原。
(其中MFT+MFT Zone會佔磁區的12%;其他佔88%。)
※叢集(Cluster)概念:
磁碟可用空間中,紀錄一個檔案的最小單位
NTFS叢集大小的範圍在512 Bytes ~ 64 KBytes
(一般都會使用預設的4 KBytes)
下表是cluster size預設大小:
磁碟區大小 | Windows NT 3.51 | Windows NT 4.0 | Windows 2000↑ |
7 MB – 512 MB | 512 個位元組 | 4 KB | 4 KB |
512 MB – 1 GB | 1 KB | 4 KB | 4 KB |
1 GB – 2 GB | 2 KB | 4 KB | 4 KB |
2 GB – 2 TB | 4 KB | 4 KB | 4 KB |
2 TB – 16 TB | 不支援 * | 不支援 * | 4 KB |
16 TB – 32 TB | 不支援 * | 不支援 * | 8 KB |
32 TB – 64 TB | 不支援 * | 不支援 * | 16 KB |
64 TB – 128 TB | 不支援 * | 不支援 * | 32 KB |
128 TB – 256 TB | 不支援 * | 不支援 * | 64 KB |
> 256 TB | 不支援 | 不支援 | 不支援 |
※叢集和IT人員有什麼關係?
當IT人員在格式化硬碟時,「配置單位大小」就是cluster size,這邊要設定多少比較好?
若硬碟存取的都是「大檔案」
e.g.若影片檔案大小約1G,使用4KB的叢集數量 > 使用64KB的叢集數量,
此時硬碟若使用4KB叢集,找檔案的次數會暴增,因此大檔案建議使用大叢集。
若硬碟存取的都是「小檔案」
e.g. 若目前有一個txt檔為8KB,
此時硬碟若使用64KB叢集,每新增一個txt檔就會占用64KB的空間,相當浪費。
NTFS特性:
- Transaction-based
- 每新刪修一次檔案或資料夾,即會產生一個transaction
- transaction的好處是可以重做(Redo)之前的動作
- 當重做(Redo)時發生錯誤,系統會禁止你重做
- File and folder permissions
- 針對每個檔案或資料夾都可以做個別的權限控管
- Basic permissions:
※進階安全性設定可以針對每一個user/group做細部的權限設定。
※Auditing為稽核的意思,當啟用稽核功能,可以在事件檢視器內追蹤這個檔案或資料夾的每個動作。當其他人誤改誤刪了重要的檔案,就可以利用這個功能來揪出始作俑者!
※可以查詢出目前user/group針對這個檔案或資料夾擁有的權限細項為何。
- Disk quotas - 磁碟配額
- 針對單一使用者限制磁碟的使用量。
- 以檔案和資料夾的owner來計算量的總和。
※NTFS磁碟槽按右鍵->內容->配額,可開啟磁碟配額功能。
※可在Quota Entries(配額項目) 中查看目前各個使用者的磁碟空間使用狀況。
- Reparse points (used to link files) -進入點
- Hard Links
- Soft Links
- Shortcut
- Junctions
- 主要提供目錄(folder)的連結,可跨磁區
- 一般用在磁碟空間不足時,可將C:的資料夾搬到D:,並做junctions來連結
- Symbolic Links
- 和junctions是一樣的,差別在於可以連結檔案(file)還有連結網路上的資源
※Sparse file中文翻作「疏鬆檔案」,當檔案被標示成「sparse」,NTFS就不會分配空間給「0」使用,檔案大小實際上會去掉0的部分。
- Compression
- 使用演算法壓縮檔案或資料夾、磁區:例如C:有60G只使用了10G,可以利用壓縮把磁碟空間騰出來
- Encryption
※NTFS可使用Encrypted File System(EFS)加密檔案系統功能
- 檔案加密:plain text(明文)經過對稱式金鑰加密後變成加密檔,而系統也有擁有這把對稱金鑰,再加入使用者的公開金鑰就變成了$EFS,$EFS加上加密檔就變成了我的完整加密檔案。
- 檔案解密:將$EFS與加密檔拆開,$EFS加上使用者的私密金鑰就成了一剛開始的對稱金鑰,擁有這把鑰匙就可以拿來解加密檔,成為明文。
- 使用者感受不到加密前後差別
- NTFS才可加密,把檔案移到FAT32時會解密
- 系統檔、systemroot無法加密
- FEK金鑰憑證必須妥善保存
- Alternate data streams
- 中文稱作「附加資料流」,當初微軟設計ADS出來其實是要當作metadata使用,但幾乎沒有任何的應用程式會使用到ADS
- 人人都可以看到的檔案裡,附上一個或多個檔案
- 被附加的檔案無法被看到,也不會改變原始大小
- 一般的使用者很難察覺
- 主要使用者:駭客!
NTFS優缺點
- Pros:
- 復原檔案
- 安全性
- 磁碟配額
- 檔案位置應用
- 疏鬆檔案
- 壓縮檔案、磁碟空間
- Cons:
- 高空間消耗
- 命名限制(特殊字元限制),且無法辨別大小寫
- 磁碟區最小值大約是8MB
- Windows支援的叢集數必須大於127個
- 8MB/64KB=128
- Windows Me/98/95無法存取NTFS磁區(通用性較差)
參考資料