Gibt es eine Möglichkeit, ein Dateisystemobjekt wie folgt zu erstellen:
mknod files p
cat file1 file2 ... fileN > files
aber so, dass es gesucht werden kann, als ob es eine reguläre Datei wäre?
quelle
Gibt es eine Möglichkeit, ein Dateisystemobjekt wie folgt zu erstellen:
mknod files p
cat file1 file2 ... fileN > files
aber so, dass es gesucht werden kann, als ob es eine reguläre Datei wäre?
Auf Linux-basierten Betriebssystemen kann dies mit Netzwerkblock- oder Gerätezuordnungsgeräten erfolgen. Die Datei, die Sie erhalten, ist ein Blockgerät.
Mit 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
(Die Verkettung ist /dev/nbd0
).
Mit Device Mapper (Dateigröße muss ein Vielfaches von 512 sein):
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
(Die Verkettung ist /dev/mapper/mybundle
).
habe heute einen Sicherungstreiber geschrieben, wenn sich jemand für die Sicherungslösung interessiert (der Geräte-Mapper sowie die obige nbd-Lösung erzeugen keine regulären Dateien für Blockgeräte - die kaputt gehen, wenn Sie die resultierende Ausgabe direkt für die Videobearbeitung verwenden wollen Software oder andere Tools, die nicht bereit sind, direkt von einem Blockgerät zu lesen)
Grundsätzlich haben Sie im ersten Satz der Frage geantwortet: Ja, das geht. Sie müssen jedoch einen benutzerdefinierten Dateisystemtreiber schreiben. Wenn es sich um ein Dateisystemobjekt handeln soll, muss es auf einer bestimmten Ebene (einschließlich FUSE ) vom Kernel verarbeitet werden . Der Fahrer müßte bieten Backend für das Standard - Dateisystem syscalls API (
stat()
,open()
usw., einschließlich der Suche nach). Sie können dies nicht vollständig im Benutzerbereich tun (zumindest nicht mit einem monolithischen Kernel - aber selbst mit einem Mikrokernel müssten Sie immer noch einen Dateisystemtreiber bereitstellen, obwohl dieser als regulärer Benutzerbereichsprozess ausgeführt wird).quelle