@ -246,12 +236,34 @@ More tools and documentation, on how to maintain and scale the system. For examp
This is a super exciting project! And I need helpers!
This is a super exciting project! And I need helpers!
## Contributions ##
To make contributions easier, I have mirrored a repo in github.com
```
https://github.com/chrislusf/weed-fs.git
```
## Installation guide for users who are not familiar with golang
step 1: install go on your machine and setup the environment by following the instructions from the following link:
https://golang.org/doc/install
make sure you set up your $GOPATH
step 2: also you may need to install Mercurial by following the instructions below
http://mercurial.selenic.com/downloads
step 3: download, compile, and install the project by executing the following command
go get github.com/chrislusf/weed-fs/go/weed
once this is done, you should see the executable "weed" under $GOPATH/bin
step 4: after you modify your code locally, you could start a local build by calling "go install" under $GOPATH/src/github.com/chrislusf/weed-fs/go/weed
This API is a little convenient. The volume server would contact the master to get an file id and store it to the right volume server(not necessarily itself).
This API is just for convenience. The master server would get an file id and store the file to the right volume server.
It is a convenient API and does not support different parameters when assigning file id. (or you can add the support and send a push request.)
Do we really need the benchmark? People always use benchmark to compare systems. But benchmarks are misleading. The resources, e.g., CPU, disk, memory, network, all matter a lot. And with Weed File System, single node vs multiple nodes, benchmarking on one machine vs several multiple machines, all matter a lot.
Do we really need the benchmark? People always use benchmark to compare systems. But benchmarks are misleading. The resources, e.g., CPU, disk, memory, network, all matter a lot. And with Seaweed File System, single node vs multiple nodes, benchmarking on one machine vs several multiple machines, all matter a lot.
Here is the steps on how to run benchmark if you really need some numbers.
Here is the steps on how to run benchmark if you really need some numbers.
@ -38,7 +38,22 @@ Many options are options are configurable. Please check the help content:
Common Problems
Common Problems
###############################
###############################
The most common problem is "too many open files" error. This is because the test itself starts too many network connections on one single machine. In my local macbook, if I ran "random read" following writing right away, the error happens always. I have to run "weed benchmark -write=false" to run the reading test only. Also, changing the concurrency level to "-c=16" would also help.
The most common
I start weed servers in one console for simplicity. Better run servers on different consoles.
For more realistic tests, please start them on different machines.
..code-block:: bash
# prepare directories
mkdir 3 4 5
# start 3 servers
./weed server -dir=./3 -master.port=9333 -volume.port=8083 &
./weed volume -dir=./4 -port=8084 &
./weed volume -dir=./5 -port=8085 &
./weed benchmark -server=localhost:9333
problem is "too many open files" error. This is because the test itself starts too many network connections on one single machine. In my local macbook, if I ran "random read" following writing right away, the error happens always. I have to run "weed benchmark -write=false" to run the reading test only. Also, changing the concurrency level to "-c=16" would also help.
When talking about file systems, many people would assume directories, list files under a directory, etc. These are expected if we want to hook up Weed File System with linux by FUSE, or with Hadoop, etc.
When talking about file systems, many people would assume directories, list files under a directory, etc. These are expected if we want to hook up Seaweed File System with linux by FUSE, or with Hadoop, etc.
Some user will ask for no single point of failure. Although google runs its file system with a single master for years, no SPOF seems becoming a criteria for architects to pick solutions.
Some user will ask for no single point of failure. Although google runs its file system with a single master for years, no SPOF seems becoming a criteria for architects to pick solutions.
Luckily, it's not too difficult to enable Weed File System with failover master servers.
Luckily, it's not too difficult to enable Seaweed File System with failover master servers.
filerOptions.master=cmdServer.Flag.String("filer.master","","default to current master server")
filerOptions.master=cmdServer.Flag.String("filer.master","","default to current master server")
filerOptions.collection=cmdServer.Flag.String("filer.collection","","all data will be stored in this collection")
filerOptions.collection=cmdServer.Flag.String("filer.collection","","all data will be stored in this collection")
filerOptions.port=cmdServer.Flag.Int("filer.port",8888,"filer server http listen port")
filerOptions.port=cmdServer.Flag.Int("filer.port",8888,"filer server http listen port")
filerOptions.dir=cmdServer.Flag.String("filer.dir","","directory to store meta data, default to a 'filer' sub directory of what -mdir is specified")
filerOptions.dir=cmdServer.Flag.String("filer.dir","","directory to store meta data, default to a 'filer' sub directory of what -mdir is specified")
filerOptions.defaultReplicaPlacement=cmdServer.Flag.String("filer.defaultReplicaPlacement","","Default replication type if not specified during runtime.")
filerOptions.defaultReplicaPlacement=cmdServer.Flag.String("filer.defaultReplicaPlacement","","Default replication type if not specified during runtime.")
filerOptions.redirectOnRead=cmdServer.Flag.Bool("filer.redirectOnRead",false,"whether proxy or redirect to volume server during file GET request")