NFS и SMB поддерживают редкие файлы?

Этот вопрос ранее задали в переполнении стека, но хорошие люди там рекомендовали, чтобы я попробовал сообщество здесь вместо этого.

Я исследую на редких файлах относительно различных файловых систем и пытаюсь найти что-то конкретным, который указывает, что редкие файлы поддерживаются Сетевыми файловыми системами (NFS) или Блоком серверных сообщений (SMB).

Я понимаю, что SMB широко используется в Windows и что согласно этой записи, сервер SMB может поддерживать редкий файл, даже если базовая файловая система не делает. Однако, если я прав, файловая система, которая не поддерживает редкие файлы, просто заполнилась бы, 'дыры' с обнуляет, и это могло привести к проблеме производительности.

Относительно NFS я не смог узнать что-либо об использовании NFS, поддерживающего редкие файлы.

Следовательно, мои вопросы,

Редкие файлы поддерживаются в NFS и SMB?

17
задан 27 October 2015 в 03:23
2 ответа

NFS: частично поддерживает разреженные файлы. По сути, он поддерживает создание разреженного файла, но при чтении файл расширяется за счет нулей. Это означает, что, хотя вы можете создать разреженный файл через NFS, при обратном чтении того же самого файла передаваемые сетевые данные будут включать любые нули, обнаруженные в исходном файле. Простая проверка показывает это поведение:

cd /mnt/nfs
truncate test.img -s 1G
ls -lh test.img

-rw-r - r--. 1 root root 1.0G 26 октября 11:29 test.img

du -hs test.img

0 test.img

Как видите, размер файла test.img на диске равен 0 байтам. Однако при обратном чтении с использованием dd if = test.img of = / dev / null bs = 1M iflag = direct отображается

1024 + 0 записей в
1024 + 0 выходных записей
1073741824 байта (1,1 ГБ) скопировано, 10,2269 с, 105 МБ / с

Понятно, что при передаче разреженного файла он расширяется, чтобы включить все нули.

NFSv4.2 будет расширяться за счет включения специальной обработки для сетевой передачи разреженного файла. Другими словами, с NFSv4.2 вышеуказанный dd будет завершен почти мгновенно.

SMB: он имеет то же поведение, что и NFS , по крайней мере, в моих тестовых средах с использованием Samba v3. Сервер 6.x с CIFS v1 и клиент Linux с использованием mount.cifs. Может, под виндой иначе ...

11
ответ дан 2 December 2019 в 20:31

NFS

Да, NFS 4.2 полностью поддерживает разреженные файлы (см. этот канонический документ и эту презентацию ).

До NFS 4.2 модель клиент / сервер NFS поддерживала разреженные файлы в том смысле, что API поддерживал все операции с файлами POSIX. Это означало, что запись разреженных файлов на сервере, который поддерживал разреженные файлы в резервной файловой системе, приводила к созданию разреженного файла (вместо того, чтобы хранить много нулей). Но чтение файла приведет к передаче большого количества нулей для разреженного элемента. IE ответ - «частично».

NFS 4.2 добавляет возможность для клиента «видеть» дыры в файлах, и, следовательно, серверу не нужно передавать все эти нули. Из идентификатора:

1.4.3.  Sparse Files

Sparse files are ones which have unallocated or uninitialized data
blocks as holes in the file.  Such holes are typically transferred as
0s during I/O. READ_PLUS (see Section 15.10) allows a server to send
back to the client metadata describing the hole and DEALLOCATE (see
Section 15.4) allows the client to punch holes into a file.  In
addition, SEEK (see Section 15.11) is provided to scan for the next
hole or data from a given location.

Несмотря на то, что спецификация поддерживает разреженные файлы, ленивый разработчик мог бы избежать реализации поддержки разреженных файлов на клиенте или сервере.

SMB

Я знаю меньше о SMB,но я считаю, что он также поддерживает разреженные файлы, если установлен соответствующий бит возможности FS. См. здесь для получения дополнительной информации.

9
ответ дан 2 December 2019 в 20:31

Теги

Похожие вопросы