これに似たファイルシステムオブジェクトを作成する方法はありますか?
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
)。
誰かがFuseソリューションに興味がある場合は、今日Fuseドライバーを作成しました(デバイスマッパーと上記のnbdソリューションは通常のファイルではなくブロックデバイスを作成します-結果の出力をビデオ編集で直接使用したい場合は壊れますブロックデバイスから直接読み取る準備が整っていないソフトウェアまたはその他のツール)
あなたは基本的に質問の最初の文で答えました:はい、それはできます。ただし、カスタムファイルシステムドライバーを作成する必要があります。それがファイルシステムオブジェクトであると想定されている場合は、カーネルによって何らかのレベルで処理される必要があります( Fuse を含む)。ドライバーは、標準のファイルシステムシステムコールAPI(stat()
、open()
など、シークを含む)のバックエンドを提供する必要があります。ユーザースペースで完全にそれを行うことはできません(少なくともモノリシックカーネルではありませんが、マイクロカーネルでも、通常のユーザースペースプロセスとして実行されている場合でも、ファイルシステムドライバーを提供する必要があります)。