Этот вопрос ранее задавался при переполнении стека, но хорошие люди там рекомендовали вместо этого попробовать сообщество.
Я исследую разреженные файлы в отношении различных файловых систем и пытаюсь найти что-то конкретное, в котором говорится, что разреженные файлы поддерживаются сетевыми файловыми системами (NFS) или блоком сообщений сервера (SMB).
Я понимаю, что SMB широко используется в Windows и что согласно этой записи сервер SMB может поддерживать разреженный файл, даже если основная файловая система этого не делает. Однако, если я прав, файловая система, которая не поддерживает разреженные файлы, просто заполнит «дыры» нулями, и это может привести к проблемам с производительностью.
Что касается NFS, я не смог ничего узнать об использовании NFS, поддерживающей разреженные файлы.
Следовательно, мои вопросы,
Поддерживаются ли разреженные файлы в NFS и SMB?
источник
dd
читает блок за блоком, и независимо от того, поддерживает ли базовая файловая система разреженные файлы или нет, ОС превращает дырки в нули. Попробуйте на ext4, и вы увидите те же цифры.dd
команды над локальным разреженным файлом даст гораздо более быстрые результаты. Смотрите здесь пример :,root@hubble:~# truncate -s 1G test.img root@hubble:~# dd if=test.img of=/dev/null bs=1M iflag=direct 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 0.10478 s, 10.2 GB/s
Как вы можете видеть, чтение локального разреженного файла дает скорость ввода-вывода к северу от 10 ГБ / сdu -s
vsls -l
, но вы правы, что не помогает с передачей по сети; но в любом случае (какstrace
подтвердит)dd
считывает весь файл, включая «дыры» как нули, разница только в том, где возникают «нули» (на стороне сервера или клиента). Тем не менее , обратите внимание (как на мой ответ) , что NFS 4,2 делает полностью поддерживает разреженные файлы.NFS
Да, NFS 4.2 полностью поддерживает разреженные файлы (см. Этот канонический документ и эту презентацию ).
До NFS 4.2 модель клиент / сервер NFS поддерживала разреженные файлы в том смысле, что API поддерживал все файловые операции POSIX. Это означало, что запись разреженных файлов на сервер, который поддерживал разреженные файлы в резервной файловой системе, приводила к созданию разреженного файла (а не к хранению большого количества нулей). Но чтение файла приведет к передаче множества нулей для разреженного элемента. IE ответ «частично».
NFS 4.2 добавляет возможность для клиента «видеть» дыры в файлах, и поэтому серверу не нужно передавать все эти нули. Из удостоверения личности:
Несмотря на то, что спецификация поддерживает разреженные файлы, ленивый разработчик может избежать реализации поддержки разреженных файлов на клиенте или сервере.
SMB
Я меньше знаю о SMB, но считаю, что он также поддерживает разреженные файлы, если установлен соответствующий бит возможностей FS. Смотрите здесь для получения дополнительной информации.
источник