HTTP virtual filesystem
oleg@pobox.com
oleg@pobox.com
Mon, 24 Jul 2000 12:24:45 -0700 (PDT)
Hello!
I'd like to suggest an item for inclusion into the review of
operating systems: distributed virtual file/operating systems based on
HTTP. HTTP appears a very rich protocol, capable of expressing any
remote procedure call. It can support synchronous and asynchronous
modes as well as the batch mode (via multi-part requests/replies).
As an example,
http://pobox.com/~oleg/ftp/HTTP-VFS.html
implements a network file system on top of HTTP. You can really open()
a URL using the regular open(2) system call. You can read, write,
create and update a remote file as if it were a local
file. Furthermore, a file in this context is anything an HTTP server
knows how to apply GET/HEAD/PUT/DELETE operations to. Therefore, HTTP
can trivially implement a "Semantic File System" by Gifford et
al. That filesystem builds virtual directories where the name of a
directory corresponds to a query, and the content of the directory is
files that match the query (represented by symbolic links in the
original implementation).
The project above implements two HTTP servers: one of them works
similar to a NFS server. The other one makes an RFC822 message appear
as a "directory" full of "files" (separate mail headers and the
body). All implementation works entirely in user-space (on Solaris,
HP-UX, and Linux). The servers can run on any computer that has a Web
server and a Perl interpreter, including Winxx. The example of the
latter is provided.
See also
Speaking HTTP: A File-Uploader Tool,
USENIX ;login: -- vol. 25, No. 2 -- April 2000, pp. 6-14
Another project including HTTP as a glue protocol ("9P for the
rest of us") is Metcast, a system for distributing weather
information.
http://zowie.metnet.navy.mil/~spawar/JMV-TNG/
Metcast uses its own Request language, which is an expressive,
delegation-based domain-specific language.
http://pobox.com/~oleg/ftp/Scheme/Request-Language.html
Thank you,
Oleg