Итак, по разным причинам я остановился на одном логическом томе Linux объемом 45 ТБ без таблицы разделов, отформатированном как NTFS и содержащем 28 ТБ данных (сама файловая система имеет размер 28 ТБ).
Файловая система была создана в Linux и монтируется Linux. Проблема возникает, когда я пытаюсь смонтировать ее в виртуальной машине Windows на базе KVM на том же компьютере. Windows не видит файловую систему размером 28 ТБ, а видит диск размером 1,8 ТБ, содержащий несколько бесполезных разделов случайного размера.

Я предполагаю, что это происходит потому, что 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
решение1
У меня была похожая проблема, когда я случайно создал образ раздела, а не диска. Образы копировались по сети, и у меня не было времени скопировать их снова. Однако они были намного меньше 28 ТБ, и я использовал процесс, который требовал создания копии образа.
Первоначальное изображение было получено с помощью:
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
На самом деле я не нашел хорошего решения этой проблемы. К счастью, есть еще одна полка для дисков с ~30 ТБ пространства, которую я могу использовать для миграции на новый том с разделами. Это займет много времени, но должно сработать.
Было высказано предположение, что с помощью этого можно сделать что-то умное.Linux Device Mapper(создание виртуального устройства, которое сопоставляет фальшивую таблицу разделов GPT из файла с логическим томом LVM), но я оставлю это для более умного человека.
Редактировать:На самом деле закончилось тем, что я написал решение этой проблемыздесь
решение3
Диску объемом более 2 ТБ необходимо использовать таблицу разделов GPT. Для диска объемом <2 ТБ достаточно MBR.


