Linux
Windows 可以讀取未分區的 NTFS 卷嗎?(單個大分區)
因此,由於各種原因,我最終得到了一個 45TB 的單 Linux 邏輯卷,沒有分區表,格式化為包含 28TB 數據的 NTFS(文件系統本身為 28TB)。
該文件系統是在 Linux 中創建的,並且可以由 Linux 掛載。當我嘗試將它安裝在同一個盒子上的基於 KVM 的 Windows VM 中時,問題就出現了。Windows 看不到一個 28TB 的文件系統,而是一個 1.8TB 的磁碟,其中包含一些隨機大小的無用分區。
我認為這是因為 Windows 試圖將真實 NTFS 文件系統數據的前幾個字節作為分區表讀取。
我可以看到這個問題的一些可能的解決方案,但無法弄清楚如何實際執行其中任何一個:
- Windows 是否將未分區的磁碟(單個卷)作為文件系統讀取?
- 以某種方式在此邏輯卷上生成分區表,而不會破壞文件系統本身中保存的數據?
- 以某種方式偽造一個分區表,指向 LVM 卷並將其導出到 KVM 來賓(在 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
我實際上還沒有找到一個好的解決方案。幸運的是,還有一個方便的驅動器架,有大約 30TB 的空間,我可以用它來遷移到新分區的捲。這將需要很長時間,但它應該可以工作。
有人建議可以使用Linux Device Mapper完成一些聰明的事情(創建一個虛擬設備,從文件映射一個假 GPT 分區表,以及 LVM 邏輯卷),但我會把它留給更聰明的人來工作出去。
**編輯:**實際上最終在這裡寫了一個解決方案
我有一個類似的問題,我不小心鏡像了一個分區而不是磁碟。圖像正在通過網路複製,我沒有時間再次複製它們。然而,它們比 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
就有完整的分區表+數據。