Я создал разреженный файл с
truncate -s 4T image.img
на файловой системе ext4, которую я монтирую поверх NFS. Следующий тест показывает, что система имеет проблемы с распознаванием разреженных файлов: оба
cp --sparse=always /mnt/data_extension/a.img /tmp/a.img # where a.img is created the same way image.img is
rsync --sparse /mnt/data_extension/a.img /tmp/a.img
занимает много времени, и я никогда не позволяю ему закончить, поскольку занимает больше секунды для команды показывает, что разреженный файл не распознается как таковой, и копирование/перемещение отверстий потребляет ввод/вывод, который не должен быть так.
tar --sparse -c -v -f /tmp/a.tar /mnt/data_extension/a.img
возвращает сразу и производит деготь, который может быть нетронутым, если.img пуст, если я пишу что-то внутри (например, создаю фиктивную файловую систему btrfs с sudo mkfs.btrfs /mnt/data_extension/a.img
), он перестает работать, т. е. занимает вечность, как команды выше.
все хорошо работает на локальной целевой файловой системе ext4, i.e копирование и перемещение демонстрационного изображения a.img
происходит за 1 секунду или намного меньше.
когда я применяю вышеуказанные команды к фактическому изображению image.img
и watch du -h /local/image.img
размер 0 никогда не обновляется, но он следует после записи первого байта.
смонтировать информацию /mnt/data_extension
:
$ mount | grep /mnt/data_extension
192.168.178.76:/volume1/data_extension on /mnt/data_extension type nfs (rw,addr=192.168.178.76)
как я могу переместить/скопировать image.img
из NFS монтировать в локальную файловую систему без необходимости читать 4 ТБ?!
EDIT: указание sparse-version=1.0
делает tar
работа на клиенте, но не над NFS (и cifs
который я пробовал тем временем с тем же поведением). Это позволяет, по крайней мере, деготь разреженный файл на сервере и передавать результат со стоимостью одного ненужные действия untar на клиенте.