
因此,由於各種原因,我最終得到了一個 45TB 的單一 Linux 邏輯卷,沒有分割表,格式化為包含 28TB 資料的 NTFS(檔案系統本身為 28TB)。
此檔案系統是在 Linux 中建立的,並且可由 Linux 安裝。當我嘗試將其安裝在同一台機器上基於 KVM 的 Windows VM 中時,問題就出現了。 Windows 看到的不是 28TB 檔案系統,而是包含一些隨機大小的無用分割區的 1.8TB 磁碟。
我認為這是因為 Windows 試圖將真實 NTFS 檔案系統資料的前幾個字節讀取為分割區表。
我可以看到這個問題的一些可能的解決方案,但無法弄清楚如何實際執行其中任何一個:
- Windows 是否將未分割的磁碟(單一磁碟區)讀取為檔案系統?
- 以某種方式在此邏輯卷上產生分區表而不破壞檔案系統本身保存的資料?
- 以某種方式偽造分區表,指向 LVM 磁碟區並將其匯出至 KVM guest 虛擬機器(在 libvirt 中執行)
parted 報告的目前「分區表」是:
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/chandos--dh-data: 48.0TB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 48.0TB 48.0TB ntfs
答案1
我遇到了類似的問題,我不小心對分割區而不是磁碟進行了映像。這些圖像正在透過網路複製,我沒有時間再次複製它們。然而,它們比 28TB 小得多,而且我使用的過程需要製作映像的副本。
初始影像是透過以下方式拍攝的:
dd if=/dev/sda1 of=/image.bin
為了添加分區表,無需透過網路複製所有內容,我僅將 MBR 複製到檔案中。
dd if=/dev/sda of=/mbr.bin bs=512 count=1
然後,我在 mbr 前面新增並複製資料。
fdisk -l /mbr.bin
# take the start position * units in bytes (ex start at 256 * units of 512 bytes = 131072 bytes)
truncate -s (disk size in bytes + number of above) /newfile.bin
dd if=/mbr.bin of=/newfile.bin
dd if=/image.bin of=/newfile.bin oflag=seek_bytes seek=(number from above)
完成後,/newfile.bin
就有了完整的分區表+資料。
答案2
我實際上還沒有找到一個好的解決方案。幸運的是,還有另一個方便的驅動器架,有大約 30TB 的空間,我可以用它來遷移到新分區的捲。這將需要很長時間,但應該會起作用。
有人建議可以用Linux 裝置映射器(建立一個虛擬設備,將文件中的假 GPT 分區表與 LVM 邏輯卷一起映射),但我會將其留給更聰明的人來解決。
編輯:實際上最終寫了一個解決方案這裡
答案3
2TB以上的磁碟需要使用GPT分割區表。對於 <2TB 的磁碟 MBR 就足夠了。