2

I'm using the new LizardFS and it's awesome! I'm new to LizardFS/MooseFS overall, but it seems pretty straight-forward.

I was wondering two things:

First, is there a way to setup separate storage pools? For instance, I could have five servers each with two HDDs. One HDD in each server belongs to one storage pool, and the other HDD belongs to the other. The storage pools would be separate in the sense that they would be mounted separately, and they would maintain chunks separately.

The reason for wanting to do this is because of my second question:

I want to have a fast storage pool and a slow storage pool. My servers have 10Gbe with SSDs, so everything with LFS is very fast. But some items (particularly by file type) don't need to be fast, such as audio and video files, and HDDs are obviously cheaper.

Ultimately, what I want to do is to have LFS recognize conditions (such as file type or other user-defined conditions) so that when a file is written to the file system, it is stored in either fast storage or slow storage, but it appears as a single storage volume to the end user. I'm fairly certain this is not possible with LFS out of the box. However, if it's possible to have multiple storage volumes, I can build a system to fake the rest of it using symlinks.

Nick Coons
  • 387
  • 4
  • 16

3 Answers3

6

Since version 2.5.4, LizardFS supports a new feature called 'custom goals'. It basically allows you to define groups of servers, for example an 'hdd' group for slow nodes and a 'ssd' group for fast ones. Then, you may ask LizardFS to distribute data on certain groups only instead of the whole cluster. Custom goals have the same granularity as standard goals: it is thus possible to assign them on a per directory basis.

More details on LizardFS 2.5.4 release announcement.

Marin Bernard
  • 76
  • 1
  • 2
4

In MooseFS 3.0 there is a feature called Storage Classes. It seems to be more comfortable to use than custom goals in LizardFS, because you can define a storage class "on the fly", without necessity to edit any configuration files with definitions. You only have to "label" chunkservers before defining any storage classes (and this have to be done in chunkservers' config files), but normally you set labels for chunkserver once.

(from MooseFS 3.0 Storage Classes Manual):

Since MooseFS 3.0 goal has been extended to Storage Class. Storage Classes allow you to specify on which Chunkservers copies of files should be stored. Storage Classes are defined using label expressions.

prk
  • 41
  • 2
2

No, unfortunately this is not possible without running multiple LizardFS servers on the same machine. You can do that, loading in separate config files with different ports, if you would like to do that. That will still require you to manually separate the different types of content though.

You may wish to look into LizardFS' rack awareness feature - which can be used to 'pin' fast storage to a set of servers.

On a semi-unrelated note, there's a pull request for high availability on LFS that I submitted :) Give it a shot if you like.

If SSD caching is a must, try Ceph. It allows you to set up fast cache pools to sit in front of slower spinning rust.