National Central University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try an AI Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

3

Local AI

--

Uedu Code

--

中央大學 AQI 80 24°C PM2.5 21
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 18

檔案系統

檔案、目錄、區塊與刪除的檔案為什麼救得回來
Interaction 25 minute(s)

Learning Objectives

  • 說明檔案、目錄、路徑與中繼資料,以及檔案系統把磁碟區塊組織成檔案的角色
  • 比較連續配置、鏈結配置與索引配置(i-node)在讀取、加大檔案與空間利用上的取捨
  • 解釋外部碎片、內部碎片與磁碟重組
  • 說明刪除檔案時實際發生的事,判斷檔案在什麼情況下還救得回來
  • 認識常見的檔案系統(FAT32、exFAT、NTFS、ext4、APFS)與它們的使用場合

這一課要回答的問題

你可能遇過這些情況:

  • 隨身碟還有 20 GB 空間,複製一個 5 GB 的影片卻出現「檔案太大」
  • 不小心刪掉報告,朋友說「先不要再存任何東西,還救得回來」
  • 一個只有幾個字的文字檔,內容寫「大小 12 位元組」,卻「佔用磁碟空間 4 KB」
  • 舊電腦跑很慢,有人建議你做「磁碟重組」

這些都和檔案系統(file system)有關。硬碟、SSD、隨身碟對作業系統來說,只是一大排編了號、大小固定的區塊(block)。 檔案系統負責把這些區塊組織成你看得到的檔案與資料夾,並且記住每個檔案放在哪些區塊。

這一課要回答:檔案系統怎麼記錄一個檔案放在哪裡?刪除檔案時,資料真的不見了嗎?

檔案、目錄與中繼資料

檔案(file)是一筆有名字的資料:一份報告、一張照片、一個程式。 目錄(directory,也就是資料夾)用來分類檔案,目錄裡還可以有目錄,整個結構像一棵倒過來的樹,最上層叫根目錄。

路徑(path)是從某個目錄走到檔案的路線:

寫法 例子 說明
絕對路徑 /home/mei/文件/報告.docx(Linux、macOS)、C:\Users\Mei\Documents\報告.docx(Windows) 從根目錄(或磁碟機代號)開始寫,在哪裡用都指向同一個檔案
相對路徑 文件/報告.docx、../照片/貓.png 從「目前所在的目錄」開始算;.. 表示上一層

除了內容,檔案系統還替每個檔案記錄中繼資料(metadata):大小、建立與修改時間、擁有者、權限,以及最重要的:資料放在哪些區塊。

區塊是配置空間的最小單位。假設一個區塊是 4 KB(常見的大小,示意),一個 12 位元組的文字檔也要佔用一整個區塊, 剩下沒用到的空間別的檔案不能用,這叫內部碎片(internal fragmentation)。這就是「大小」和「佔用磁碟空間」不一樣的原因。

三種配置方式:檔案放在哪些區塊

檔案可能需要很多個區塊。檔案系統要決定用哪些區塊,還要記住它們。教科書常見三種做法:

配置方式 怎麼記錄 讀第 k 塊 加大檔案 缺點
連續配置(contiguous) 目錄只記「起點+長度」 直接算出位置:起點+(k−1) 後面被占用時要整個搬家 刪除後留下零碎的空洞,大檔案放不進去(外部碎片)
鏈結配置(linked) 目錄記第一塊;每一塊裡記著下一塊在哪 要從第一塊一路走過去 任何空區塊都能接上去 讀後面的區塊很慢;一個指標壞掉,後面全斷
索引配置(indexed) 用一份清單列出全部區塊(Unix 類系統的 i-node 就是這種概念) 查清單一次就知道位置 在清單後面加一項 每個檔案都要多一份清單的空間

真實的檔案系統常混合使用:例如 FAT 系列用一張「檔案配置表」記錄每個區塊的下一塊(鏈結的變形); ext4 等檔案系統用 i-node 記錄區塊,並盡量把同一個檔案放在連續的區塊(一段一段記錄),兼顧讀取速度。

互動練習:三種配置方式與外部碎片

磁碟有 24 個區塊,已經放了 A~E 五個檔案。點一個區塊就會選取它所屬的檔案。依任務操作:先用連續配置刪除夾在中間的檔案、把「大小」調到 6 再建立檔案,看可用空間明明夠卻失敗;再切換到鏈結、索引配置建立同樣的檔案,用「讀第幾塊」滑桿讀它的最後一塊,比較讀了幾個區塊;最後做一次磁碟重組、切回連續配置,加大一個檔案。注意右邊的表格怎麼記錄每個檔案的位置,以及下方「最大連續空間」的數字。

外部碎片與磁碟重組

剛剛看到的現象:檔案不斷建立、刪除、加大,可用空間被切成很多小段。

  • 外部碎片:空間總量夠,但沒有一段夠大的連續空間。連續配置最怕這個。
  • 檔案被切成好幾段:鏈結與索引配置雖然放得下,但同一個檔案的區塊散在各處。 傳統硬碟(HDD)讀取時要移動磁頭、等碟片轉到位置,讀分散的區塊比讀連續的區塊慢很多(第 13 課)。

磁碟重組(defragmentation)就是把每個檔案搬成連續的、把可用空間集中在一起。代價是要搬動大量資料、花時間。

固態硬碟(SSD)沒有磁頭要移動,讀分散的區塊不會像傳統硬碟那樣慢,一般不需要做重組; 作業系統對 SSD 做的「最佳化」主要是通知它哪些區塊已經不用了(TRIM),方便它在背景清理。

想一想:區塊與配置方式

1.

區塊大小是 4 KB。一個 10 KB 的檔案實際佔用多少磁碟空間?

2.

影片播放器常常要「跳到第 45 分鐘」,也就是直接讀檔案中間的某一塊。哪一種配置方式最不適合?

3.

連續配置下,一個檔案後面的區塊已經被別的檔案占用,現在要把它加大,會發生什麼事?

第 1 次作答

刪除檔案時發生了什麼

在 Unix 類系統(Linux、macOS)裡,檔案的中繼資料放在 i-node,每個 i-node 有一個編號; 目錄其實也是一個檔案,內容是一張「名稱 → i-node 編號」的對照表。打開 /照片/貓.png 的過程是: 讀根目錄 → 找到「照片」的 i-node → 讀照片目錄 → 找到「貓.png」的 i-node → 從 i-node 得知資料在哪些區塊。

那麼刪除檔案時呢?為了速度,檔案系統通常不會把資料一格一格清掉,只做這幾件事:

  1. 從目錄裡拿掉這個名稱
  2. 把 i-node 標成「未使用」
  3. 在可用空間點陣圖(bitmap)裡,把它的區塊標成「可用」(0)

資料本身還留在區塊裡,直到有新檔案剛好用到那些區塊、把它覆寫掉。所以:

情況 能不能救回
剛刪除、還沒寫入新資料 救援工具常常能找回來
刪除後又存了很多新檔案 部分或全部區塊被覆寫,救回來的檔案可能是壞的
用「徹底抹除」工具先把區塊寫成 0 再刪除 救不回來
SSD 已經對那些區塊執行 TRIM 通常救不回來

誤刪檔案時的第一件事:停止在那顆磁碟上寫入任何東西。反過來說,要把舊電腦或隨身碟送人之前, 只按「刪除」並不安全,應該用作業系統的重設或清除功能。

平常按刪除,多半先進到資源回收筒(Windows)或垃圾桶(macOS),其實只是把檔案搬到一個特別的資料夾,還沒有真的刪除;清空之後才是上面說的情況。

互動練習:目錄、i-node 與救回已刪除的檔案

畫面上有磁碟的 24 個區塊與可用空間點陣圖,以及目錄樹、目前資料夾的內容(名稱 → i-node)與 i-node 表。點目錄樹的資料夾決定新檔案放在哪裡,點檔案選取它。依任務操作:在「照片」建立檔案、刪除「報告.docx」後用「掃描已刪除的檔案」救回;再刪除「旅行.jpg」、先建立一個新檔案再掃描,看救回的結果有什麼不同;最後試試「徹底抹除」。斜線格子表示「標成可用,但舊資料還在」。

常見的檔案系統

格式化(format)一顆磁碟,就是在上面建立一個新的、空的檔案系統。不同作業系統與裝置用的檔案系統不同:

檔案系統 常見用途 特點
FAT32 隨身碟、記憶卡、相機 幾乎所有裝置都能讀寫;單一檔案最大約 4 GB(記錄檔案大小的欄位只有 32 位元)
exFAT 大容量隨身碟、記憶卡 一樣容易跨平台使用,沒有 4 GB 的單檔限制
NTFS Windows 的系統磁碟 支援權限、日誌、壓縮與加密等功能
ext4 許多 Linux 發行版的預設 使用 i-node、支援日誌
APFS Apple 的電腦與行動裝置 為 SSD 設計,支援快照與加密

開頭那個「隨身碟有空間卻放不下 5 GB 影片」的情況,原因就是隨身碟格式化成 FAT32;改成 exFAT 就能放(格式化會清除隨身碟上的資料,先備份)。

日誌(journaling)是什麼?寫入檔案要改好幾個地方(資料區塊、i-node、點陣圖、目錄),如果寫到一半停電,檔案系統可能前後不一致。 有日誌的檔案系統會先把「我要做哪些修改」記下來,再真正去改;重開機時照著日誌補完或取消,就不必花很長時間檢查整顆磁碟。

想一想:刪除、救回與檔案系統

1.

清空資源回收筒之後,檔案的資料區塊通常變成什麼狀態?

2.

你誤刪了隨身碟裡的作業,下面哪一個做法最可能讓它救不回來?

3.

一支 64 GB 的隨身碟還有 30 GB 可用,複製一個 6 GB 的影片時出現「檔案太大」。最可能的原因是?

第 1 次作答

重點整理

  • 檔案系統把磁碟上編了號的區塊組織成檔案與目錄,並記錄每個檔案的中繼資料:大小、時間、權限,以及資料在哪些區塊。
  • 區塊是配置的最小單位;最後一塊用不滿的空間是內部碎片,所以「佔用磁碟空間」常比「大小」大。
  • 連續配置讀取最快、但怕外部碎片與加大;鏈結配置不怕碎片、但讀中間的區塊要一路走過去;索引配置(i-node)用一份清單記錄全部區塊,兼顧兩者。
  • 磁碟重組把檔案搬成連續的,對傳統硬碟有幫助;SSD 一般不需要。
  • 目錄是「名稱 → i-node」的對照表。刪除檔案只是拿掉名稱、把 i-node 與區塊標成可用;資料被覆寫之前常常救得回來,徹底抹除或 SSD 的 TRIM 之後通常救不回來。
  • 常見檔案系統:FAT32(相容性最好,單檔約 4 GB 上限)、exFAT、NTFS、ext4、APFS;有日誌的檔案系統在停電後比較容易恢復一致。

想親手用指令操作檔案與目錄,可以接著上 Linux 軌。

下一課:電腦裡的檔案大多是別人寫好的軟體。安裝程式做了什麼?為什麼要一直更新?授權條款又在說什麼?

這一課完成了!
Next lesson:軟體安裝、更新與授權
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。