FAT47の底辺インフラ議事録

学んだことのメモ帳です

R710でFusion-io ioDrive Duoをセットアップしてみた

ioDriveは、Fusion-io社のNANDフラッシュメモリ搭載の次世代ストレージです。爆速です。
DellのR710とHPのDL380に導入する機会があったのでメモとして記録します。

使用機器
Dell R710
HP DL380
Fusion-io ioDrive Duo 640GB

使用OS
CentOS6.2

ダウンロード
Fusion-ioのサポートサイトでドライバとファームウェアをダウンロード
https://support.fusionio.com/downloads
(要ユーザ登録)

今回はCentOS6なので以下をダウンロード。

iomemory-vsl-2.3.10.110-1.0.el6.src.rpm
fio-common-2.3.10.110-1.0.el6.x86_64.rpm
fio-sysvinit-2.3.10.110-1.0.el6.x86_64.rpm
fio-util-2.3.10.110-1.0.el6.x86_64.rpm
libfio-2.3.10.110-1.0.el6.x86_64.rpm


セットアップ手順
ioDriveが認識されているか確認

# lspci | grep -i fusion
09:00.0 Mass storage controller: Fusion-io ioDimm3 (rev 01)
0a:00.0 Mass storage controller: Fusion-io ioDimm3 (rev 01)

インストールに必要なパッケージ群をインストール。

# yum install kernel-devel-`uname -r` kernel-headers-`uname -r` gcc rsync rpm-build rpm-devel

rpmビルドの実行

# rpmbuild --rebuild iomemory-vsl-2.3.10.110-1.0.el6.src.rpm
伸張ファイルの検査中: /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/iomemory-vsl-2.3.10.110-1.0.el6.x86_64
警告: ホスト名を正式なものにできません: hoge-db01
書き込み完了: /root/rpmbuild/RPMS/x86_64/iomemory-vsl-2.6.32-220.17.1.el6.x86_64-2.3.10.110-1.0.el6.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/iomemory-vsl-config-2.6.32-220.17.1.el6.x86_64-2.3.10.110-1.0.el6.x86_64.rpm
書き込み完了: /root/rpmbuild/RPMS/x86_64/iomemory-vsl-source-2.3.10.110-1.0.el6.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.8LTJUQ
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd iomemory-vsl-2.3.10.110
+ /bin/rm -rf /root/rpmbuild/BUILDROOT/iomemory-vsl-2.3.10.110-1.0.el6.x86_64
+ exit 0
実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.5UoHF3
+ umask 022
+ cd /root/rpmbuild/BUILD
+ rm -rf iomemory-vsl-2.3.10.110
+ exit 0

作成されたRPM
/root/rpmbuild/RPMS/x86_64/iomemory-vsl-2.6.32-220.17.1.el6.x86_64-2.3.10.110-1.0.el6.x86_64.rpm
に生成されたのでこれを使用する。

iomemory-vslのインストール

# rpm -ivh /root/rpmbuild/RPMS/x86_64/iomemory-vsl-2.6.32-220.17.1.el6.x86_64-2.3.10.110-1.0.el6.x86_64.rpm
準備中...                ########################################### [100%]
   1:iomemory-vsl-2.6.32-220########################################### [100%]

ioDrive関連パッケージをインストール

# rpm -ivh fio-common-2.3.10.110-1.0.el6.x86_64.rpm 
準備中...                ########################################### [100%]
   1:fio-common             ########################################### [100%]

# rpm -ivh fio-util-2.3.10.110-1.0.el6.x86_64.rpm    
準備中...                ########################################### [100%]
   1:fio-util               ########################################### [100%]

# rpm -ivh fio-sysvinit-2.3.10.110-1.0.el6.x86_64.rpm 
準備中...                ########################################### [100%]
   1:fio-sysvinit           ########################################### [100%]

# rpm -ivh libfio-2.3.10.110-1.0.el6.x86_64.rpm 
準備中...                ########################################### [100%]
   1:libfio                 ########################################### [100%]

ここまで完了したら、一旦再起動します

# reboot

ioDriveをデタッチする
※たぶん既にデタッチされている

# fio-detach /dev/fct0
Block device /dev/fct0 already detached.
# fio-detach /dev/fct1
Block device /dev/fct1 already detached.

ファームウェアのバージョンアップ

# rpm -ivh fio-firmware-107053-1.0.noarch.rpm 
# fio-update-iodrive /usr/share/fio/firmware/iodrive_107053.fff 
Device ID 1 (/dev/fct1) Updating device firmware from 5.0.3.43247 to 5.0.7.107053
Device ID 0 (/dev/fct0) Updating device firmware from 5.0.3.43247 to 5.0.7.107053

WARNING: DO NOT TURN OFF POWER OR RUN ANY IODRIVE UTILITIES WHILE THE FIRMWARE UPDATE IS IN PROGRESS
  Please wait...this could take a while

Progress
-------------------------
 \  0:  100% |  1:  100%

Results
-------------------------
0: Firmware updated successfully
1: Firmware updated successfully

You MUST now reboot this machine before the new firmware will be activated!

もう一度再起動

# reboot

デタッチする

# fio-detach /dev/fct0
Detaching: [====================] (100%) /
Error: failed to detach /dev/fct0: device busy.
# fio-detach /dev/fct1
Detaching: [====================] (100%) /
Error: failed to detach /dev/fct1: device busy.

おや、デタッチに失敗する。。。
調べてみると、速攻で@namikawaさんの記事を発見
Fusion-io ioDrive Duoで"device busy."


同じように対処していきます。

RAIDバイス確認

#  ls /dev/md*
/dev/md127

詳細の確認

mdadm --detail /dev/md127
/dev/md127:
        Version : 0.90
  Creation Time : Fri Mar  4 15:21:16 2011
     Raid Level : raid0
     Array Size : 629806592 (600.63 GiB 644.92 GB)
   Raid Devices : 2
  Total Devices : 2
Preferred Minor : 127
    Persistence : Superblock is persistent

    Update Time : Fri Mar  4 15:21:16 2011
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 256K

           UUID : 3881ec19:b929014e:84805ee1:6c74b27d
         Events : 0.1

    Number   Major   Minor   RaidDevice State
       0     252        0        0      active sync   /dev/fioa
       1     252       16        1      active sync   /dev/fiob

RAIDをストップさせる

# mdadm --manage /dev/md127 --stop
mdadm: stopped /dev/md127

もう一度デタッチしてみる

# fio-detach /dev/fct0
Detaching: [====================] (100%) -
# fio-detach /dev/fct1
Detaching: [====================] (100%) -

成功したので、次はフォーマット

# fio-format /dev/fct0
Creating a standard block device of size 322.55GBytes (300.40GiBytes).
  Using block (sector) size of 512 bytes.

WARNING: Formatting will destroy any existing data on the device!
Do you wish to continue [y/n]? y
Formatting: [====================] (100%) |
Format successful.

# fio-format /dev/fct1
Creating a standard block device of size 322.55GBytes (300.40GiBytes).
  Using block (sector) size of 512 bytes.

WARNING: Formatting will destroy any existing data on the device!
Do you wish to continue [y/n]? y
Formatting: [====================] (100%) /
Format successful.

アタッチする

# fio-attach /dev/fct0
Device '/dev/fct0' is already attached.
fioa

# fio-attach /dev/fct1
Device '/dev/fct1' is already attached.
fiob

ブロックデバイスが認識されたか確認

# ls /dev/fio*
/dev/fioa  /dev/fiob

software raidの作成
※ioDrive Duoの場合

# mdadm --create /dev/md0 --level=0 --raid-devices=2  /dev/fioa /dev/fiob
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

再起動後もRAIDが維持されるようにconfの作成

# echo "DEVICE /dev/fioa /dev/fiob" >/etc/mdadm.conf
# mdadm --detail --scan >>/etc/mdadm.conf
# cat /etc/mdadm.conf 
DEVICE /dev/fioa /dev/fiob
ARRAY /dev/md0 metadata=1.2 name=hoge-db01:0 UUID=97f1c66c:3c12b8d6:1b4d4243:06hogehoge

ファイルシステム作成

# mkfs.xfs -L -f -b size=4096 -i size=512 -l size=64m /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0               isize=512    agcount=32, agsize=4921728 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=157495296, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0


/etc/sysconfig/iomemory-vslの編集
以下を編集

# If ENABLED is not set (non-zero) then iomemory-vsl init script will not be
# used.
ENABLED=1 #コメント外す

#MD_ARRAYS=""
MD_ARRAYS="/dev/md0"

#MOUNTS=""
MOUNTS="/data"

/etc/modprobe.d/iomemory-vsl.confの編集
2行目コメントアウト削除

# To keep ioDrive from auto loading at boot when using udev, uncomment below
blacklist iomemory-vsl

マウント先のディレクトリ作成

# mkdir /data

マウントして確認してみる

# mount -t xfs /dev/md0 /data
# df -h
/dev/md0              601G   34M  601G   1% /data

fstabに1行追加
※vslプロセスがマウントするのでnoautoオプションを指定
※6列目の数字を2にしてしまうと、boot時にfsckが走るため、/dev/md0へのfsckに失敗してOS上がってこなくなるので注意

vim /etc/fstab
/dev/md0                /data                   xfs     defaults,noauto,noatime,nobarrier        1 0

再起動

# reboot

確認

# df -h
Filesystem            Size  Used Avail Use% マウント位置
/dev/md0              601G   34M  601G   1% /data


めでたしめでたし。
あとは/dataにmysqlのdataディレクトリ置くなり好きに設定する。