ioMemory(Fusion iO ioDrive)SX300をUbuntu14.04で使う

ioMemory SX300をUbuntu14.04で使うのに少し苦労したので,作業メモ
参考にしたのはこの辺りと,DellのUser Guide.
構成は以下
サーバ:Dell R730
ioMemory:SX300-3200,SX300-6400(各1台)
OS: Ubuntu 14.04 amd64 server

Fusion-io製品は,インストールしただけではSSDとして見えないので,

製品としてはDELLOEM版になるのでhttp://dell.fusionio.comから以下一式をダウンロード.
Ubuntu用は無いので,RedHat7用(Version 4.1.1 Dell)を利用(Select ProductはioMemory SX300を選び,Operating SystemではLinux_rhel-7,Select Virsionで4.1.1-Dellを選択).

Software Source:
iomemory-vsl4-4.1.1.297-1.0.el7.src.rpm
Utilities:
fio-common-4.1.1.297-1.0.el7.x86_64.rpm
fio-preinstall-4.1.1.297-1.0.el7.x86_64.rpm
fio-sysvinit-4.1.1.297-1.0.el7.x86_64.rpm
fio-util-4.1.1.297-1.0.el7.x86_64.rpm
libvsl-4.1.1.297-1.0.el7.x86_64.rpm
Firmware:
dell_iodrive_4.1.1-20140819.fff 21.50MB 28 Aug 2014
fio-firmware-dell_iodrive-4.1.1.20140819-1.noarch.rpm

ダウンロードして,ホームディレクトリに全部置いてある想定で作業します.
まずは,インストールに必要なパッケージがあるので以下インストール作業を少し.
まずカーネルバージョンを確認.

$uname -r 
3.13.0-46-generic

僕の環境では3.13.0-46-genericでした.

$sudo apt-get install build-essential rpm linux-headers-`uname -r` alien

以降の基本的な流れは一緒においてあるUser Guideと同じ.
Software Sourceのリビルド

$sudo rpmbuild --rebuild iomemory-vsl4-4.1.1.297-1.0.el7.src.rpm

ホームディレクトリのrpmbuildディレクトリ内にrpmが出来る.

$ls iomemory-vsl4* ~/rpmbuild/RPMS/x86_64/
iomemory-vsl4-3.13.0-46-generic-4.1.1.297-1.0.x86_64.rpm
iomemory-vsl4-config-3.13.0-46-generic-4.1.1.297-1.0.x86_64.rpm
iomemory-vsl4-source-4.1.1.297-1.0.x86_64.rpm

Ubuntudeb形式なので

$sudo alien ~/rpmbuild/RPMS/x86_64/iomemory-vsl4-*.rpm

debに変換して以下でインストール

$sudo dpkg -i iomemory-vsl4-*.deb
$sudo depmod -a

残りはまとめてインストール

$sudo alien libvsl-4*.rpm
$sudo dpkg -i libvsl_4*.deb
$sudo alien fio-*.rpm
$sudo dpkg -i fio-*.deb

うちの環境では/etc/sysconfig/iomemory-vsl4のパラメータを1個変更.
変えなくても平気かも.

sudo vi /etc/sysconfig/iomemory-vsl4
#ENABLED=1
コメントアウトを外す
ENABLED=1

反映の為に再起動.

$sudo reboot

起動後正常に認識されていれば,fio-statusコマンドでデバイスの詳細が表示される.
今回は2台なので2台表示される.

$sudo fio-status
Found 2 ioMemory devices in this system
Driver version: 4.1.1 build 297

Adapter: ioMono
	ioMemory SX300-6400, Product Number:XXXXX, SN:XXXXXXXXX
	PCIe Power limit threshold: 24.75W
	Connected ioMemory modules:
	  fct0:	Product Number:MM86C, SN:XXXXXXXXX

fct0	Attached
	ioMemory Adapter Controller, Product Number:XXXXX, SN:XXXXXXXXX
	Last Power Monitor Incident: 155252 sec
	PCI:04:00.0, Slot Number:5
	Firmware v8.7.6, rev 20140806 Public
	6400.00 GBytes device size
	Internal temperature: 46.76 degC, max 52.66 degC
	Reserve space status: Healthy; Reserves: 100.00%, warn at 10.00%
	Contained Virtual Partitions:
	  fioa:	ID:0, UUID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX

fioa	State: Online, Type: block device, Device: /dev/fioa
	ID:0, UUID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
	6400.00 GBytes device size

Adapter: ioMono
	ioMemory SX300-3200, Product Number:XXXXX, SN:XXXXXXXXX
	PCIe Power limit threshold: 24.75W
	Connected ioMemory modules:
	  fct1:	Product Number:FJYYT, SN:XXXXXXXXX

fct1	Attached
	ioMemory Adapter Controller, Product Number:XXXXX, SN:XXXXXXXXX
	Last Power Monitor Incident: 156670 sec
	PCI:82:00.0, Slot Number:4
	Firmware v8.7.6, rev 20140806 Public
	3200.00 GBytes device size
	Internal temperature: 43.80 degC, max 55.12 degC
	Reserve space status: Healthy; Reserves: 100.00%, warn at 10.00%
	Contained Virtual Partitions:
	  fiob:	ID:0, UUID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX

fiob	State: Online, Type: block device, Device: /dev/fiob
	ID:0, UUID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX
	3200.00 GBytes device size

Fusion-ioはxfsが速いと言う噂なのでxfsで設定.
後で測って見たけどext4に対して2割ほど速いかな.

$sudo apt-get install xfsprogs
sudo mkfs.xfs /dev/fioa
sudo mkfs.xfs /dev/fiob

$sudo mkdir /STORE1
$sudo mkdir /STORE2
$sudo mount /dev/fioa /STORE1
$sudo mount /dev/fiob /STORE2

起動時にマウントしたい場合は/etc/fstabを適宜編集.

Ubuntuでaptを高速ミラーにしたいなら

UbuntuをServer Location Japan, Timezone Asia/Tokyoでインストールすると、aptのリポジトリリストは

%cat /etc/apt/sources.list

deb http://jp.archive.ubuntu.com/ubuntu/ precise main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu/ precise main restricted
・
・
・

なんてリポジトリが並んでいる。
とりあえず、リポジトリは速いに越したことはないので以下のコマンドを打つと、日本最速ミラーを標榜するftp.jaist.ac.jpに/etc/apt/sources.listの中身を書き換え、オリジナルを.backという拡張子をつけて保存しておいてくれる。

sudo sed -i".back" -e 's/\/\/jp.archive.ubuntu.com/\/\/ftp.jaist.ac.jp\/pub\/Linux/g' /etc/apt/sources.list

以上

kumaコマンド作ってみた.

blコマンドを参考にkumaコマンドを作ってみた.特に後悔はしていない.

ソースは以下.

/* 
 * Ubuntu 12.0.4:
 * cc -O -o kuma kuma.c -lncursesw -ltermcap
 * Mac OSX
 * cc -O -o kuma kuma.c -lncurses -ltermcap
 * */

#include <locale.h>
#include <ncurses.h>
#include <signal.h>
#include <unistd.h>

#define KUMA_WIDTH 24
#define KUMA_HIGHT 12

void main(int argc, char *argv[])
{
    int x, y, lines;

    setlocale(LC_ALL,"");
    initscr();
    signal(SIGINT, SIG_IGN);
    noecho();
    leaveok(stdscr, TRUE);
    scrollok(stdscr, FALSE);
    y = LINES/2;
    for(x = COLS-KUMA_WIDTH; x >=0; x--){
        clear();
        if(add_kuma(x, y) == ERR) break;
        refresh();
        usleep(20000);
        if(x == 0) usleep(80000);
    }

    mvcur(0, COLS - 1, LINES - 1, 0);
    refresh();
    usleep(100000);
    endwin();
}


int add_kuma(int x, int y)
{
    int s;
    char *str[12];
    str[0] = "  ∩___∩";
    str[1] = "  | ノ   ヽ";
    str[2] = " / ●   ● | クマ──!!";
    str[3] = " |  ( _●_) ミ";
    str[4] = "彡、  |∪| 、`\";
    str[5] = " /_  ヽノ /´>  )";
    str[6] = "(__)   / (_/";
    str[7] = "  |     /";
    str[8] = " |  /\ \";
    str[9] = " | /   )  )";
    str[10]= " ∪     ( \";
    str[11]= "          \_) ";
    for(s = 0 ;s < KUMA_HIGHT-1;s++){
        if(mvaddstr(y+s, x, str[s]) == ERR) return ERR;
    }
    return 0;
}

Arduino1.0.1 SD Librarayのファイル文字数の制限

Arduino1.0.1に標準で付いているSD Libraryの文字数制限で余ったのでメモ.
ファイル名として指定できる文字数は拡張子も含めて12文字まで.
ドキュメントにも書いてなかったので,ライブラリの中を読んで確認.
ライブラリの中にコメントには書いてあった.

Ubuntu 10.04 LTSにRuby + MeCab環境を作る

研究?の一部業務?でRuby + MeCabにお世話になっているのですが,環境構築の手法を忘れて無駄に悩んだのでメモ.

今回の環境はUbuntu10.04 LTS
インストールで忘れがちなのは辞書.
UbuntuUTF-8な環境なのでmecab-ipadic-utf8を入れる.

sudo apt-get install ruby ruby-dev mecab mecab-utils libmecab-ruby mecab-ipadic-utf8

サンプルを動かす.

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'MeCab'
sentence = "本日は晴天なり"

begin

  print MeCab::VERSION, "\n"
  print sentence, "\n"
  c = MeCab::Tagger.new(ARGV.join(" "))

  puts c.parse(sentence)

  n = c.parseToNode(sentence)

  while n do
    print n.surface,  "\t", n.feature, "\t", n.cost, "\n"
    n = n.next
  end 
  print "EOS\n";

rescue
  print "RuntimeError: ", $!, "\n";
end

動作結果

0.98
本日は晴天なり
本日 名詞,副詞可能,*,*,*,*,本日,ホンジツ,ホンジツ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン
なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ
EOS
BOS/EOS,*,*,*,*,*,*,*,* 0
本日 名詞,副詞可能,*,*,*,*,本日,ホンジツ,ホンジツ 4470
は 助詞,係助詞,*,*,*,*,は,ハ,ワ 5345
晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン 11000
なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ 14387
BOS/EOS,*,*,*,*,*,*,*,* 12553
EOS

LS20031 GPSモジュールをXBeeエクスプローラUSBを使ってPCに繋ぐ.

LS20031をデバッグなどのためにアドホックにPCと繋ぎたい場合.
手元にXBeeエクスプローラUSBがあれば以下の様に接続するとPCとUSBシリアル通信が可能.


SynergyからSynergyKMへの変更(OSX 10.7 Lion)

先日Mac PortsSynergy導入したんですが,OSX 10.7 Lionを導入したらMac PortsSynergyのビルドに失敗するようになり,調べた限りはMacAPIの変更で対応できないって話が出ていたので,SynergyKMに変更しました.
構成は以前と同じで,サーバがMac OSX 10.7 Lion . クライアントはUbuntu10.04, synergycはapt-get upgradeの結果1.3.7です.
SynergyKMのサイトから最新版をダウンロードしてきます.
今日現在のバージョンは1.0b7.内包しているsynergyは1.3.1(Mac Portsとバージョンが一緒なんだけどなぁ).

インストールすると,コントロールパネルの”その他”のセクションに SynergyKMのパネルが出来ます.
パネルをクリックして"General"のタブから"Share my keyboard and mouse"を選択.

次に Server Configurationのタブで
mac-airとdev-ubuntuの2つのデスクトップを作成します.
Applyを押した後,"General"のタブから"Turn Synergy On"のボタンを押せばサーバが起動します.

クライアントのUbuntuでは前回同様

synergyc --name dev-ubuntu mac-air

Synergyクライアントを起動すれば終わりです.