I have two servers that I plan to use for storage. Each of them has a few SATA disks directly attached. I want the storage to be available even if one of the storage servers is down (preferably the clients wouldn't even notice that the fail-over, although I'm not sure if this is possible). The clients may access the storage via NFS and samba, but this is not a must; I could use something else if needed.
I found this guide, Installing and Configuring Openfiler with DRBD and Heartbeat, which apparently does the thing I want. It relies on three components, Openfiler, DRBD, and Heartbeat, and all three of them need to be configured separately. I'm wondering are there simpler solutions?
Is using DRBD+Heartbeat the best practice for a situation like mine? I'm also interested to know if there are alternatives that don't depend on DRBD.
GlusterFS may be another option: http://www.gluster.org/ Gluster was designed from the ground-up to be a distributed filesystem.
Windows Server has this functionality via a feature called DFS - Distributed File System. Basically you create a namespace inside your domain and you access it like you would a traditional share.
For example,
\\domain.local\ShareName\
You put your servers into the namespace and configure DFS replication between them. Then if one host goes down, its data is still present on other hosts, and the transition is seamless to end users as they just continue to access the namespace, rather than the individual servers.
Here's a different idea. You might want to check out FreeBSD/FreeNAS/Solaris (if you dare) and make use of the ZFS filesystem. It is possible to have a zpool span across multiple servers. Now if you set up the storage as a zpool it should be relatively safe and highly available.
You could check out Google or these posts to get you started: