9p.txt 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. v9fs: Plan 9 Resource Sharing for Linux
  2. =======================================
  3. ABOUT
  4. =====
  5. v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
  6. This software was originally developed by Ron Minnich <rminnich@sandia.gov>
  7. and Maya Gokhale. Additional development by Greg Watson
  8. <gwatson@lanl.gov> and most recently Eric Van Hensbergen
  9. <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
  10. <rsc@swtch.com>.
  11. The best detailed explanation of the Linux implementation and applications of
  12. the 9p client is available in the form of a USENIX paper:
  13. http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
  14. Other applications are described in the following papers:
  15. * XCPU & Clustering
  16. http://xcpu.org/papers/xcpu-talk.pdf
  17. * KVMFS: control file system for KVM
  18. http://xcpu.org/papers/kvmfs.pdf
  19. * CellFS: A New Programming Model for the Cell BE
  20. http://xcpu.org/papers/cellfs-talk.pdf
  21. * PROSE I/O: Using 9p to enable Application Partitions
  22. http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
  23. * VirtFS: A Virtualization Aware File System pass-through
  24. http://goo.gl/3WPDg
  25. USAGE
  26. =====
  27. For remote file server:
  28. mount -t 9p 10.10.1.2 /mnt/9
  29. For Plan 9 From User Space applications (http://swtch.com/plan9)
  30. mount -t 9p `namespace`/acme /mnt/9 -o trans=unix,uname=$USER
  31. For server running on QEMU host with virtio transport:
  32. mount -t 9p -o trans=virtio <mount_tag> /mnt/9
  33. where mount_tag is the tag associated by the server to each of the exported
  34. mount points. Each 9P export is seen by the client as a virtio device with an
  35. associated "mount_tag" property. Available mount tags can be
  36. seen by reading /sys/bus/virtio/drivers/9pnet_virtio/virtio<n>/mount_tag files.
  37. OPTIONS
  38. =======
  39. trans=name select an alternative transport. Valid options are
  40. currently:
  41. unix - specifying a named pipe mount point
  42. tcp - specifying a normal TCP/IP connection
  43. fd - used passed file descriptors for connection
  44. (see rfdno and wfdno)
  45. virtio - connect to the next virtio channel available
  46. (from QEMU with trans_virtio module)
  47. rdma - connect to a specified RDMA channel
  48. uname=name user name to attempt mount as on the remote server. The
  49. server may override or ignore this value. Certain user
  50. names may require authentication.
  51. aname=name aname specifies the file tree to access when the server is
  52. offering several exported file systems.
  53. cache=mode specifies a caching policy. By default, no caches are used.
  54. none = default no cache policy, metadata and data
  55. alike are synchronous.
  56. loose = no attempts are made at consistency,
  57. intended for exclusive, read-only mounts
  58. fscache = use FS-Cache for a persistent, read-only
  59. cache backend.
  60. mmap = minimal cache that is only used for read-write
  61. mmap. Northing else is cached, like cache=none
  62. debug=n specifies debug level. The debug level is a bitmask.
  63. 0x01 = display verbose error messages
  64. 0x02 = developer debug (DEBUG_CURRENT)
  65. 0x04 = display 9p trace
  66. 0x08 = display VFS trace
  67. 0x10 = display Marshalling debug
  68. 0x20 = display RPC debug
  69. 0x40 = display transport debug
  70. 0x80 = display allocation debug
  71. 0x100 = display protocol message debug
  72. 0x200 = display Fid debug
  73. 0x400 = display packet debug
  74. 0x800 = display fscache tracing debug
  75. rfdno=n the file descriptor for reading with trans=fd
  76. wfdno=n the file descriptor for writing with trans=fd
  77. msize=n the number of bytes to use for 9p packet payload
  78. port=n port to connect to on the remote server
  79. noextend force legacy mode (no 9p2000.u or 9p2000.L semantics)
  80. version=name Select 9P protocol version. Valid options are:
  81. 9p2000 - Legacy mode (same as noextend)
  82. 9p2000.u - Use 9P2000.u protocol
  83. 9p2000.L - Use 9P2000.L protocol
  84. dfltuid attempt to mount as a particular uid
  85. dfltgid attempt to mount with a particular gid
  86. afid security channel - used by Plan 9 authentication protocols
  87. nodevmap do not map special files - represent them as normal files.
  88. This can be used to share devices/named pipes/sockets between
  89. hosts. This functionality will be expanded in later versions.
  90. access there are four access modes.
  91. user = if a user tries to access a file on v9fs
  92. filesystem for the first time, v9fs sends an
  93. attach command (Tattach) for that user.
  94. This is the default mode.
  95. <uid> = allows only user with uid=<uid> to access
  96. the files on the mounted filesystem
  97. any = v9fs does single attach and performs all
  98. operations as one user
  99. client = ACL based access check on the 9p client
  100. side for access validation
  101. cachetag cache tag to use the specified persistent cache.
  102. cache tags for existing cache sessions can be listed at
  103. /sys/fs/9p/caches. (applies only to cache=fscache)
  104. RESOURCES
  105. =========
  106. Protocol specifications are maintained on github:
  107. http://ericvh.github.com/9p-rfc/
  108. 9p client and server implementations are listed on
  109. http://9p.cat-v.org/implementations
  110. A 9p2000.L server is being developed by LLNL and can be found
  111. at http://code.google.com/p/diod/
  112. There are user and developer mailing lists available through the v9fs project
  113. on sourceforge (http://sourceforge.net/projects/v9fs).
  114. News and other information is maintained on a Wiki.
  115. (http://sf.net/apps/mediawiki/v9fs/index.php).
  116. Bug reports are best issued via the mailing list.
  117. For more information on the Plan 9 Operating System check out
  118. http://plan9.bell-labs.com/plan9
  119. For information on Plan 9 from User Space (Plan 9 applications and libraries
  120. ported to Linux/BSD/OSX/etc) check out http://swtch.com/plan9