Posts Tagged ‘zfs’

zfs in linux, maybe! (read only)

Wednesday, July 23rd, 2008

Ok, so Linux doesn’t have ZFS yet, but it might not be that far off. There are signs of a readonly implementation, depending on whether or not people actually understand the license, being considered by linux kernel hackers. This would be a huge boost for linux, and Solaris alike. As Darren Moffat points out, ZFS already exists in the FreeBSD source tree, and its likely to be in Mac OSX . Given this, surely its only a matter of time before we see it put in. Already we’ve seen Linus have talks with Jeff Bonwick, which is definitely a good sign.

Maybe once this is done, a proper attempt at getting dtrace across might happen. After all, something like dtrace is highly desirable on any operating system.

cd into, or make a directory beginning with a leading “-”

Saturday, April 12th, 2008

Having ZFS and SAMBA on the home machine is great. It was simple to set up a share and offer it out to my house mates for them to backup their dissertation work on. With ZFS compressing the files, some of my file systems are getting a 1.6x ratio (60% disk space for free compared with a non-compressing file system)

The interesting bit comes with file permissions and Windows file attributes which aren’t quite the same, in fact, not at all. The attributes get mapped onto the unix file permissions in an interesting way, and you’ll need to keep that in mind when ls -l ing around a shared directory.

Meanwhile, there was a directory named “—-FILES—-” on the share. Trying to use

cd "----FILES----"

doesn’t quite work! Despite quoting the directory name, cd still tries to take some of those dashes as a switch. I’m not sure if theres a way around this using the relative path, but there is a different workaround: simply use the absolute path, instead of a relative one to get you there, eg:

cd /mydir/----FILES..../

To make a directory with leading dashes, you’ll need to specify the full pathname, or use something like this to make the process less painful:

mkdir `pwd`/--mydir--

Abusing Solaris attempt #2: stressing out ZFS, PART2

Saturday, March 15th, 2008

In my last post, the files were being written to an IDE hard disks. Now lets see what happens if we write to /tmp instead. Will Solaris cope with ten million files in /tmp? First, if we want to make use of the compression, we need to make a file system:

We make the files (we can use files instead of real disks…):

anton@solaris-devx ~ $ mkfile 100M /tmp/file1
anton@solaris-devx ~ $ mkfile 100M /tmp/file2

and then su to root to make the ZFS file system (mirrored):

# zpool create crazedPool mirror /tmp/file1 /tmp/file2

I should note that for some reason ZFS didn’t make use of the entire file size:

# zfs list crazedPool
NAME USED AVAIL REFER MOUNTPOINT
crazedPool 110K 63.4M 20K /crazedPool

And now the real test. How about a big file? Lets say, 100G?:

anton@solaris-devx dir1 $ time mkfile 100G woot
real 1m21.995s
user 0m0.191s
sys 0m30.308s

And what about 10000 files, each 10M in size?:
anton@solaris-devx dir1 $ i="0"
anton@solaris-devx dir1 $ time while [ $i -lt 10000 ]
> do
> mkfile 10M la0$i
> i=$[$i+1]
> done
real 1m46.789s
user 0m4.665s
sys 0m43.492s

So far, so good. So now lets push the envelope off the desk. Or maybe off a cliff. Lets see what happens when we make a 100TB file with ZFS!

anton@solaris-devx dir1 $ ls -l megaFile
-rw------- 1 anton staff 107374182400000 Mar 15 18:05 megaFile

and the compression ratio?:

anton@solaris-devx tmp $ zfs get compressratio crazedPool
NAME PROPERTY VALUE SOURCE
crazedPool compressratio 1.00x -

hmm, not quite what I was expecting!

Abusing Solaris attempt #2: stressing out ZFS, PART1

Tuesday, March 11th, 2008

So last time we pulled out an IDE hard disk, and Solaris lived. It got me thinking…What else can we do to a hard disk that Solaris might not like? What about making a really big file? What about a 9TB file on an 80GB hard disk?:

anton@solaris-devx ~ $ time mkfile 9000G deleteThis

real 120m42.953s
user 0m16.448s
sys 46m55.092s

anton@solaris-devx ~ $ ls -l deleteThis
-rw------- 1 anton staff 9663676416000 Mar 9 02:22 deleteThis

And the machine didn’t die! But what about the compression ratio?

anton@solaris-devx ~ $ zfs get compressratio tank/home
NAME PROPERTY VALUE SOURCE
tank/home compressratio 1.22x

Looks like the ratio is an average for all the files on that file system. So lets try to artificially inflate this value. We can run a little script like this:

#/bin/sh
#A little script to make ten million files each 1 megabyte in size
i="0"
while [ $i -lt 10000000 ]
do
mkfile 10M la$i
i=$[$i+1]
done

The result (after about an hour of making files) wasn’t good:

bash: fork: Not enough space

This looks more like an issue bash had rather than ZFS. So did we push up that compression ratio?:

anton@solaris-devx mess $ zfs get compressratio tank/home
NAME PROPERTY VALUE SOURCE
tank/home compressratio 1.22x -

Seemingly not. To compensate, we’ll do something more crazy for PART2

Installing MySQL on SXDE (build 70)

Saturday, January 26th, 2008

There are a few different ways you could get mysql on your solaris machine:

  • blastwave.org where you can get mysql and many other packages using an apt style package installation mechanism
  • sunsource.net where the packages have been optimised for solaris (and now that Sun are in the process of aquiring mysql we can hope that multitheaded developement will increase in line with Suns processor designs)

For this installation we’ll be using the packages from sunsource.net

So heres what you need to do:

Download the CSKruntime, CSKmysql and the CoolStack Documentation packages from sunsource.net and extract the archives using bzip2.

You should have something like:

# ls
CSKmysql_1.2_x86.pkg        CSKruntime_1.2_x86.pkg

Mysql depends on CSKruntime so install the runtime first:

# pkgadd -d /directory_where_your_file_is/CSKruntime_1.2_sparc.pkg

Once its installed make sure you install mysql having used pkgtrans - otherwise the install won’t work 100% (this has been the case for me, your millage may vary)

# pkgtrans CSKamp_1.2_x86.pkg /var/tmp
# pkgadd -d /var/tmp

Now initialise the database tables:

# /opt/coolstack/mysql/bin/mysql_install_db --datadir=/tank/mysql_data

Note that this is not the usual mysql data directory. In my case, this directory happens to be on a ZFS filesystem in a RAID 1 configuration.

To quote the README that comes with the install in /opt/coolstack/mysql/README

” mysql_install_db creates two directories “mysql” and “test” in data directory.
mysql directory has the MySQL privilege tables. test has the “test” database
These two directories are needed for mysql to start. If you are using a
different data directory later, you need to copy these two directories over. ”

Next create the mysql user and mysql group for the mysql service to use:

# groupadd mysql
# useradd -g mysql mysql
# chown -R mysql:mysql /tank/mysql_data

If you didn’t use the standard mysql data dir you will need to edit the SVC manifest file so that it knows where your data dir is:

/opt/coolstack/lib/svc/method/svc-cskmysql
<snip>
MYSQL_DIR=/opt/coolstack/mysql
DB_DIR=/tank/mysql_data/data/
PIDFILE=${DB_DIR}/`/usr/bin/uname -n`.pid
<snip>

Once this is done you should be able to start the mysql service with a simple:

svcadm enable  csk-mysql

After this you’ll need to log in as root and change the root password to something suitable

#/opt/coolstack/mysql/bin/mysql –user=root mysql

You will also want to add regular users to mysql also