沒有分割區的磁碟如何「分割區」而不遺失資料?

沒有分割區的磁碟如何「分割區」而不遺失資料?

我有一個 1TB 便攜式硬碟用於備份。整個磁碟機 ( /dev/sdb) 已被格式化為ext4檔案系統。

我一直在閱讀有關btrfs備份的好處(校驗和、自我修復等)的信息,並且正在考慮將此磁碟ext4btrfs.

我很確定我仍然可以調整磁碟大小(e2fsck -f /dev/sdb && resize2fs /dev/sdb 500G && fdisk /dev/sdb或類似的大小)。但是,我不確定如何將分區“引入”到沒有分區的設備。

這可以做到嗎?

(請注意,檔案系統本身 - ext4btrfs等 - 幾乎是無關緊要的 - 問題純粹是關於對最初創建時沒有分區的設備進行分區 - 並且這樣做不會丟失現有的文件系統。)

答案1

分割區表(至少是 MBR 或 GPT 樣式)位於磁碟的開頭和/或結尾,因此如果您可以釋放所需的空間,則可以引入它們。

使用 TB 磁碟時,我將按以下方式進行。

  1. 將 ext4 檔案系統的大小調整為 499G(出於安全考量)。這可確保所有資料、檔案系統結構等都適合磁碟上前 499G 的區塊。理想情況下,您應該盡可能減少檔案系統,這將減少後續步驟中需要複製的資料量。
  2. dd使用或類似工具將區塊複製到磁碟的後半部。
  3. 對磁碟進行分割區,建立一個比檔案系統(500G)稍大的分割區。為此使用 GPT;您將覆蓋磁碟開頭和結尾的區塊,因此磁碟開頭的檔案系統副本現在已烘烤。
  4. dd再次使用或類似的方法將原始區塊從磁碟的後半部複製到新建立的分割區。您需要根據步驟 2 中所做的操作來計算偏移和大小,但目標很簡單 ( /dev/sdX1)。
  5. 再次調整檔案系統的大小,使其佔據所有分割區。

使用諸如ddrescue可以反向複製,你可以稍微簡化一下:

  1. 盡可能調整來源檔案系統的大小。
  2. 計算第一個分區的開始位置(無需實際建立分區表)。
  3. 移動組成來源檔案系統的區塊,以便它們從第一個分割區開始的位置開始。 (這是您需要從末尾開始複製的地方。)
  4. 對磁碟進行分割。
  5. 調整檔案系統的大小。

考慮到所涉及的複製量,將資料備份到其他地方並恢復會更容易!您可以透過儲存 ext4 檔案系統的開頭並恢復其餘資料來限制複製量,但這需要更仔細的簿記。

答案2

我成功地對 2 TB 硬碟進行了重新分割區,沒有遺失任何資料。我想從 GNU/Linux 機器和 Windows 機器執行備份,因此我將 EXT4 分割區縮小到 1 TB,並建立了一個新的 1 TB 分割區,並將其格式化為 NTFS 檔案系統。

我所需要做的就是使用 Ubuntu 中的 GUI Disks 應用程式。其他發行版應該有類似的 GUI 應用程式來管理分區。我想使用 BTRFS 而不是 NTFS 也會同樣有效。

當然,您也應該能夠從終端執行重新分割區。

答案3

我很困惑。

你說磁碟格式化為ext4,所以你確實有一個分區。也許 fdisk 沒有顯示它,因為磁碟的分割表是 gpt 並且您的 fdisk 不支援它。在這種情況下你可以使用parted

sudo parted -l /dev/sdb

除此之外,您還可以將 ext4 轉換為 btrfs正如這個 arch Linux 指南中所說

相關內容