Ubuntu Weekly Recipe

第255回 クリスマス特別企画・UbuntuでioDrive2を使う

この記事を読むのに必要な時間:およそ 7 分

Bah humbug!※1

世間では天皇誕生日の次の日などが執り行われたようですが,皆様いかがお過ごしでしょうか? 今年も一年よい子でいた筆者には,ご褒美に夢のようなプレゼント※2がやってきました。

筆者の元にやってきた夢のストレージ

筆者の元にやってきた夢のストレージ

「わあい,ioDrive2 Duoだ! ありがとうサンタさん。これ,ずっと欲しかったんだ!」

というわけで2012年最後のレシピは,Ubuntu 12.04日本語Remix上でioDrive2 Duoを動かす方法を紹介します。

※1
小説「クリスマスキャロル」の主人公であるスクルージ老人が,⁠メリークリスマス」に対して言った言葉。⁠ふん,クリスマスなんてくだらないね」くらいの意味でしょうか。Wychwood Breweryから同名のクリスマスビールが販売されていることでも有名です。
※2
実際は夢のようなプレゼントではなく,年明けには返却しなければいけない,現実的なレンタル品です。

ストレージ王に,俺はなる!

ioDrive2とは簡単に言ってしまえば,PCIeに接続するSSDの親戚みたいなものです※3)⁠速い!大容量!高信頼性!お値段もそれなり!ということで有名ですね。ioDrive2にはMLC/SLCの違いや容量ごとに,いくつかのモデルが存在します。そんな中で今回用意したのは,MLCで2.4TBの容量を持つioDrive2 Duoです。ご家庭のパソコンでも,2TB,3TBはあたりまえのこの時代。SSD最大の弱点といえば,HDDにはまだまだ及ばない容量ですよね。しかしながらioDrive2 Duoのように2.4TBもの容量があれば,十分HDDの代替として,ご家庭のデスクトップ用途でも使えるのではないでしょうか。

なおこのモデルはPCIe x8のバスと,6pinの外部電源※4が必要なので注意してください。今回筆者はNECのExpress5800/R120d-2Mに搭載してみました。

※3
もちろんただのSSDとは違います。詳細な特徴は,Software Design 2012年6月号の特集に詳しいので,そちらを参照してみてください。
※4
最近のちょっと高級なグラフィックカードなどが要求するものと同じです。

デバイスドライバをインストールする

ioDrive2はSATAのHDDなどとは異なり,物理接続しただけでストレージとして認識されるわけではありません。まずは専用のドライバをインストールする必要があります。ドライバ一式は購入したベンダ,あるいはFusionIOのサイトなどから各自入手してください。ちなみにドライバの対応OSの都合上,Ubuntu 12.10ではなく,Ubuntu 12.04.1を利用しています。

ドライバとユーティリティは,ソースコードとdebパッケージにて提供されています。今回はユーティリティをdebパッケージからインストールし,ドライバモジュールであるiomemory-vslはソースコードから日本語Remix上でビルドしました。

まず,ビルドに必要なパッケージをインストールします。この他にカーネルのヘッダファイルが必要ですが,Ubuntu 12.04には標準でインストールされているので,別途インストールの必要はありません。もしも何らかの理由でインストールされていない場合は,linux-headers-genericパッケージをインストールしておいてください。

ドライバのソースコードは「iomemory-vsl_(バージョン).tar.gz」というファイルです。このアーカイブを展開し,展開されたディレクトリの中でdpkg-buildpackageを実行します。ビルドに成功すると,親ディレクトリに次のようなパッケージが作成されます。

  • iomemory-vsl-3.2.0-34-generic_3.2.2.869-1.0_amd64.deb
  • iomemory-vsl-config-3.2.0-34-generic_3.2.2.869-1.0_amd64.deb
  • iomemory-vsl-source_3.2.2.869-1.0_amd64.deb

パッケージの作成ができたら,iomemory-vslパッケージと,ライブラリであるlibvsl,ユーティリティ群であるfio-ではじまる名前のパッケージをインストールします。詳細は,インストールドキュメント「ioMemory VSL 3.2 User Guide for Linux」「Building a Debian Installation Package」の節を参考にしてください。

ビルドに必要なパッケージのインストールと,ドライバのビルド

$ sudo apt-get install fakeroot build-essential debhelper
$ tar zxvfiomemory-vsl_3.2.2.869-1.0.tar.gz
$ cd iomemory-vsl-3.2.2.869
$ dpkg-buildpackage -rfakeroot -b

ドライバとユーティリティパッケージのインストール

$ sudo dpkg -i iomemory-vsl-3.2.0-34-generic_3.2.2.869-1.0_amd64.deb fio-util_3.2.2.869-1.0_amd64.deb fio-common_3.2.2.869-1.0_amd64.deb libvsl_3.2.2.869-1.0_amd64.deb

デバイスのチェックとモジュールのロード

インストールが完了したら,まずはfio-pci-checkコマンドを叩いてみましょう。これはPCIバスツリーのエラーや,デバイスのチェックを行うコマンドです。ioDrive2 Duoはその名が示す通り,2つのioDriveが1つのアダプタ上に載っている作りになっています※5)⁠そのため次の実行例のように,2つのioDriveが見つかります。

fio-pci-checkでデバイスの状態を確認する

$ sudo fio-pci-check

Root Bridge PCIe 18250 MB/sec needed max

      Bridge 00:02.02 (03-07) (8086:3c06)
        * Needed 4000 MB/sec Avail 4000 MB/sec

            Bridge 03:00.00 (04-07) (1aed:2100)
              * Needed 4000 MB/sec Avail 4000 MB/sec
                Slot Power limit: 25.0W (25000mw)
                clearing corr_err_status_reg (0x2000)

                  Bridge 04:05.00 (06-06) (1aed:2100)
                      Needed 2000 MB/sec Avail 2000 MB/sec
                      clearing corr_err_status_reg (0x2000)

                        ioDrive 06:00.0 (2001) Firmware 109322
                            Slot Power limit: 25.0W (25000mw)

                  Bridge 04:06.00 (07-07) (1aed:2100)
                      Needed 2000 MB/sec Avail 2000 MB/sec
                      clearing corr_err_status_reg (0x2000)

                        ioDrive 07:00.0 (2001) Firmware 109322
                            Slot Power limit: 25.0W (25000mw)

次に,iomemory-vslモジュールをロードしましょう※6)⁠正常にモジュールがロードされると,/dev/fct0と/dev/fct1という2つのデバイスを確認できます。fio-statusコマンドを叩いて,デバイスの状況を見ておきましょう。

モジュールのロード

$ sudo modprobe iomemory-vsl

fio-statusでデバイスのステータスを確認する

$ sudo fio-status

Found 2 ioMemory devices in this system with 1 ioDrive Duo
Driver version: 3.2.2 build 869

Adapter: Dual Controller Adapter
        Fusion-io ioDrive2 Duo 2.41TB, Product Number:***-***-****-**-****, SN:*********, FIO SN:*********
        PCIe Power limit threshold: 24.75W
        Connected ioMemory modules:
          fct0: SN:*********-****
          fct1: SN:*********-****

fct0    Status unknown: Driver is in MINIMAL MODE:
                The firmware on this device is not compatible with the currently installed version of the driver
        SN:*********-****
!! ---> There are active errors or warnings on this device!  Read below for details.
        Located in slot 1 Lower of ioDrive2 Adapter Controller SN:*********
        PCI:06:00.0, Slot Number:43
        Firmware v7.0.2, rev 108609 Public
        Geometry and capacity information not available.
        Internal temperature: 46.26 degC, max 46.26 degC

        ACTIVE WARNINGS:
            The ioMemory is currently running in a minimal state.

fct1    Status unknown: Driver is in MINIMAL MODE:
                The firmware on this device is not compatible with the currently installed version of the driver
        SN:*********-****
!! ---> There are active errors or warnings on this device!  Read below for details.
        Located in slot 0 Upper of ioDrive2 Adapter Controller SN:*********
        PCI:07:00.0, Slot Number:43
        Firmware v7.0.2, rev 108609 Public
        Geometry and capacity information not available.
        Internal temperature: 48.23 degC, max 48.72 degC

        ACTIVE WARNINGS:
            The ioMemory is currently running in a minimal state.
※5
1.2TBまでのモデルがPCIe x4とバスパワーで動作するのに対し,DuoがPCIe x8や外部電源を要求する理由がこれです。
※6
モジュールはOSを再起動することによっても,自動でロードされます。

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。株式会社インフィニットループ所属。

コメント

コメントの記入