Есть ли способ создания объекта файловой системы сродни этому:
mknod files p
cat file1 file2 ... fileN > files
но такой, чтобы его можно было искать, как если бы это был обычный файл?
источник
Есть ли способ создания объекта файловой системы сродни этому:
mknod files p
cat file1 file2 ... fileN > files
но такой, чтобы его можно было искать, как если бы это был обычный файл?
В операционных системах на основе Linux это можно сделать с помощью сетевых блочных устройств или устройств отображения устройств. Полученный вами файл является блочным устройством.
С nbd
:
ln -s /path/to/first-file file.0
...
ln -s /path/to/last-file file.19
nbd-server -C /dev/null -m 127.0.0.1:12345 file
sudo nbd-client localhost 12345 /dev/nbd0
(конкатенация есть /dev/nbd0
).
С устройством отображения (размеры файлов должны быть кратны 512):
sudo losetup /dev/loop0 file1
sudo losetup /dev/loop1 file2
s0=$(sudo blockdev --getsize /dev/loop0)
s1=$(sudo blockdev --getsize /dev/loop1)
printf '%s\n' "0 $s0 linear /dev/loop0 0" "$s0 $s1 linear /dev/loop1 0" |
sudo dmsetup create mybundle
(конкатенация есть /dev/mapper/mybundle
).
написал драйвер плавкого предохранителя сегодня, если кто-то заинтересован в решении плавкого предохранителя (устройство отображения, а также вышеупомянутое решение nbd создадут блочные устройства, а не обычные файлы - что сломается, если вы захотите использовать полученный вывод непосредственно с редактированием видео) программное обеспечение или другие инструменты, которые не готовы к чтению непосредственно с блочного устройства)
Вы в основном ответили на это в первом предложении вопроса: да, это можно сделать. Однако вам придется написать собственный драйвер файловой системы. Если предполагается, что это объект файловой системы, он должен обрабатываться ядром на некотором уровне (включая FUSE ). Драйвер должен был бы обеспечить серверную часть для стандартного API системных вызовов файловой системы (
stat()
иopen()
т. Д., Включая поиск). Вы не можете сделать это полностью в пользовательском пространстве (по крайней мере, не с монолитным ядром - но даже с микроядром вам все равно потребуется предоставить драйвер файловой системы, хотя и работающий как обычный процесс в пользовательском пространстве).источник