2016-06-03 09:09:14 +08:00
package command
2014-05-13 13:57:23 +08:00
2020-04-12 12:12:41 +08:00
import (
"os"
)
2014-05-13 13:57:23 +08:00
type MountOptions struct {
2020-02-27 08:46:01 +08:00
filer * string
filerMountRootPath * string
dir * string
dirListCacheLimit * int64
collection * string
replication * string
ttlSec * int
chunkSizeLimitMB * int
2020-04-12 12:12:41 +08:00
cacheDir * string
cacheSizeMB * int64
2020-02-27 08:46:01 +08:00
dataCenter * string
allowOthers * bool
umaskString * string
2020-03-22 10:14:25 +08:00
nonempty * bool
2020-02-27 08:46:01 +08:00
outsideContainerClusterMode * bool
2020-04-22 09:02:08 +08:00
asyncMetaDataCaching * bool
2014-05-13 13:57:23 +08:00
}
var (
2018-11-15 14:48:54 +08:00
mountOptions MountOptions
mountCpuProfile * string
mountMemProfile * string
2014-05-13 13:57:23 +08:00
)
func init ( ) {
cmdMount . Run = runMount // break init cycle
2015-04-17 05:11:25 +08:00
mountOptions . filer = cmdMount . Flag . String ( "filer" , "localhost:8888" , "weed filer location" )
2018-07-15 12:09:21 +08:00
mountOptions . filerMountRootPath = cmdMount . Flag . String ( "filer.path" , "/" , "mount this remote path from filer server" )
2015-05-26 14:53:45 +08:00
mountOptions . dir = cmdMount . Flag . String ( "dir" , "." , "mount weed filer to this directory" )
2019-12-14 02:22:24 +08:00
mountOptions . dirListCacheLimit = cmdMount . Flag . Int64 ( "dirListCacheLimit" , 1000000 , "limit cache size to speed up directory long format listing" )
2018-05-29 04:24:48 +08:00
mountOptions . collection = cmdMount . Flag . String ( "collection" , "" , "collection to create the files" )
2018-09-21 00:00:15 +08:00
mountOptions . replication = cmdMount . Flag . String ( "replication" , "" , "replication(e.g. 000, 001) to create to files. If empty, let filer decide." )
2018-06-12 14:13:33 +08:00
mountOptions . ttlSec = cmdMount . Flag . Int ( "ttl" , 0 , "file ttl in seconds" )
2020-04-12 12:22:52 +08:00
mountOptions . chunkSizeLimitMB = cmdMount . Flag . Int ( "chunkSizeLimitMB" , 16 , "local write buffer size, also chunk large files" )
2020-04-12 12:12:41 +08:00
mountOptions . cacheDir = cmdMount . Flag . String ( "cacheDir" , os . TempDir ( ) , "local cache directory for file chunks" )
2020-04-12 15:52:54 +08:00
mountOptions . cacheSizeMB = cmdMount . Flag . Int64 ( "cacheCapacityMB" , 1000 , "local cache capacity in MB (0 will disable cache)" )
2018-07-15 04:36:28 +08:00
mountOptions . dataCenter = cmdMount . Flag . String ( "dataCenter" , "" , "prefer to write to the data center" )
2019-03-11 10:45:40 +08:00
mountOptions . allowOthers = cmdMount . Flag . Bool ( "allowOthers" , true , "allows other users to access the file system" )
2019-07-24 15:03:05 +08:00
mountOptions . umaskString = cmdMount . Flag . String ( "umask" , "022" , "octal umask, e.g., 022, 0111" )
2020-03-22 10:14:25 +08:00
mountOptions . nonempty = cmdMount . Flag . Bool ( "nonempty" , false , "allows the mounting over a non-empty directory" )
2018-11-15 14:48:54 +08:00
mountCpuProfile = cmdMount . Flag . String ( "cpuprofile" , "" , "cpu profile output file" )
mountMemProfile = cmdMount . Flag . String ( "memprofile" , "" , "memory profile output file" )
2020-02-27 08:46:01 +08:00
mountOptions . outsideContainerClusterMode = cmdMount . Flag . Bool ( "outsideContainerClusterMode" , false , "allows other users to access the file system" )
2020-04-24 05:14:28 +08:00
mountOptions . asyncMetaDataCaching = cmdMount . Flag . Bool ( "asyncMetaDataCaching" , true , "async meta data caching. this feature will be permanent and this option will be removed." )
2014-05-13 13:57:23 +08:00
}
var cmdMount = & Command {
UsageLine : "mount -filer=localhost:8888 -dir=/some/dir" ,
Short : "mount weed filer to a directory as file system in userspace(FUSE)" ,
2015-04-17 05:11:25 +08:00
Long : ` mount weed filer to userspace .
2014-05-13 13:57:23 +08:00
Pre - requisites :
2015-04-17 05:11:25 +08:00
1 ) have SeaweedFS master and volume servers running
2014-05-13 13:57:23 +08:00
2 ) have a "weed filer" running
These 2 requirements can be achieved with one command "weed server -filer=true"
2018-12-30 02:31:36 +08:00
This uses github . com / seaweedfs / fuse , which enables writing FUSE file systems on
2014-05-14 02:25:48 +08:00
Linux , and OS X .
2014-05-13 13:57:23 +08:00
On OS X , it requires OSXFUSE ( http : //osxfuse.github.com/).
2020-03-06 08:00:20 +08:00
If the SeaweedFS system runs in a container cluster , e . g . managed by kubernetes or docker compose ,
2020-02-27 08:46:01 +08:00
the volume servers are not accessible by their own ip addresses .
In "outsideContainerClusterMode" , the mount will use the filer ip address instead , assuming :
* All volume server containers are accessible through the same hostname or IP address as the filer .
* All volume server container ports are open external to the cluster .
2014-05-13 13:57:23 +08:00
` ,
}