|
QuickStartGuide
15 Minutes to MogileFS
Creating a MogileFS Test Setup in 15 MinutesWant to play with the MogileFS API? Want to help write code, test patches, fix bugs? Follow the guide below to quickly build a test instance. Assuming you have a debian, ubuntu, or redhat-y system. OS X will be similar but has some missing steps. For a more complete guide on how to set up an install of MogileFS, refer to the InstallHowTo No attempts to time this guide have actually been made; YMMV. Add a new local user and log into it adduser mogilefs # ...etc... su - mogilefs $ Use App::cpanminus to quickly bootstrap locally installed perl modules. (note: you might need to add --no-certificate-check if you have a buggy version of wget) wget -O- http://cpanmin.us | perl - local::lib PERL5LIB="/home/`whoami`/perl5/lib/perl5" perl -Mlocal::lib >> ~/.bashrc source ~/.bashrc Install libdbd-mysql-perl (debian) or DBD::mysql via yum. This is needed even if you're not using MySQL. apt-get install libdbd-mysql-perl ... or ... yum install perl(DBD::mysql) Gas up cpanm again to pull in all dependencies for MogileFS. Read the output carefully in case of any build failures. cpanm IO::AIO MogileFS::Server MogileFS::Client MogileFS::Utils Save this script as mogstoreds.sh. Edit anything necessary. It is for starting and stopping a set of test mogstored's. For convenience in testing replication, the HOSTS example below splits them into the space of two /24's. cat > mogstoreds.sh <<END
#!/bin/bash
BASEDIR="/home/mogilefs/mogdata/"
PERL5LIB="$PERL5LIB"
MOGSTORED="mogstored"
HOSTS="127.0.0.20 127.0.0.25 127.0.15.5 127.0.15.10"
if [ $1 = "start" ] ; then
echo "Starting a few mogstored's"
for host in $HOSTS ; do
echo "starting host $host"
$MOGSTORED -d --httplisten $host:7500 --mgmtlisten $host:7501 \
--docroot ${BASEDIR}${host}
done
elif [ $1 = "stop" ] ; then
echo "Stopping mogstored's"
for host in $HOSTS ; do
echo "shutdown" | nc $host 7501
done
fi
END
$ chmod +x mogstoreds.shPre-make some directories and data mkdir -p \
mogdata/{127.0.0.20/{dev1,dev2},127.0.0.25/{dev3,dev4},127.0.15.5/{dev5,dev6},127.0.15.10/{dev7,dev8}}Install sysstat if you'd like (provides iowait stats) apt-get install sysstat Prepare a database, and install it via mogdbsetup. Tune the below if you know better. Run mogdbsetup --help for full options. mysql> CREATE DATABASE mogilefs; GRANT ALL PRIVILEGES ON mogilefs.* TO \ 'mogile'@'%' IDENTIFIED BY 'mogilepass'; # I don't know postgres very well ;) mogdbsetup --dbhost=127.0.0.1 --dbname=mogilefs --dbuser=mogile \ --dbpass=mogilepass # Follow any dialogs. Prepare a tracker configuration. cat > mogtracker.conf <<END db_dsn = DBI:mysql:mogilefs:host=127.0.0.1 db_user = mogile db_pass = mogilepass listen = 127.0.1.5:7001 query_jobs = 2 delete_jobs = 1 replicate_jobs = 1 reaper_jobs = 1 fsck_jobs = 1 rebalance_ignore_missing = 1 END Fire up some mogstored's. ./mogstoreds.sh start Fire up a mogilefs tracker. Recommend for testing that you run it in the foreground, or in a screen session, so you can quickly and easily see errors. mogilefsd --config=./mogtracker.conf Create a client utility configuration file. echo "trackers = 127.0.1.5:7001 domain = toast" >> ~/.mogilefs.conf Add the mogtracker hosts and devices mogadm host add nearone --ip=127.0.0.20 --status=alive mogadm host add neartwo --ip=127.0.0.25 --status=alive mogadm host add farone --ip=127.0.15.5 --status=alive mogadm host add fartwo --ip=127.0.15.10 --status=alive mogadm device add nearone 1 mogadm device add nearone 2 mogadm device add neartwo 3 mogadm device add neartwo 4 mogadm device add farone 5 mogadm device add farone 6 mogadm device add fartwo 7 mogadm device add fartwo 8 Create a domain to test with mogadm domain add toast Wait a few seconds, then see if everything checks out mogadm check Try mogupload'ing something echo "Hello, world" | mogupload --key="/hellothere" --file="-" mogfetch it back mogfetch --key="/hellothere" --file="-" Yay, congrats! Got five more minutes?Play with the commandline tools Got five more minutes?Set up a full HTTP access example Ready to start hacking?Head over to Github (or if you're following a link from the mailing list, go there instead). Pick a repository (such as MogileFS-Server). Make sure to stop any running instances you might've configured above if you wish to run make test safely. ./mogstoreds stop echo "shutdown" | nc 127.0.0.1 7001 # kill the tracker. ctrl-c also works If you're comfortable using git, check out the repository git clone https://github.com/mogilefs/MogileFS-Server.git Or you may simply click the "downloads" link in the upper right to get a fresh tarball. Untar it, and install or run tests via perl. perl Makefile.PL make make test make install If you wish tests to run better, use a MySQL database export MOGTEST_DBHOST="192.168.1.50" export MOGTEST_DBPORT="3306" export MOGTEST_DBUSER="mogtest" export MOGTEST_DBPASS="mogtest" export MOGTEST_DBNAME="mogtest" export MOGTEST_DBTYPE="MySQL" perl Makefile.PL make make test You can easily run individual tests with prove # Edit some file in t/* or lib/* prove -l -v t/05-that-bug-you-fixed.t |