這次技術文章的主題是藉由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針對這個檔案或資料夾擁有的權限細項為何。
※可以查詢出目前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的部分。
 ※Sparse file中文翻作「疏鬆檔案」,當檔案被標示成「sparse」,NTFS就不會分配空間給「0」使用,檔案大小實際上會去掉0的部分。
     - Compression              - 使用演算法壓縮檔案或資料夾、磁區:例如C:有60G只使用了10G,可以利用壓縮把磁碟空間騰出來 
 
- Encryption 
 ※NTFS可使用Encrypted File System(EFS)加密檔案系統功能
※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磁區(通用性較差) 
 
參考資料