configuring raids on freebsd
Some days ago, a disk in the old server failed. I replaced it with a new server having ECC memory. It also had a LSI raid controller, which I did not notice when ordering the system.
The configuration of the raid through the raid internal interface was pretty hard and took a long time. I could have booted a linux and used MegaCLI, but from work I knew that I would have to invest approximately the same time to investigate the same commands.
As I was trying to install FreeBSD, gpart had some problems using the created raids, so I investigated how I would configure the raid on FreeBSD and found mfiutil. It is a wonderful tool and makes creating raid sets very easy, without even reading the man page.
As an example, this is how listing the drives looks for my server
$ mfiutil show drives
mfi0 Physical Drives:
5 ( 279G) ONLINE <SEAGATE ST3300657SS 0008 serial=6SJ48V0H> SAS E1:S0
6 ( 279G) ONLINE <SEAGATE ST3300657SS 0008 serial=6SJ5S96X> SAS E1:S1
To adjust or read the current cache policy is only one command
$ mfiutil show volumes
mfi0 Volumes:
Id Size Level Stripe State Cache Name
mfid0 ( 279G) RAID-0 64K OPTIMAL Writes
mfid1 ( 279G) RAID-0 64K OPTIMAL Writes
$ mfiutil cache mfid0
mfi0 volume mfid0 cache settings:
I/O caching: writes
write caching: write-back
write cache with bad BBU: disabled
read ahead: none
drive write cache: default
Cache disabled due to dead battery or ongoing battery relearn
$mfiutil cache mfid0 disable
Disabling caching of I/O writes
$ mfiutil cache mfid0
mfi0 volume mfid0 cache settings:
I/O caching: disabled
write caching: write-back
write cache with bad BBU: disabled
read ahead: none
drive write cache: default
Cache disabled due to dead battery or ongoing battery relearn
If you have to work with a LSI controller next time, remember mfiutil. It is in the base system and needn’t to be installed through ports.