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"
2020-10-11 11:09:43 +08:00
"time"
2020-04-12 12:12:41 +08:00
)
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
2020-06-13 02:46:58 +08:00
dirAutoCreate * bool
2020-02-27 08:46:01 +08:00
collection * string
replication * string
ttlSec * int
chunkSizeLimitMB * int
2020-10-31 12:22:20 +08:00
concurrentWriters * 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-09-03 15:07:22 +08:00
uidMap * string
gidMap * string
2014-05-13 13:57:23 +08:00
}
var (
2020-10-11 11:09:43 +08:00
mountOptions MountOptions
mountCpuProfile * string
mountMemProfile * string
mountReadRetryTime * time . Duration
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" )
2020-06-13 02:46:58 +08:00
mountOptions . dirAutoCreate = cmdMount . Flag . Bool ( "dirAutoCreate" , false , "auto create the directory to mount to" )
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-10-25 11:08:26 +08:00
mountOptions . chunkSizeLimitMB = cmdMount . Flag . Int ( "chunkSizeLimitMB" , 2 , "local write buffer size, also chunk large files" )
2020-10-31 12:22:20 +08:00
mountOptions . concurrentWriters = cmdMount . Flag . Int ( "concurrentWriters" , 0 , "limit concurrent goroutine writers if not 0" )
2020-06-20 03:55:09 +08:00
mountOptions . cacheDir = cmdMount . Flag . String ( "cacheDir" , os . TempDir ( ) , "local cache directory for file chunks and meta data" )
mountOptions . cacheSizeMB = cmdMount . Flag . Int64 ( "cacheCapacityMB" , 1000 , "local file chunk 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" )
2020-10-12 11:42:15 +08:00
mountOptions . outsideContainerClusterMode = cmdMount . Flag . Bool ( "outsideContainerClusterMode" , false , "allows other users to access volume servers with publicUrl" )
2020-09-03 15:07:22 +08:00
mountOptions . uidMap = cmdMount . Flag . String ( "map.uid" , "" , "map local uid to uid on filer, comma-separated <local_uid>:<filer_uid>" )
mountOptions . gidMap = cmdMount . Flag . String ( "map.gid" , "" , "map local gid to gid on filer, comma-separated <local_gid>:<filer_gid>" )
2020-10-11 11:09:43 +08:00
mountCpuProfile = cmdMount . Flag . String ( "cpuprofile" , "" , "cpu profile output file" )
mountMemProfile = cmdMount . Flag . String ( "memprofile" , "" , "memory profile output file" )
mountReadRetryTime = cmdMount . Flag . Duration ( "readRetryTime" , 6 * time . Second , "maximum read retry wait time" )
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/).
` ,
}