前幾天一路都在分析 Memory,今天先把視角拉回硬碟。
因為之後要開始接觸 Deleted File、File Recovery,甚至 NTFS 裡的資料結構之前,有幾個很基本但很重要的概念一定要先搞懂:Sector、Cluster、File Slack。
我們平常看到的是一個個檔案,但對儲存裝置來說,底層其實只是很多區塊和 Bytes。
Sector 可以理解成磁碟底層存取資料的基本區塊,是硬碟最小單位的儲存單位。
傳統磁碟常見:
所以看到 Sector 時,不一定永遠都是 512 Bytes,還是要看實際儲存裝置的設定。
作業系統不一定直接一個 Sector、一個 Sector 地分配檔案,而是會透過 File System 使用 Cluster 來配置空間,他是系統最小的儲存空間。
一個 Cluster 可以由多個 Sector 組成。
例如 1 Sector = 512 Bytes
如果 1 Cluster = 8 Sectors
那麼 1 Cluster = 512 × 8 = 4096 Bytes = 4 KB
所以可以先記成:
Bit → Byte → Sector → Cluster → File
假設今天的 Cluster Size 是 4 KB,現在有一個 5 KB 的檔案。
第一個 Cluster 可以放 4 KB,但剩下的 1 KB 不能只另外分配 1 KB,而是必須再使用一整個 4 KB Cluster。
所以:
5 KB 的檔案 → 需要 2 個 Cluster → 共配置 8 KB
| 項目 | 大小 |
|---|---|
| File Size | 5 KB |
| Cluster Size | 4 KB |
| 使用 Cluster | 2 |
| Allocated Space | 8 KB |
| 沒有被檔案使用 | 3 KB |
這也是為什麼有時候 Windows 檔案內容裡的 Size 和 Size on disk 會不一樣。
剛才配置了 8 KB,但檔案實際只有 5 KB,所以最後一個 Cluster 還剩下 3 KB。
這段沒有被目前檔案使用的區域,就是 Slack Space。
Cluster 1
┌──────────────────────┐
│ File Data 4 KB │
└──────────────────────┘
Cluster 2
┌──────────┬───────────┐
│ File Data│ Slack │
│ 1 KB │ 3 KB │
└──────────┴───────────┘
Slack 對一般使用者來說可能只是沒有被利用的空間,但對 Digital Forensics 來說就不一定。
因為這些空間裡有可能還留著先前資料的片段。
也就是 現在這個檔案沒有使用,不代表裡面的 Byte 一定全部是空的。
另外兩個之後會很常看到的名詞是 Allocated Space 和 Unallocated Space。
Allocated Space 是目前已經被 File System 分配使用的空間。
Unallocated Space 則是目前沒有分配給有效檔案,可以再次被使用的空間。
但要注意 Unallocated 不代表 Empty。
例如一個檔案被刪除後,File System 可能把原本使用的空間標記成可以重新使用,但底層資料不一定馬上全部消失。
這也是為什麼 Deleted File 有時候還有機會被 Recovery。
可以簡單整理:
| 名稱 | 意思 |
|---|---|
| Allocated Space | 已被 File System 分配使用 |
| File Slack | 已分配給檔案,但檔案沒有使用完的區域 |
| Unallocated Space | 目前沒有分配給有效檔案,可重新使用 |
平常按下 Delete 時,File System 很多時候並不是立刻把原本的資料全部改成 00。
比較像是這個檔案不再有效,原本使用的空間可以重新利用。
如果那塊空間還沒有被其他新資料覆寫,原本的內容就有可能還存在。
所以 Delete ≠ Data immediately disappears
這也是為什麼做 Digital Forensics 時,不只會看目前存在的檔案,也會關注 Unallocated Space 和 Slack Space。
不過這個概念主要比較容易套用在 HDD;SSD 還會受到 TRIM 和 Garbage Collection 影響,所以 Deleted File 是否還能恢復,會更複雜。
今天最重要的其實就是:
Sector
↓
多個 Sector 組成 Cluster
↓
File System 用 Cluster 分配檔案
↓
檔案沒用完最後一個 Cluster
↓
File Slack
而標題的答案就是:
5 KB 的檔案,在 4 KB Cluster 的環境下,需要兩個 Cluster,因此會配置 8 KB,而剩下沒有被檔案使用的 3 KB,就是 Slack Space。