2009年9月 2日

Marvell's 88SE6480 @Debian part4 HDD認識!

さて、前回に引き続きSUPERMICROの8ch SASカード、AOC-SASLP-MV8をDebianで使う記事です。
話を最初から振り返ると、自宅ファイルサーバを構築しようとするとどうしても大容量HDDであっても接続出来るHDDの台数の限界というものがありまして、うちの場合はオンボードで8portのSATAを使える有り難いマザーボードなのですが(現在グラフィックオンボードでSATAのポート数はおそらくこのマザーが最大数 GIGABYTE GA-G33-DS3R)、そうするとHDDを更に増設するにはSATA拡張ボードが必要になります。PCIのものであれば、玄人志向より2portと4portが安価で入手出来る価格で販売されておりますが、PCIeのものでは、2portは安価ですが4port以上になるといきなりRAID仕様の高価品になってしまいます。
そこで、見つけたのがSUPERMICROのAOC-SASLP-MV8というPCIe(X4)の8port SASカードで、RAID機能が省かれているために価格も18,000円程度と相当安く購入する事が可能です。 そこで早速飛びついて購入はしてみたわけですが、付属のドライバはRedHatやSUSE、FedoraなどのディストリビューションのみでDebianで使おうにもドキュメントにあるようなソースは付属しておらず、メーカーに問い合わせても提供していないと言われる始末。
Debianのパッケージの方で正式対応するまで待とうかとか諦めていた所に、ドライバの開発者がいることがわかり、情報を集め、ソースをコンパイルする所までが前回part3までのあらすじとなります。

今回はその続きになります。
ソースに付属のREADMEを読み進めると、ドライバのコンパイルが終わったらドライバのロードが必要との事で

# modprobe libsas
# insmod scst.ko
# insmod mvsas.ko


という感じでドライバのロードを行います。READMEではinsmod scst.koの行が抜けておりましたが、これがないとmvsas.koのロードに失敗するみたいですので追加しております。

この状態で
/sys/class/scsi_host
を参照すると、host0~host?までの複数のhost?が見えると思います。この中のおそらく一番番号が新しいものがこのカードにあたります。

# cat /sys/class/scsi_host/host16/target_mode

という風に実行して、
phy  dev sas address     attach dev type   attach sas address  target mode
0    5003048000805890                      0                   0             
1    5003048000805890                      0                   0             
2    5003048000805890                      0                   0             
3    5003048000805890                      0                   0             
4    5003048000805890                      0                   0             
5    5003048000805890                      0                   0             
6    5003048000805890                      0                   0             
7    5003048000805890                      0                   0 
の様に返ってくるデバイスがこのカードになります。ちゃんとphyが0~7までの8台分ありますね。 他のカードですと、target_modeが見つからない旨のエラーが出ると思います。
host番号を変えてみて下さい。

この状態でHDDが取り付けられていると
phy  dev sas address     attach dev type   attach sas address  target mode
0    5003048000805890                      0                   0             
1    5003048000805890                      0                   0             
2    5003048000805890                      0                   0             
3    5003048000805890                      0                   0             
4    5003048000805890                      0                   0             
5    5003048000805890                      0                   0             
6    5003048000805890                      0                   0             
7    5003048000805890    SATA END DEVICE   700000000000000     0   
この様にSATA END DEVICEとしてHDDが認識します。
あとは

# echo "enable 7" > /sys/class/scsi_host/host16/target_mode
(7の部分はphy番号が入る)
とする事で、phyをtarget_modeで動作させる事ができます。
解除は

# echo "disable 7" > /sys/class/scsi_host/host16/target_mode

となります。(今回はSASカードがhost16、HDDがphy7である事を前提に記述しております)
あとは

# echo "add 16:0:0:0:0 0" >/proc/scsi_tgt/groups/Default/devices

の様にしてやれば一通り完了となります。(16:0:0:0の部分はhost?の数字を入れてやる)
あとは、普通にHDDとしてfdiskなりで処理してやればokです。


2009年8月21日

Marvell's 88SE6480 @Debian part3 ドライバコンパイル(SUPERMICRO AOC-SASLP-MV8)

さて、しばらく経ってしまったが,Marvell's 88SE6480(SUPERMICRO AOC-SASLP-MV8)の方だけども、どうやらドライバのソースの方が出ているみたいだ。
http://thread.gmane.org/gmane.linux.scsi/49940/focus=49957を見ると
>This driver allows to use a SAS controller based on Marvell 88SE64xx or
>88SE94xx chips as a SAN storage server (target). More info you can find
>on the SCST page http://scst.sourceforge.net.

とのことである。

svnにて提供されているので、

#aptitude install svn

にて、まずはsvnのインストールから。別にsvnを入れなくても、直接https://scst.svn.sourceforge.net/svnroot/scstからファイルを根こそぎ持ってくれば一応は同じ物が手に入る。
まぁ、svnの方が楽に根こいでくれるので、svn使いましょう。

あとはkernelのソースも必要になりますね。

#aptitude search linux-source
#aptitude search linux-header

から、現在使用中のカーネルのバージョンのものを見つけてインストールします。
自分の環境では、2.6.30-1-686-bigmemなので対応するものをインストールします。

#aptitude install linux-source-2.6.30
#aptitude install linux-headers-2.6.30-1-686-bigmem

これで、/lib/modules/2.6.30-1-686-bigmemにカーネルまわりのソースがインストールされます。
あとは、svnにてダウンロードしたscstのソースのディレクトリにてmakeします。

#make scst scst_install

/usr/local/includes/scstにscst関連のインストールが行われます。
このあと、mvsas_tgtのディレクトリへ移ってmakeするわけですが、Makefileの方でscstのディレクトリの指定が違うっぽいので、編集します。


#SCST_INC_DIR := /usr/local/include/scst
#SCST_DIR := $(SCST_INC_DIR)
SCST_INC_DIR := $(SUBDIRS)/scst/include
SCST_DIR := $(shell pwd)/scst/src

このようになっておりますので、コメント行を変更します。

SCST_INC_DIR := /usr/local/include/scst
SCST_DIR := $(SCST_INC_DIR)
#SCST_INC_DIR := $(SUBDIRS)/scst/include
#SCST_DIR := $(shell pwd)/scst/src

これであとは、makeすればmvsas周りのドライバのコンパイルが行われます。

#make install

にて、mvsas.koが出来ます。
あとは/lib/modules/2.6.30-1-686-bigmem/kernel/drivers/scsiにscst.koとmvsas.koをコピーして完了かな?(?)

多分これでいいと思うけど、まだ確認してない。

あとはHDDをつないだあとに、targetモードにしなきゃならないんだっけかな。
その辺はまた次回、HDDをつないだらやってみようと思う。今回はドライバのコンパイルまでって事で。



2009年4月 2日

Marvell's 88SE6480 @Debian うまくいかず part2

その後いろいろ調べてわかった事

88SE6480のVENDOR ID/DEVICE IDは、11ab:6485だった模様。
11ab:6480はMV64460/64461/64462 System Controllerという名の示す通り、Marvell製のSystem ControllerチップのIDだった。なので、6485に対応したドライバが必要となったのだ。
そりゃ、うまくいかないわけですね。

って事で調べること...

http://article.gmane.org/gmane.linux.scsi/48651/
http://article.gmane.org/gmane.linux.scsi/48648/
http://article.gmane.org/gmane.linux.scsi/48649/
http://article.gmane.org/gmane.linux.scsi/48652/
http://article.gmane.org/gmane.linux.scsi/48650/

Marvell社のKe Wei氏によるNewsgroupsへの投稿で[PATCH x/5] mvsas : redesign the mvsas driver architecture.というものが見つかった。
kernel sourceにある、mvsas.cに対して、88SE6480をはじめとする幾種類ものストレージカードに対応させるべくパッチが投稿されていた。

さっそく、パッチを当てようとするが、どうしても
# patch -p0 < mvsas.patch
patching file b/drivers/scsi/mvsas/Kconfig
patching file b/drivers/scsi/mvsas/Makefile
patching file b/drivers/scsi/mvsas/mv_init.c
#
と、mv_init.cまでしか生成しないで終わってしまう。
投稿ごとにpatchファイル作って5個にすると
# patch -p0 < mvsas.patch1
patch: **** Only garbage was found in the patch input.
と、それどころではなくなってしまう。
まぁ、新規作成されるファイルに関してはそのまま書き出してやればいいかとも思うが。
今日の所はここまでにして、明日以降やろうと思う。

2009年3月26日

Marvell's 88SE6480 @Debian うまくいかず(SUPERMICRO AOC-SASLP-MV8)

ファイルサーバの方のHDD台数が増えてきたので、安価なSASボードを使ってやろうと、SUPERMICROのAOC-SASLP-MV8という、SAS 8portのボードを購入しました。

17800円で8portなのでやしーなーという感じで、サクっと買ってしまったのですが、苦労中です。 最初簡単にwebで調べた感じでは、LSI Logicの1068が載っている様だったので、サクっと動くかなというつもりでいたのですが、実はMervellの88SE6480というチップが載っていました。

さて、Debianの方は一応対応しているようで、mvsas.koというドライバがあるのですが、まずこいつが自動でロードされない。この時点でちょこっと危険な香り。
initrd.imgには入っているドライバなので、普通に考えると問題ないはずなんですよね。 mobprobe mvsasにて一応ロードされる様で、lsmodでも
# lsmod | grep mvsas
mvsas                     20104  0
libsas                      39396  1 mvsas
scsi_transport_sas   25280  2 mvsas,libsas
scsi_mod               136428  5 sd_mod,mvsas,libsas,libata,scsi_transport_sas
こんな感じで、いちおうは問題なさそうなんですがdmesgの方では一切反応なし。
どうもデバイス登録されてない模様。

とりあえず、カーネルをアップデートしてみるかって事で、sidにしてみたのですがサッパリ変わらず。

夜も更けてきたのでここいらで頓挫して、前の環境に戻しておやすみなさい。
どなたか情報持っていたらplease!!

#付属のCDには、FCとRedHatとSUSEのバイナリだけ入ってました。ソースあればコンパイルするんですけどねぇ。
SUPERMICROで提供されているドライバリンク

どうも、ASUSのPIKE 6480と、HighPointのRocketRAID2680も同じ88SE6480を積んでいる模様。まぁこれられの方はRAID機能有りなわけですが、提供されるドライバはSUPERMICROと同じ物っぽい。残念。