當前位置: 華文問答 > 數碼

被刪掉的電腦垃圾哪裏去了?

2019-11-25數碼

這是一個關乎電腦數據儲存模式和檔案系統的問題,要了解這一點首先要了解電腦是如何儲存數據的.

首先目前的儲存器材大多仍然以SSD和HDD為主,也就是所謂的固態硬碟和機械硬碟

圖片來源於百度

前者上面那個一片一片的是Nand Flash芯片,而後者以磁盤作為其儲存介質,磁盤的儲存結構大致如下

圖片來自https://blog.csdn.net/u013125075/article/details/86576640

不管是Nand Flash還是磁盤,對於電腦讀寫來說,其數據都是以二進制數據的形式進行編碼的,也就是你們之前看到的一個一個填滿0和1的小格子,這也就是說,不管你有沒有使用儲存介質來儲存數據,它們最初都是由數據的,以Nand Flash為例,幾款常用的Nand Flash初始狀態時其網格內填寫的都是1,而非0,這與他數據的寫方式有關,如果需要對Nand Flash寫入數據,需要將它的原始數據先全部寫為1(加電),然後再對是0的單元格進行放電變為0

Nand Flash寫之前

因此,當你使用WinHex工具開啟你的U槽或者是SSD後,你可能會看到一連串的0xff(對應著二進制的全1),當然,上面的編碼方式並不是絕對的,也有很多Flash芯片其初始編碼為0的.但這些都沒多大關系,儲存介質的作用就是能夠儲存數據的狀態就行了.

你可能已經註意到了,8個小格子每個格子代表了一個bit,8個bit組成了一個字節,1024字節組成1kb,1024kb為1M,1024M為1GB

一款128GB的SSD或者是HDD的bit如此之多,以至於我們要給每個bit都編碼一個地址成本上來說是劃不來的,因此我們采用的分而治之的思路,在早期HDD較為流行的時候,以HDD的物理性質對齊進行進一步的劃分

1.首先,磁盤有數個盤片,每個盤片有2個面,每個面有一個磁頭

2.在每一個盤片中,以扇形對他們進行分割,每個扇形區域又叫磁區

3.不同盤片相同半徑構成的圓柱面叫柱面

因此,如果要計算你的磁盤容量,應該是

磁盤容量(字節)=磁頭數*磁軌數*磁區數*每磁區字節數

而對磁盤的最小操作單元大多是以磁區為單位進行操作的,這也就是說, 假如你想修改某一個bit,你需要將這個bit所在的整個磁區重新讀寫一遍.

這個編碼方式的傳統一直流傳至今,乃至於現在SSD已經大規模普及,已經沒有磁頭.磁軌的概念了,但是操作構成SSD的Nand Flash芯片時仍然大多是以磁區(Sector)或塊(block)為最小寫單位,以Page為最小讀單位,當然這個單位到了作業系統上會進一步劃分,因此你如果只是修改了一個字節,很可能到實體層面將會大動幹戈將一片區域都重寫一遍.

你可能會問,這個和我刪檔有啥關系,別急,之前說了那麽多我只是想先闡述一個道理,對SSD,HDD的儲存介質的讀寫操作成本可能是很大的,如果數據規劃不當,對儲存介質的使用壽命和使用體驗都會造成很大的影響

說到檔,那就和電腦的檔案系統相關了,顧名思義, 檔案系統就是將儲存介質中的數據按照既定的規律進行規劃管理,這樣在使用者的層面上看來,電腦的儲存形式就不是一個一個bit的方式而能夠以檔的形式進行管理.

上面這個概念很像國家,省份,市,(區)縣,村,街道,幾號某某某的區分方式,一個區的管理大多以鄉鎮而不會到某個村,這種分而治之的思想在電腦中仍然適用,

為了解電腦檔案系統,我們需要先熟悉幾個概念,其中我們以經典的FAT32檔案系統為例

1.MBR(Main Boot Record)區

MBR也叫作主開機紀錄,盡管現在有很多其它的引導方式,但MBR區仍然是目前大多數電腦的主要引導方式,它位於位於硬碟的0磁軌0柱面1磁區,或者說是第一磁區,它主要是一段引導程式碼和一個分區表,用於描述磁盤的分區資訊.

因此,如果你的MBR區炸了,可能會導致你整個檔案系統崩潰

為此,有很多的勒索病毒都樂忠於將MBR區的數據進行加密或遷移,並且使用惡意程式碼替換到引導程式碼中,例如,下面這個回答中的惡意程式就有很多的MBR勒索病毒

中了這種病毒,重裝系統可能會導致你檔數據遺失,你可能需要重新分區,並使得檔恢復異常困難,不用擔心,大多數編寫這種病毒的都是彩筆,你可以在前幾個磁區中找到被偷走的MBR區或者使用其備份來恢復. 如果你不知道如何處理且數據重要,一定要交給專業人士(比如你的做作業系統或底層開發的碼農朋友)處理不要自己折騰.

2.DBR區

分區引導磁區也稱DBR(DOS BOOT RECORD),DBR是由硬碟的MBR裝載的程式段。DBR裝入記憶體後,即開始執行該引導程式段,其主要功能是完成作業系統的自舉並將控制權交給作業系統。每個分區都有引導磁區,但只有被設為活動分區才會被MBR裝的DBR入記憶體執行(這段摘自百度百科),簡單來說,它用來描述這個比如你的C磁碟機D磁碟機,E磁碟機...使用在磁盤中起始磁區,結束磁區和使用的檔案系統結構,包括一些根目錄資訊,分配單元大小之類的參數

3.FAT區

當然,本文只是以FAT32檔案系統為例,所以這裏是FAT區,不同的檔案系統有不同的編碼方式,到這一步,我們的電腦磁盤才真正有了檔的概念,為此,我們先對這幾個區的做一個小結

硬碟數據結構(https://blog.csdn.net/li_wen01/article/details/79929730)

FAT區包括一個檔分配表和一個目錄表,為了簡化篇幅,我們重點關註下目錄表,因為目錄項中包含著描述檔資訊的結構

FAT目錄表

從結構中的首簇號(多個磁區組成一個簇,有時一個磁區表示一個簇是等價概念)我們可以知道,這個結構記錄著這個檔的數據位於磁盤中的哪個位置,

也就是說,在磁盤中它類似於這種索引關系

因此,我們可以這麽說,每一個目錄項代表一個檔或者資料夾(沒錯,資料夾和檔實際上描述的結構都一樣,只不過資料夾索引過去後又有一個目錄項),這裏尤其註意下目錄項三,你可以看到,這個檔在磁盤儲存中其儲存空間並不是連續的,實際上每一個檔儲存上是一個鏈式的結構,在早期的磁盤空間中,這種離散的儲存可能導致磁盤的IO負擔(讀取變慢)

最後,我們迎來了這個問題的最終答案,如果需要刪除一個檔/資料夾怎麽辦,其實,處理辦法比你想的還要簡單,比如我們要刪除目錄項2,我們只需要在目錄項2上打個tag,它就不會在你的檔瀏覽器中顯示了

你可以看到,刪除的檔,它的數據和目錄項與之的連結關系,仍然沒有斷開,這也就是為什麽我們刪除檔後(即使清空資源回收桶),仍然能夠使用工具將這個檔恢復的原因,因為本質上刪除檔並不是一個"抹去"的過程,而是一個"加上"的過程.沒有什麽玄乎的東西,至於為什麽這樣做,顯然如果回到磁盤中去抹數據

1.慢

2.抹除數據本質上仍然是一個重新寫的過程,不利於儲存介質的壽命.

當然,顯然你也已經註意到了

快速格式化也僅僅只是將引導區的數據結構重設了一下,實際上磁盤中儲存的數據仍然還在並可恢復,只有低階格式化才會將分區下的每一個磁區抹掉資訊.

因此,如果你是像愛攝影的陳老師一樣喜歡在電腦上放些小玩意,銷毀數據時請使用低階格式化或者一把火把硬碟給燒了:P