Apakah ada cara membuat objek sistem berkas mirip dengan ini:
mknod files p
cat file1 file2 ... fileN > files
tetapi sedemikian rupa sehingga dapat dicari, seolah-olah itu adalah file biasa?
sumber
Apakah ada cara membuat objek sistem berkas mirip dengan ini:
mknod files p
cat file1 file2 ... fileN > files
tetapi sedemikian rupa sehingga dapat dicari, seolah-olah itu adalah file biasa?
Pada sistem operasi berbasis Linux, itu bisa dilakukan dengan perangkat blok jaringan atau perangkat perangkat mapper. File yang Anda peroleh adalah perangkat blok.
Dengan 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
(Rangkaiannya adalah /dev/nbd0
).
Dengan mapper perangkat (ukuran file harus lebih dari 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
(Rangkaiannya adalah /dev/mapper/mybundle
).
menulis driver sekering hari ini, jika seseorang tertarik pada solusi sekering (perangkat mapper serta solusi nbd di atas akan membuat perangkat blok bukan file biasa - yang akan pecah, jika Anda ingin menggunakan output yang dihasilkan langsung dengan pengeditan video perangkat lunak atau alat lain yang tidak siap untuk membaca dari perangkat blok secara langsung)
Anda pada dasarnya menjawabnya dalam kalimat pertama pertanyaan: ya, itu bisa dilakukan. Namun, Anda harus menulis driver sistem file khusus. Jika seharusnya menjadi objek sistem file, itu harus ditangani oleh kernel pada tingkat tertentu (termasuk FUSE ). Pengemudi harus memberikan backend untuk syscalls API sistem file standar (
stat()
,open()
dll., Termasuk mencari). Anda tidak dapat melakukannya sepenuhnya di ruang pengguna (setidaknya tidak dengan kernel monolitik - tetapi bahkan dengan microkernel Anda masih perlu menyediakan driver sistem file, meskipun berjalan sebagai proses userspace biasa).sumber