2016-06-03 01:09:14 +00:00
package command
2014-05-13 05:57:23 +00:00
2020-04-12 04:12:41 +00:00
import (
"os"
2020-10-11 03:09:43 +00:00
"time"
2020-04-12 04:12:41 +00:00
)
2014-05-13 05:57:23 +00:00
type MountOptions struct {
2020-02-27 00:46:01 +00:00
filer * string
filerMountRootPath * string
dir * string
2020-06-12 18:46:58 +00:00
dirAutoCreate * bool
2020-02-27 00:46:01 +00:00
collection * string
replication * string
2020-12-13 19:59:32 +00:00
diskType * string
2020-02-27 00:46:01 +00:00
ttlSec * int
chunkSizeLimitMB * int
2020-10-31 04:22:20 +00:00
concurrentWriters * int
2020-04-12 04:12:41 +00:00
cacheDir * string
cacheSizeMB * int64
2020-02-27 00:46:01 +00:00
dataCenter * string
allowOthers * bool
umaskString * string
2020-03-22 02:14:25 +00:00
nonempty * bool
2020-02-27 00:46:01 +00:00
outsideContainerClusterMode * bool
2020-09-03 07:07:22 +00:00
uidMap * string
gidMap * string
2014-05-13 05:57:23 +00:00
}
var (
2020-10-11 03:09:43 +00:00
mountOptions MountOptions
mountCpuProfile * string
mountMemProfile * string
mountReadRetryTime * time . Duration
2014-05-13 05:57:23 +00:00
)
func init ( ) {
cmdMount . Run = runMount // break init cycle
2015-04-16 21:11:25 +00:00
mountOptions . filer = cmdMount . Flag . String ( "filer" , "localhost:8888" , "weed filer location" )
2018-07-15 04:09:21 +00:00
mountOptions . filerMountRootPath = cmdMount . Flag . String ( "filer.path" , "/" , "mount this remote path from filer server" )
2015-05-26 06:53:45 +00:00
mountOptions . dir = cmdMount . Flag . String ( "dir" , "." , "mount weed filer to this directory" )
2020-06-12 18:46:58 +00:00
mountOptions . dirAutoCreate = cmdMount . Flag . Bool ( "dirAutoCreate" , false , "auto create the directory to mount to" )
2018-05-28 20:24:48 +00:00
mountOptions . collection = cmdMount . Flag . String ( "collection" , "" , "collection to create the files" )
2018-09-20 16:00:15 +00:00
mountOptions . replication = cmdMount . Flag . String ( "replication" , "" , "replication(e.g. 000, 001) to create to files. If empty, let filer decide." )
2020-12-13 20:05:31 +00:00
mountOptions . diskType = cmdMount . Flag . String ( "disk" , "" , "[hdd|ssd] choose between hard drive or solid state drive" )
2018-06-12 06:13:33 +00:00
mountOptions . ttlSec = cmdMount . Flag . Int ( "ttl" , 0 , "file ttl in seconds" )
2020-10-25 03:08:26 +00:00
mountOptions . chunkSizeLimitMB = cmdMount . Flag . Int ( "chunkSizeLimitMB" , 2 , "local write buffer size, also chunk large files" )
2020-10-31 04:22:20 +00:00
mountOptions . concurrentWriters = cmdMount . Flag . Int ( "concurrentWriters" , 0 , "limit concurrent goroutine writers if not 0" )
2020-06-19 19:55:09 +00: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-14 20:36:28 +00:00
mountOptions . dataCenter = cmdMount . Flag . String ( "dataCenter" , "" , "prefer to write to the data center" )
2019-03-11 02:45:40 +00:00
mountOptions . allowOthers = cmdMount . Flag . Bool ( "allowOthers" , true , "allows other users to access the file system" )
2019-07-24 07:03:05 +00:00
mountOptions . umaskString = cmdMount . Flag . String ( "umask" , "022" , "octal umask, e.g., 022, 0111" )
2020-03-22 02:14:25 +00:00
mountOptions . nonempty = cmdMount . Flag . Bool ( "nonempty" , false , "allows the mounting over a non-empty directory" )
2020-10-12 03:42:15 +00:00
mountOptions . outsideContainerClusterMode = cmdMount . Flag . Bool ( "outsideContainerClusterMode" , false , "allows other users to access volume servers with publicUrl" )
2020-09-03 07:07:22 +00: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 03:09:43 +00: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 05:57:23 +00: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-16 21:11:25 +00:00
Long : ` mount weed filer to userspace .
2014-05-13 05:57:23 +00:00
Pre - requisites :
2015-04-16 21:11:25 +00:00
1 ) have SeaweedFS master and volume servers running
2014-05-13 05:57:23 +00:00
2 ) have a "weed filer" running
These 2 requirements can be achieved with one command "weed server -filer=true"
2018-12-29 18:31:36 +00:00
This uses github . com / seaweedfs / fuse , which enables writing FUSE file systems on
2014-05-13 18:25:48 +00:00
Linux , and OS X .
2014-05-13 05:57:23 +00:00
On OS X , it requires OSXFUSE ( http : //osxfuse.github.com/).
` ,
}