mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
remove weedfuse
This commit is contained in:
parent
5956dfd08d
commit
344ce90315
|
@ -1,84 +0,0 @@
|
|||
Mount the SeaweedFS via FUSE
|
||||
|
||||
# Mount by fstab
|
||||
|
||||
|
||||
```
|
||||
$ # on linux
|
||||
$ sudo apt-get install fuse
|
||||
$ sudo echo 'user_allow_other' >> /etc/fuse.conf
|
||||
$ sudo mv weedfuse /sbin/mount.weedfuse
|
||||
|
||||
$ # on Mac
|
||||
$ sudo mv weedfuse /sbin/mount_weedfuse
|
||||
|
||||
```
|
||||
|
||||
On both OS X and Linux, you can add one of the entries to your /etc/fstab file like the following:
|
||||
|
||||
```
|
||||
# mount the whole SeaweedFS
|
||||
localhost:8888/ /home/some/mount/folder weedfuse
|
||||
|
||||
# mount the SeaweedFS sub folder
|
||||
localhost:8888/sub/dir /home/some/mount/folder weedfuse
|
||||
|
||||
# mount the SeaweedFS sub folder with some options
|
||||
localhost:8888/sub/dir /home/some/mount/folder weedfuse user
|
||||
|
||||
```
|
||||
|
||||
To verify it can work, try this command
|
||||
```
|
||||
$ sudo mount -av
|
||||
|
||||
...
|
||||
|
||||
/home/some/mount/folder : successfully mounted
|
||||
|
||||
```
|
||||
|
||||
If you see `successfully mounted`, try to access the mounted folder and verify everything works.
|
||||
|
||||
|
||||
To debug, run these:
|
||||
```
|
||||
|
||||
$ weedfuse -foreground localhost:8888/ /home/some/mount/folder
|
||||
|
||||
```
|
||||
|
||||
|
||||
To unmount the folder:
|
||||
```
|
||||
|
||||
$ sudo umount /home/some/mount/folder
|
||||
|
||||
```
|
||||
|
||||
<!-- not working yet!
|
||||
|
||||
# Mount by autofs
|
||||
|
||||
AutoFS can mount a folder if accessed.
|
||||
|
||||
```
|
||||
# install autofs
|
||||
$ sudo apt-get install autofs
|
||||
```
|
||||
|
||||
Here is an example on how to mount a folder for all users under `/home` directory.
|
||||
Assuming there exists corresponding folders under `/home` on both local and SeaweedFS.
|
||||
|
||||
Edit `/etc/auto.master` and `/etc/auto.weedfuse` file with these content
|
||||
```
|
||||
$ cat /etc/auto.master
|
||||
/home /etc/auto.weedfuse
|
||||
|
||||
$ cat /etc/auto.weedfuse
|
||||
# map /home/<user> to localhost:8888/home/<user>
|
||||
* -fstype=weedfuse,rw,allow_other,foreground :localhost\:8888/home/&
|
||||
|
||||
```
|
||||
|
||||
-->
|
|
@ -1,109 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/chrislusf/seaweedfs/weed/command"
|
||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||
"github.com/jacobsa/daemonize"
|
||||
"github.com/kardianos/osext"
|
||||
)
|
||||
|
||||
var (
|
||||
fuseCommand = flag.NewFlagSet("weedfuse", flag.ContinueOnError)
|
||||
options = fuseCommand.String("o", "", "comma separated options rw,uid=xxx,gid=xxx")
|
||||
isForeground = fuseCommand.Bool("foreground", false, "starts as a daemon")
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
err := fuseCommand.Parse(os.Args[1:])
|
||||
if err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
fmt.Printf("options: %v\n", *options)
|
||||
|
||||
// seems this value is always empty, need to parse it differently
|
||||
optionsString := *options
|
||||
prev := ""
|
||||
for i, arg := range os.Args {
|
||||
fmt.Printf("args[%d]: %v\n", i, arg)
|
||||
if prev == "-o" {
|
||||
optionsString = arg
|
||||
}
|
||||
prev = arg
|
||||
}
|
||||
|
||||
device := fuseCommand.Arg(0)
|
||||
mountPoint := fuseCommand.Arg(1)
|
||||
|
||||
fmt.Printf("source: %v\n", device)
|
||||
fmt.Printf("target: %v\n", mountPoint)
|
||||
|
||||
nouser := true
|
||||
for _, option := range strings.Split(optionsString, ",") {
|
||||
fmt.Printf("option: %v\n", option)
|
||||
switch option {
|
||||
case "user":
|
||||
nouser = false
|
||||
}
|
||||
}
|
||||
|
||||
maybeSetupPath()
|
||||
|
||||
if !*isForeground {
|
||||
startAsDaemon()
|
||||
return
|
||||
}
|
||||
|
||||
parts := strings.SplitN(device, "/", 2)
|
||||
filer, filerPath := parts[0], parts[1]
|
||||
|
||||
command.RunMount(
|
||||
filer, "/"+filerPath, mountPoint, "", "000", "",
|
||||
4, !nouser, 0, 1000000)
|
||||
|
||||
}
|
||||
|
||||
func maybeSetupPath() {
|
||||
// sudo mount -av may not include PATH in some linux, e.g., Ubuntu
|
||||
hasPathEnv := false
|
||||
for _, e := range os.Environ() {
|
||||
if strings.HasPrefix(e, "PATH=") {
|
||||
hasPathEnv = true
|
||||
}
|
||||
fmt.Println(e)
|
||||
}
|
||||
if !hasPathEnv {
|
||||
os.Setenv("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
|
||||
}
|
||||
}
|
||||
|
||||
func startAsDaemon() {
|
||||
|
||||
// adapted from gcsfuse
|
||||
|
||||
// Find the executable.
|
||||
var path string
|
||||
path, err := osext.Executable()
|
||||
if err != nil {
|
||||
glog.Fatalf("osext.Executable: %v", err)
|
||||
}
|
||||
|
||||
// Set up arguments. Be sure to use foreground mode.
|
||||
args := append([]string{"-foreground"}, os.Args[1:]...)
|
||||
|
||||
// Pass along PATH so that the daemon can find fusermount on Linux.
|
||||
env := []string{
|
||||
fmt.Sprintf("PATH=%s", os.Getenv("PATH")),
|
||||
}
|
||||
|
||||
err = daemonize.Run(path, args, env, os.Stdout)
|
||||
if err != nil {
|
||||
glog.Fatalf("daemonize.Run: %v", err)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue