回答:
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-solutionは、通常のファイルではなくブロックデバイスを作成します。ブロックデバイスから直接読み取る準備ができていないソフトウェアまたはその他のツール)
あなたは基本的に質問の最初の文で答えました:はい、できます。ただし、カスタムファイルシステムドライバーを作成する必要があります。ファイルシステムオブジェクトであると想定される場合は、何らかのレベル(FUSEを含む)でカーネルによって処理される必要があります。ドライバは、(標準のファイルシステムのシステムコールAPIのためのバックエンドを提供しなければならないstat()
、open()
追求を含む、など)。完全にユーザー空間でそれを行うことはできません(少なくともモノリシックカーネルではできません-しかし、マイクロカーネルを使用しても、通常のユーザー空間プロセスとして実行されているにもかかわらず、ファイルシステムドライバーを提供する必要があります)。