將資料從同一磁碟機上的分區移至分區

將資料從同一磁碟機上的分區移至分區

將資料從一個驅動器移動到另一個驅動器的速度很慢。將磁碟機上的資料複製到自身的速度很慢。將資料從一個驅動器移動到它自己的速度很快。

如果我在同一驅動器但不同分區上移動數據,速度不是很快嗎?我假設移動將是胖表更改,而不是磁碟上資料的實際移動(複製/刪除)。我如何確定會發生這種情況?

僅供參考,我在 mac osx 上,正在處理同一個外部設備上的兩個 fat32 分區。

答案1

如果我在同一驅動器但不同分區上移動數據,速度不是很快嗎?我以為此舉將是一個胖桌子的改變......

不,因為 FAT 是A檔案系統,每個分區包含文件系統。因此,如果將資料移動到不同的檔案系統,作業系統不能簡單地重新排列胖表中的內容——有兩個需要考慮,並且它們不會任意相互映射。目的地必須分配一些自己的空間,而源(在移動中)釋放一些空間。

如果這只是重新排列表格的問題,您會遇到不一致的情況,例如:

  • 我有一個 100 GB 的分割區和一個 2 GB 的分割區。如果將一個檔案移到另一個檔案只涉及重新排列表格,那麼我應該能夠將 20 GB 的檔案從前者移至後者。

  • 我將文件移動到 USB 記憶棒上的分區,然後移動該記憶棒:如果移動文件只是涉及重新排列表格,那麼當我將其粘貼到另一台計算機上時,文件會在哪裡?

我意識到第二種情況不是您所指的上下文的一部分,但它們之所以相同是因為否則您將需要在設備上儲存另一個抽象層。它不可能是作業系統簡單發明和操縱的東西,因為您可能會行動裝置和/或在不同的作業系統下使用它:現在資訊在哪裡?

裝置可能包含指示其分割區的大小、類型和偏移的元資料。 幸運的是,它們不包含有關內容這些分區。我說幸運是因為這必然會產生比它解決的問題更多的問題。

檔案系統旨在成為頂級、離散的實體,而不是更大儲存系統的一部分(儘管它們可能在某些情況下就是這樣)。

然而,某些裝置(例如 SSD)可能會實現類似於您在硬體層級上暗示的最佳化功能。換句話說,如果您將某些內容從SSD 上的一個分區移動到另一個分區,它可能只會重新排列一些引用,只要該硬體將自身作為一個整體進行說明,無論它如何被分解為SSD 上的不同分區。這對於作業系統和其他一切來說是完全不透明的,但您可能會注意到這是一個非常快速的舉動。它要求設備運行某種固件,該固件提供虛擬的一組區塊位址到作業系統,然後將它們對應到實體本身,這是傳統磁碟機不做的:它們向作業系統提供實際的實體位址,以便作業系統可以盡可能地最佳利用它。因此,檔案系統實作(FAT 等)必須假設它們正在組織設備的實際物理區域,並且在檔案系統之上沒有任何層來嘗試進一步組織整個設備的內容(除了將其分成分區之外)。

相關內容