SBCLを導入するものの使い方が全く分からず。。。
ともってたらこんな素晴らしいページを発見。
「初心者の為のLisp環境」
http://sites.google.com/site/shidoinfo/Home/programing-lang/関数型プログラミング言語/lisp/common-lisp/初心者の為のlisp環境
「Lispbox」
http://www.gigamonkeys.com/lispbox/
Windows の CLISP版をダウンロードし、zipを解凍して好きな場所に置くだけ。
後は lispbox.bat を起動。
(私の環境だと配置する時のパスにスペースが含まれているとエラーになりました win xp pro sp3)
Lispbox素晴らしい。僕みたいなド素人でも簡単に環境構築できた。
いざプログラム・・・と思ったら今度は久々過ぎてEmacsの操作がおぼつかない。。。
まずは復習から。
日本語入力できないけど気にしない。
-
このページの記事一覧
- 2010年6月3日木曜日 - Common Lisp 実行環境の構築
- 2010年5月30日日曜日 - iPhone による情報収集 2010/05版
- 2010年5月27日木曜日 - Common Lisp 入門
- 2010年5月23日日曜日 - 100年間デジタルデータを保持するためのガイドライン
- - 裁断した書籍をスキャンする時のポイント
- 2010年5月16日日曜日 - データストレージEXPO 2010
- - iPhone と 太陽電池
- - RedHat Enterprise Linux iSCSIコマンドまとめ(iscsiadm)
- 2010年5月15日土曜日 - RedHat における iSCSI 設定とマルチパス
- - ディスクの振動とパフォーマンス
Common Lisp 入門
事の発端。
私の仕事はいわゆるメーカー系のITインフラSEで、サーバやストレージ、それに付随するOSやミドルウェア導入の、提案~設計~構築~運用設計 を担当している。
業務上プログラミングをすることはほとんどなく、ちょっとしたバッチやシェルスクリプトを組むくらい。
学生時代はCを使ったシミュレーションプログラムを少し書いたくらいで、プログラマーとも言えないくらいのスキル。
YouTubeで見た番組の中で「LISP」というキーワードが出てきたので、これも何かの縁ということでLispを勉強してみることにする。
以下情報収集結果
Wikipedia Common Lisp
http://ja.wikipedia.org/wiki/Common_Lisp
2chのCommon Lisp 入門スレが非常に参考になります。
http://pc12.2ch.net/test/read.cgi/tech/1270370267/
上記より抜粋。
>((お勧めの Common Lisp 処理系)
>(SBCL: http://sbcl.sourceforge.net/
>:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
>:開発 活発
>:日本語 使える(UCS4, UTF8, EUC)
>:特徴 一番お勧めのコンパイラ。)
>ANSI Commn Lisp 仕様関係
>http://www.lisp.org/HyperSpec/FrontMatter/index.html
>http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
>http://lispdoc.com/
>http://clqr.berlios.de/index.html
>日本語のチュートリアル
>http://www.fireproject.jp/feature/common-lisp/index.html
>http://www.geocities.jp/m_hiroi/xyzzy_lisp.html
>http://home.soka.ac.jp/~unemi/LispProlog/
>http://www.haun.org/kent/lisp1/
>http://wisdom.sakura.ne.jp/programming/lisp/index.html
教科書はこちら。
私の仕事はいわゆるメーカー系のITインフラSEで、サーバやストレージ、それに付随するOSやミドルウェア導入の、提案~設計~構築~運用設計 を担当している。
業務上プログラミングをすることはほとんどなく、ちょっとしたバッチやシェルスクリプトを組むくらい。
学生時代はCを使ったシミュレーションプログラムを少し書いたくらいで、プログラマーとも言えないくらいのスキル。
YouTubeで見た番組の中で「LISP」というキーワードが出てきたので、これも何かの縁ということでLispを勉強してみることにする。
以下情報収集結果
Wikipedia Common Lisp
http://ja.wikipedia.org/wiki/Common_Lisp
2chのCommon Lisp 入門スレが非常に参考になります。
http://pc12.2ch.net/test/read.cgi/tech/1270370267/
上記より抜粋。
>((お勧めの Common Lisp 処理系)
>(SBCL: http://sbcl.sourceforge.net/
>:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
>:開発 活発
>:日本語 使える(UCS4, UTF8, EUC)
>:特徴 一番お勧めのコンパイラ。)
>ANSI Commn Lisp 仕様関係
>http://www.lisp.org/HyperSpec/FrontMatter/index.html
>http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
>http://lispdoc.com/
>http://clqr.berlios.de/index.html
>日本語のチュートリアル
>http://www.fireproject.jp/feature/common-lisp/index.html
>http://www.geocities.jp/m_hiroi/xyzzy_lisp.html
>http://home.soka.ac.jp/~unemi/LispProlog/
>http://www.haun.org/kent/lisp1/
>http://wisdom.sakura.ne.jp/programming/lisp/index.html
教科書はこちら。
100年間デジタルデータを保持するためのガイドライン
ストレージネットワーキング・インダストリ・アソシエーション(Storage Networking Industry Association 略称=SNIA ) が公開しているデータ長期保存のためのガイドライン。
http://www.snia-j.org/tech/save/hb.html
情報を記録する媒体は遥か古代から進化し、記録密度は飛躍的な発展を遂げてきた。
石版 →羊皮紙→紙→アナログ磁気メディア→デジタル磁気メディア
しかし記録密度が上がるにつれ、記憶可能な時間は短くなっている。特に現代のデジタル磁気メディアは複数の要因により長期保存にはあまり向いていない。
情報を記録する媒体は遥か古代から進化し、記録密度は飛躍的な発展を遂げてきた。
石版 →羊皮紙→紙→アナログ磁気メディア→デジタル磁気メディア
しかし記録密度が上がるにつれ、記憶可能な時間は短くなっている。特に現代のデジタル磁気メディアは複数の要因により長期保存にはあまり向いていない。
「データを保存する」とは、SNIAの定義から引用すると、
1.物理的にアクセス可能
2.論理的に利用可能
3.利用したデータに破損がない
この3つの条件を満たした状態を「データを保存する」と定義している。
数年単位で考えるならば、それほど難しいハードルではないが、50年、100年という単位で考えると実に難しい。
紹介したドキュメントにはデータの長期保存について、考慮すべき要因が網羅的に記載されているので、興味があればご一読を。
データストレージEXPO 2010
今年も行ってきました。
感想としてはIsilonやXIVのようなグリッド型のストレージが増えている印象でした。
以前紹介したNexsanも出展していて、より高密度なストレージをリリースしたようです。
全体的な流れとしては、オールインワンのグリッドタイプのトレージ、Nexsanのようなシンプル低価格なストレージ、
シンプルなストレージをコントロールするNASヘッド製品という製品が多く紹介されており、
日立やNetAppは従来製品の拡張が主な印象。
ただ目玉製品や先進的なもには無く、集客は同日に開催されていたクラウドEXPOやWEBマーケティングEXPOに比べるとかなり劣っていました。
実際ストレージの展示会は地味になりがちなのは昔からなのでしょうが無い感じもしますが。
クラウドやWEBマーケティングの混雑っぷりはすごかったです。
ここ5年位は毎年EXPOには行っていましたがここまで混んでいるにはみた事がない。
Yahoo!の検索連動型の広告のブースなどは道まで人がはみ出しており通り抜けるのも困難なほどでした。
感想としてはIsilonやXIVのようなグリッド型のストレージが増えている印象でした。
以前紹介したNexsanも出展していて、より高密度なストレージをリリースしたようです。
全体的な流れとしては、オールインワンのグリッドタイプのトレージ、Nexsanのようなシンプル低価格なストレージ、
シンプルなストレージをコントロールするNASヘッド製品という製品が多く紹介されており、
日立やNetAppは従来製品の拡張が主な印象。
ただ目玉製品や先進的なもには無く、集客は同日に開催されていたクラウドEXPOやWEBマーケティングEXPOに比べるとかなり劣っていました。
実際ストレージの展示会は地味になりがちなのは昔からなのでしょうが無い感じもしますが。
クラウドやWEBマーケティングの混雑っぷりはすごかったです。
ここ5年位は毎年EXPOには行っていましたがここまで混んでいるにはみた事がない。
Yahoo!の検索連動型の広告のブースなどは道まで人がはみ出しており通り抜けるのも困難なほどでした。
時刻:
16:57
iPhone と 太陽電池
最近では会社のセキュリティが厳しく移動中にノートPCや資料を開く事がなってしまった。
PCや資料の持ち出しにも厳しいし事前申請が必要なためだ。
PCには何重ものセキュリティがかけられており、紛失したとしてもデータの持ち出しはほぼ不可能に近い。にもかかわらず紛失したら厳しい処罰を受けてしまう。
そのため最近はPCの持ち出しは一切行わず、資料も事前にメールもで顧客に送ってしまっている。
移動中はもっぱらiphoneをいじっていることになってしまった。いろんなところで言われているが、iPhoneはバッテリーが弱い。移動時間が短ければあまり気にならないのだが、飛行機に乗ったり、遠距離でも泊りになった場合などiphoneのバッテリー残量が心もとない。
PCや資料の持ち出しにも厳しいし事前申請が必要なためだ。
PCには何重ものセキュリティがかけられており、紛失したとしてもデータの持ち出しはほぼ不可能に近い。にもかかわらず紛失したら厳しい処罰を受けてしまう。
そのため最近はPCの持ち出しは一切行わず、資料も事前にメールもで顧客に送ってしまっている。
移動中はもっぱらiphoneをいじっていることになってしまった。いろんなところで言われているが、iPhoneはバッテリーが弱い。移動時間が短ければあまり気にならないのだが、飛行機に乗ったり、遠距離でも泊りになった場合などiphoneのバッテリー残量が心もとない。
そこで使っているのがこれ、
米軍でも採用されているようで耐久性や使い勝手に定評があるそうです。
これに単三のエネループを二本取り付け、太陽光に晒しておくと天気のいい日なら4〜5時間ほどで満タンにできる。
これに単三のエネループを二本取り付け、太陽光に晒しておくと天気のいい日なら4〜5時間ほどで満タンにできる。
使い方やアクセサリを販売・紹介
この前実験した時は東京〜東広島間の新幹線、片道約3時間の行き(名古屋くらいまで晴天、それ以降曇り)に空のエネループ二本を充電し、帰りに残量50%のiphoneを繋いで充電ししたところ、東京につく頃には90%位まで充電できていた(帰りは半分位は寝ていて、それ以外はiphoneでニュースみたりしていました)
本体にUSBポートがあり直接充電できるのが便利です。他にもPSPやDS、各社のケータイにも使えるそうです。
付属に金属の洗濯バサミ+フックみたいなものと、引っかけ金具のついた吸盤が付属しているので、電車内ではこの吸盤を窓にくっつけて充電していました。
本体はソフトタイプのソーラーパネルなので洗濯バサミを使えばカバンに巻いたりできるのでアウトドアに使えそうです(米軍ではバックパックに取りつけているようです)
災害などの非常時にも使えそうです。
USBインターフェースがないバージョンで、充電能力と設置できる電池の本数が増えたもの
時刻:
12:20
RedHat Enterprise Linux iSCSIコマンドまとめ(iscsiadm)
iSCSIクライアントとして操作する場合の操作方法。
iscsiadm コマンドの使い方
iscsiadm コマンドの使い方
RedHat における iSCSI 設定とマルチパス
こちらも参考にしてみてください。
---------------------------------------------
参考>> 仮想環境を使って簡単にRHEL6のiscsiマルチパスを検証する
---------------------------------------------
Linux で iSCSI を使う方法と、マルチパス化する方法について記載する。
クライアント:RedHat Enterprise Linux 5.3
ストレージ:Solaris10 ZFS iSCSI
テストするSolaris10環境がNIC1枚しかないので少々工夫する。
>ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843 mtu 1500 index 2
inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
ether 0:14:4f:4a:bb:6a
vboxnet0: flags=1000843 mtu 1500 index 3
inet 192.168.56.1 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:79:a1:e4
論理インターフェースを作成し、IPを割り当てる。iSCSIはこの論理IPに対してアクセスする。
>ifconfig e1000g0:1 plumb
>ifconfig e1000g0:2 plumb
>ifconfig e1000g0:3 plumb
>ifconfig e1000g0:4 plumb
>ifconfig e1000g0:1 192.168.1.201 netmask 255.255.255.0 up
>ifconfig e1000g0:2 192.168.1.202 netmask 255.255.255.0 up
>ifconfig e1000g0:3 192.168.1.203 netmask 255.255.255.0 up
>ifconfig e1000g0:4 192.168.1.204 netmask 255.255.255.0 up
>ifconfig -a
lo0: flags=2001000849 mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843 mtu 1500 index 2
inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
ether 0:14:4f:4a:bb:6a
e1000g0:1: flags=1000843 mtu 1500 index 2
inet 192.168.1.201 netmask ffffff00 broadcast 192.168.1.255
e1000g0:2: flags=1000843 mtu 1500 index 2
inet 192.168.1.202 netmask ffffff00 broadcast 192.168.1.255
e1000g0:3: flags=1000843 mtu 1500 index 2
inet 192.168.1.203 netmask ffffff00 broadcast 192.168.1.255
e1000g0:4: flags=1000843 mtu 1500 index 2
inet 192.168.1.204 netmask ffffff00 broadcast 192.168.1.255
vboxnet0: flags=1000843 mtu 1500 index 3
inet 192.168.56.1 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:79:a1:e4
>svcs -a |grep iscsi
disabled 18:17:06 svc:/system/iscsitgt:default
>svcadm enable svc:/system/iscsitgt:default
>svcs -a |grep iscsi
online 18:17:13 svc:/network/iscsi/initiator:default
>zfs create spool/iscsi
>zfs create -V 10gb spool/iscsi/iscsi01
>zfs list |grep iscsi
spool/iscsi 10.0G 4.22T 31.4K /spool/iscsi
spool/iscsi/iscsi01 10G 4.22T 23.9K -
>iscsitadm modify admin -d /spool/iscsi
>iscsitadm show admin
iscsitadm:
Base Directory: /spool/iscsi
CHAP Name: Not set
RADIUS Access: Not set
RADIUS Server: Not set
iSNS Access: Not set
iSNS Server: Not set
iSNS Server Status: Not applicable
Fast Write ACK: Not set
(5)iSCSIボリュームの有効化
>iscsitadm show stats
operations bandwidth
device read write read write
-------------------- ----- ----- ----- -----
>iscsitadm list target
表示なし
>zfs set shareiscsi=on spool/iscsi/iscsi01
>iscsitadm show stats
operations bandwidth
device read write read write
-------------------- ----- ----- ----- -----
spool/iscsi/iscsi01 0 0 0K 0K
>iscsitadm list target -v
Target: spool/iscsi/iscsi01
iSCSI Name: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
Alias: spool/iscsi/iscsi01
Connections: 0
ACL list:
TPGT list:
LUN information:
LUN: 0
GUID: 0
VID: SUN
PID: SOLARIS
Type: disk
Size: 10G
Backing store: /dev/zvol/rdsk/spool/iscsi/iscsi01
Status: online
# uname -a
Linux rhel5-xvm 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
iscsiイニシエータ
# rpm -qa |grep iscsi
iscsi-initiator-utils-6.2.0.868-0.18.el5
マルチパス
# rpm -qa |grep multi
device-mapper-multipath-0.4.7-23.el5
インストールメディアに含まれているので、インストールされていない場合はインストールしておく。
初期は何も登録されていない。
# iscsiadm -m node
iscsiadm: no records found!
一つのIPを認識させると、付属する他のIPポータルも検索してくれる(余分なもののついてくる
# iscsiadm --mode discovery --type sendtargets --portal 192.168.1.201
192.168.1.10:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.56.1:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
余分なターゲットポータルを削除する。
# iscsiadm -m node -o delete -T iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562 -p 192.168.56.1:3260,1
# iscsiadm -m node -o delete -T iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562 -p 192.168.1.10:3260,1
# iscsiadm -m node
192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
最初は何もログインしていない
# iscsiadm -m session
iscsiadm: No active sessions.
ログインする
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.203,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.201,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.204,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.202,3260]
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.203,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.201,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.204,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.202,3260]: successful
ログインしたセッションを確認
# iscsiadm -m session
tcp: [6] 192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [7] 192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [8] 192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [9] 192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
ここで余分なセッションへログインしている場合は以下でログオフしておく
# iscsiadm -m node -p 192.168.XX.XX:3260,1 --logout
* iSCSI のセッションタイムアウトについて
パスにエラーが発生した場合、ターゲットポータルから何秒応答がなかったらエラーとみなすかを設定する必要がある。
ここでエラーをハンドルし、マルチパスデーモンに渡され、上位でパスの切り替えが行われる。
標準で120秒でエラーとなるように設定されている。
これを変更するには、
/etc/iscsi/iscsid.conf を編集
node.session.timeo.replacement_timeout = 120
デフォルトで120秒。ここを短くすることでフェイルオーバー速度を上げることができる。
ただし、短くしすぎると高負荷時に頻繁にパスの切り替えが発生してしまうので注意が必要。
認識したディスクを確認
# fdisk -l
----------------------------------
Disk /dev/hda: 2199.0 GB, 2199022206976 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 65 522081 83 Linux
/dev/hda2 66 326 2096482+ 82 Linux swap / Solaris
/dev/hda3 327 267349 2144862247+ 83 Linux
Disk /dev/sda: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sda は正常な領域テーブルを含んでいません
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdb は正常な領域テーブルを含んでいません
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdc は正常な領域テーブルを含んでいません
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdd は正常な領域テーブルを含んでいません
----------------------------------
一つのディスクが複数の経路で見えていることが分かる。
ここからの設定は基本的にFC-SANでのマルチパス設定と変わらない。
device-mapper multipathを使用する。詳細は以前のエントリーを参照してください。
マルチパス対象となるデバイスのwwidを識別する。
二つの方法がある
[1.by-idを確認する]
# ls -l /dev/disk/by-id/
合計 0
lrwxrwxrwx 1 root root 9 5月 16 2010 ata-VBOX_CD-ROM_VB2-01700376 -> ../../hdc
lrwxrwxrwx 1 root root 9 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01 -> ../../hda
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 5月 15 19:46 scsi-3600144f04bee77860000144f4abb6a00 -> ../../sdc
ここの表示は、fdisk -l で表示される全てのパスは表示されないので注意。
ただし、fdiskで表示されたデバイス名(sda, sdb, sdc, sdd)のどれかが、by-idに表示されるので、
ここでは 3600144f04bee77860000144f4abb6a00 がwwid だとわかる(scsi- の部分はいらない)
[2.scsiコマンドで確認する]
# /sbin/scsi_id -g -u -s /block/sda
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdb
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdc
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdd
3600144f04bee77860000144f4abb6a00
/etc/multipath.conf を編集する。
------------------------------------
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
blacklist_exceptions {
wwid "3600144f04bee77860000144f4abb6a00"
}
defaults {
user_friendly_names yes
}
multipaths {
multipath {
wwid "3600144f04bee77860000144f4abb6a00"
alias zfs-iscsi01
path_grouping_policy multibus
path_checker readsector0
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
}
----------------------------------------
# multipath -ll
zfs-iscsi01 (3600144f04bee77860000144f4abb6a00) dm-0 SUN,SOLARIS
[size=10G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=4][enabled]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 1:0:0:0 sdb 8:16 [active][ready]
\_ 2:0:0:0 sdc 8:32 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
これでマルチパスが設定されていることが確認できる。
# multipath -v 3
dm-0: blacklisted
fd0: blacklisted
hda: blacklisted
hdc: blacklisted
md0: blacklisted
ram0: blacklisted
ram10: blacklisted
ram11: blacklisted
ram12: blacklisted
ram13: blacklisted
ram14: blacklisted
ram15: blacklisted
ram1: blacklisted
ram2: blacklisted
ram3: blacklisted
ram4: blacklisted
ram5: blacklisted
ram6: blacklisted
ram7: blacklisted
ram8: blacklisted
ram9: blacklisted
sda: not found in pathvec
sda: mask = 0x1f
sda: bus = 1
sda: dev_t = 8:0
sda: size = 20971520
sda: vendor = SUN
sda: product = SOLARIS
sda: rev = 1
sda: h:b:t:l = 0:0:0:0
sda: serial =
sda: path checker = readsector0 (config file default)
sda: state = 2
sda: getprio = NULL (internal default)
sda: prio = 1
sda: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sda: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdb: not found in pathvec
sdb: mask = 0x1f
sdb: bus = 1
sdb: dev_t = 8:16
sdb: size = 20971520
sdb: vendor = SUN
sdb: product = SOLARIS
sdb: rev = 1
sdb: h:b:t:l = 1:0:0:0
sdb: serial =
sdb: path checker = readsector0 (config file default)
sdb: state = 2
sdb: getprio = NULL (internal default)
sdb: prio = 1
sdb: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdb: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdc: not found in pathvec
sdc: mask = 0x1f
sdc: bus = 1
sdc: dev_t = 8:32
sdc: size = 20971520
sdc: vendor = SUN
sdc: product = SOLARIS
sdc: rev = 1
sdc: h:b:t:l = 2:0:0:0
sdc: serial =
sdc: path checker = readsector0 (config file default)
sdc: state = 2
sdc: getprio = NULL (internal default)
sdc: prio = 1
sdc: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdc: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdd: not found in pathvec
sdd: mask = 0x1f
sdd: bus = 1
sdd: dev_t = 8:48
sdd: size = 20971520
sdd: vendor = SUN
sdd: product = SOLARIS
sdd: rev = 1
sdd: h:b:t:l = 3:0:0:0
sdd: serial =
sdd: path checker = readsector0 (config file default)
sdd: state = 2
sdd: getprio = NULL (internal default)
sdd: prio = 1
sdd: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdd: uid = 3600144f04bee77860000144f4abb6a00 (callout)
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/pr
3600144f04bee77860000144f4abb6a00 0:0:0:0 sda 8:0 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 1:0:0:0 sdb 8:16 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 2:0:0:0 sdc 8:32 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 3:0:0:0 sdd 8:48 1 [undef][ready] SUN,SOL
params = 1 queue_if_no_path 0 1 1 round-robin 0 4 1 8:0 1000 8:16 1000 8:32 1000 8:48 1000
status = 2 0 0 0 1 1 E 0 4 0 8:0 A 0 8:16 A 0 8:32 A 0 8:48 A 0
3600144f04bee77860000144f4abb6a00: exception-listed
sda: ownership set to zfs-iscsi01
sda: not found in pathvec
sda: mask = 0xc
sda: state = 2
sda: prio = 1
sdb: ownership set to zfs-iscsi01
sdb: not found in pathvec
sdb: mask = 0xc
sdb: state = 2
sdb: prio = 1
sdc: ownership set to zfs-iscsi01
sdc: not found in pathvec
sdc: mask = 0xc
sdc: state = 2
sdc: prio = 1
sdd: ownership set to zfs-iscsi01
sdd: not found in pathvec
sdd: mask = 0xc
sdd: state = 2
sdd: prio = 1
zfs-iscsi01: pgfailback = -1 (LUN setting)
zfs-iscsi01: pgpolicy = multibus (LUN setting)
zfs-iscsi01: selector = round-robin 0 (LUN setting)
zfs-iscsi01: features = 0 (internal default)
zfs-iscsi01: hwhandler = 0 (internal default)
zfs-iscsi01: rr_weight = 2 (LUN setting)
zfs-iscsi01: minio = 1000 (config file default)
zfs-iscsi01: no_path_retry = 5 (multipath setting)
pg_timeout = NONE (internal default)
zfs-iscsi01: set ACT_NOTHING (map unchanged)
3600144f04bee77860000144f4abb6a00: exception-listed
3600144f04bee77860000144f4abb6a00: exception-listed
3600144f04bee77860000144f4abb6a00: exception-listed
# ll /dev/mpath/
合計 0
lrwxrwxrwx 1 root root 7 5月 15 20:23 mpath0 -> ../dm-0
# parted /dev/mpath/mpath0
GNU Parted 1.8.1
/dev/dm-0 を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print
エラー: /dev/dm-0 を開けません。ディスクラベルが認識できません。
(parted) mklabel gpt
(parted) print
モデル: Linux device-mapper (dm)
ディスク /dev/dm-0: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
(parted) mkpart primary 0 10G
(parted) print
モデル: Linux device-mapper (dm)
ディスク /dev/dm-0: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 17.4kB 10.7GB 10.7GB primary
(parted) quit
# kpartx -a /dev/mpath/mpath0
# ll /dev/mpath/
合計 0
lrwxrwxrwx 1 root root 7 5月 15 20:23 mpath0 -> ../dm-0
lrwxrwxrwx 1 root root 7 5月 15 21:11 mpath0p1 -> ../dm-2
# mkfs -t ext3 /dev/mpath/mpath0p1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621431 blocks
131071 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mkdir /mnt/mpath0
# mount -t ext3 /dev/mpath/mpath0p1 /mnt/mpath0
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda3 2.0T 2.6G 1.9T 1% /
/dev/hda1 494M 16M 453M 4% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/dm-2 9.9G 151M 9.2G 2% /mnt/mpath0
以上で手順は終了。
後は、パス切断を行ってテストを行ってください。
---------------------------------------------
参考>> 仮想環境を使って簡単にRHEL6のiscsiマルチパスを検証する
---------------------------------------------
Linux で iSCSI を使う方法と、マルチパス化する方法について記載する。
クライアント:RedHat Enterprise Linux 5.3
ストレージ:Solaris10 ZFS iSCSI
Solaris10側でのiSCSIの準備
(1) ネットワーク環境
テストするSolaris10環境がNIC1枚しかないので少々工夫する。
>ifconfig -a
lo0: flags=2001000849
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843
inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
ether 0:14:4f:4a:bb:6a
vboxnet0: flags=1000843
inet 192.168.56.1 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:79:a1:e4
論理インターフェースを作成し、IPを割り当てる。iSCSIはこの論理IPに対してアクセスする。
>ifconfig e1000g0:1 plumb
>ifconfig e1000g0:2 plumb
>ifconfig e1000g0:3 plumb
>ifconfig e1000g0:4 plumb
>ifconfig e1000g0:1 192.168.1.201 netmask 255.255.255.0 up
>ifconfig e1000g0:2 192.168.1.202 netmask 255.255.255.0 up
>ifconfig e1000g0:3 192.168.1.203 netmask 255.255.255.0 up
>ifconfig e1000g0:4 192.168.1.204 netmask 255.255.255.0 up
>ifconfig -a
lo0: flags=2001000849
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843
inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
ether 0:14:4f:4a:bb:6a
e1000g0:1: flags=1000843
inet 192.168.1.201 netmask ffffff00 broadcast 192.168.1.255
e1000g0:2: flags=1000843
inet 192.168.1.202 netmask ffffff00 broadcast 192.168.1.255
e1000g0:3: flags=1000843
inet 192.168.1.203 netmask ffffff00 broadcast 192.168.1.255
e1000g0:4: flags=1000843
inet 192.168.1.204 netmask ffffff00 broadcast 192.168.1.255
vboxnet0: flags=1000843
inet 192.168.56.1 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:79:a1:e4
(2)iSCSIターゲットの起動
>svcs -a |grep iscsi
disabled 18:17:06 svc:/system/iscsitgt:default
>svcadm enable svc:/system/iscsitgt:default
>svcs -a |grep iscsi
online 18:17:13 svc:/network/iscsi/initiator:default
(3)iSCSIボリュームの作成
>zfs create spool/iscsi
>zfs create -V 10gb spool/iscsi/iscsi01
>zfs list |grep iscsi
spool/iscsi 10.0G 4.22T 31.4K /spool/iscsi
spool/iscsi/iscsi01 10G 4.22T 23.9K -
(4)iSCSIの基本設定
>iscsitadm modify admin -d /spool/iscsi
>iscsitadm show admin
iscsitadm:
Base Directory: /spool/iscsi
CHAP Name: Not set
RADIUS Access: Not set
RADIUS Server: Not set
iSNS Access: Not set
iSNS Server: Not set
iSNS Server Status: Not applicable
Fast Write ACK: Not set
(5)iSCSIボリュームの有効化
>iscsitadm show stats
operations bandwidth
device read write read write
-------------------- ----- ----- ----- -----
>iscsitadm list target
表示なし
>zfs set shareiscsi=on spool/iscsi/iscsi01
>iscsitadm show stats
operations bandwidth
device read write read write
-------------------- ----- ----- ----- -----
spool/iscsi/iscsi01 0 0 0K 0K
>iscsitadm list target -v
Target: spool/iscsi/iscsi01
iSCSI Name: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
Alias: spool/iscsi/iscsi01
Connections: 0
ACL list:
TPGT list:
LUN information:
LUN: 0
GUID: 0
VID: SUN
PID: SOLARIS
Type: disk
Size: 10G
Backing store: /dev/zvol/rdsk/spool/iscsi/iscsi01
Status: online
Linux側の作業
# uname -a
Linux rhel5-xvm 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
(1)事前パッケージの準備
iscsiイニシエータ
# rpm -qa |grep iscsi
iscsi-initiator-utils-6.2.0.868-0.18.el5
マルチパス
# rpm -qa |grep multi
device-mapper-multipath-0.4.7-23.el5
インストールメディアに含まれているので、インストールされていない場合はインストールしておく。
(2) LinuxからiSCSIターゲットを認識させる
初期は何も登録されていない。
# iscsiadm -m node
iscsiadm: no records found!
一つのIPを認識させると、付属する他のIPポータルも検索してくれる(余分なもののついてくる
# iscsiadm --mode discovery --type sendtargets --portal 192.168.1.201
192.168.1.10:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.56.1:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
余分なターゲットポータルを削除する。
# iscsiadm -m node -o delete -T iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562 -p 192.168.56.1:3260,1
# iscsiadm -m node -o delete -T iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562 -p 192.168.1.10:3260,1
# iscsiadm -m node
192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
(3)ターゲットへログインする
最初は何もログインしていない
# iscsiadm -m session
iscsiadm: No active sessions.
ログインする
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.203,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.201,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.204,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.202,3260]
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.203,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.201,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.204,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.202,3260]: successful
ログインしたセッションを確認
# iscsiadm -m session
tcp: [6] 192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [7] 192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [8] 192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [9] 192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
ここで余分なセッションへログインしている場合は以下でログオフしておく
# iscsiadm -m node -p 192.168.XX.XX:3260,1 --logout
* iSCSI のセッションタイムアウトについて
パスにエラーが発生した場合、ターゲットポータルから何秒応答がなかったらエラーとみなすかを設定する必要がある。
ここでエラーをハンドルし、マルチパスデーモンに渡され、上位でパスの切り替えが行われる。
標準で120秒でエラーとなるように設定されている。
これを変更するには、
/etc/iscsi/iscsid.conf を編集
node.session.timeo.replacement_timeout = 120
デフォルトで120秒。ここを短くすることでフェイルオーバー速度を上げることができる。
ただし、短くしすぎると高負荷時に頻繁にパスの切り替えが発生してしまうので注意が必要。
(4)ディスクの確認
認識したディスクを確認
# fdisk -l
----------------------------------
Disk /dev/hda: 2199.0 GB, 2199022206976 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 65 522081 83 Linux
/dev/hda2 66 326 2096482+ 82 Linux swap / Solaris
/dev/hda3 327 267349 2144862247+ 83 Linux
Disk /dev/sda: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sda は正常な領域テーブルを含んでいません
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdb は正常な領域テーブルを含んでいません
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdc は正常な領域テーブルを含んでいません
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdd は正常な領域テーブルを含んでいません
----------------------------------
一つのディスクが複数の経路で見えていることが分かる。
(5)マルチパスの設定
ここからの設定は基本的にFC-SANでのマルチパス設定と変わらない。
device-mapper multipathを使用する。詳細は以前のエントリーを参照してください。
マルチパス対象となるデバイスのwwidを識別する。
二つの方法がある
[1.by-idを確認する]
# ls -l /dev/disk/by-id/
合計 0
lrwxrwxrwx 1 root root 9 5月 16 2010 ata-VBOX_CD-ROM_VB2-01700376 -> ../../hdc
lrwxrwxrwx 1 root root 9 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01 -> ../../hda
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 5月 15 19:46 scsi-3600144f04bee77860000144f4abb6a00 -> ../../sdc
ここの表示は、fdisk -l で表示される全てのパスは表示されないので注意。
ただし、fdiskで表示されたデバイス名(sda, sdb, sdc, sdd)のどれかが、by-idに表示されるので、
ここでは 3600144f04bee77860000144f4abb6a00 がwwid だとわかる(scsi- の部分はいらない)
[2.scsiコマンドで確認する]
# /sbin/scsi_id -g -u -s /block/sda
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdb
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdc
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdd
3600144f04bee77860000144f4abb6a00
/etc/multipath.conf を編集する。
------------------------------------
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
blacklist_exceptions {
wwid "3600144f04bee77860000144f4abb6a00"
}
defaults {
user_friendly_names yes
}
multipaths {
multipath {
wwid "3600144f04bee77860000144f4abb6a00"
alias zfs-iscsi01
path_grouping_policy multibus
path_checker readsector0
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
}
----------------------------------------
# multipath -ll
zfs-iscsi01 (3600144f04bee77860000144f4abb6a00) dm-0 SUN,SOLARIS
[size=10G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=4][enabled]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 1:0:0:0 sdb 8:16 [active][ready]
\_ 2:0:0:0 sdc 8:32 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
これでマルチパスが設定されていることが確認できる。
# multipath -v 3
dm-0: blacklisted
fd0: blacklisted
hda: blacklisted
hdc: blacklisted
md0: blacklisted
ram0: blacklisted
ram10: blacklisted
ram11: blacklisted
ram12: blacklisted
ram13: blacklisted
ram14: blacklisted
ram15: blacklisted
ram1: blacklisted
ram2: blacklisted
ram3: blacklisted
ram4: blacklisted
ram5: blacklisted
ram6: blacklisted
ram7: blacklisted
ram8: blacklisted
ram9: blacklisted
sda: not found in pathvec
sda: mask = 0x1f
sda: bus = 1
sda: dev_t = 8:0
sda: size = 20971520
sda: vendor = SUN
sda: product = SOLARIS
sda: rev = 1
sda: h:b:t:l = 0:0:0:0
sda: serial =
sda: path checker = readsector0 (config file default)
sda: state = 2
sda: getprio = NULL (internal default)
sda: prio = 1
sda: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sda: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdb: not found in pathvec
sdb: mask = 0x1f
sdb: bus = 1
sdb: dev_t = 8:16
sdb: size = 20971520
sdb: vendor = SUN
sdb: product = SOLARIS
sdb: rev = 1
sdb: h:b:t:l = 1:0:0:0
sdb: serial =
sdb: path checker = readsector0 (config file default)
sdb: state = 2
sdb: getprio = NULL (internal default)
sdb: prio = 1
sdb: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdb: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdc: not found in pathvec
sdc: mask = 0x1f
sdc: bus = 1
sdc: dev_t = 8:32
sdc: size = 20971520
sdc: vendor = SUN
sdc: product = SOLARIS
sdc: rev = 1
sdc: h:b:t:l = 2:0:0:0
sdc: serial =
sdc: path checker = readsector0 (config file default)
sdc: state = 2
sdc: getprio = NULL (internal default)
sdc: prio = 1
sdc: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdc: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdd: not found in pathvec
sdd: mask = 0x1f
sdd: bus = 1
sdd: dev_t = 8:48
sdd: size = 20971520
sdd: vendor = SUN
sdd: product = SOLARIS
sdd: rev = 1
sdd: h:b:t:l = 3:0:0:0
sdd: serial =
sdd: path checker = readsector0 (config file default)
sdd: state = 2
sdd: getprio = NULL (internal default)
sdd: prio = 1
sdd: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdd: uid = 3600144f04bee77860000144f4abb6a00 (callout)
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/pr
3600144f04bee77860000144f4abb6a00 0:0:0:0 sda 8:0 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 1:0:0:0 sdb 8:16 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 2:0:0:0 sdc 8:32 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 3:0:0:0 sdd 8:48 1 [undef][ready] SUN,SOL
params = 1 queue_if_no_path 0 1 1 round-robin 0 4 1 8:0 1000 8:16 1000 8:32 1000 8:48 1000
status = 2 0 0 0 1 1 E 0 4 0 8:0 A 0 8:16 A 0 8:32 A 0 8:48 A 0
3600144f04bee77860000144f4abb6a00: exception-listed
sda: ownership set to zfs-iscsi01
sda: not found in pathvec
sda: mask = 0xc
sda: state = 2
sda: prio = 1
sdb: ownership set to zfs-iscsi01
sdb: not found in pathvec
sdb: mask = 0xc
sdb: state = 2
sdb: prio = 1
sdc: ownership set to zfs-iscsi01
sdc: not found in pathvec
sdc: mask = 0xc
sdc: state = 2
sdc: prio = 1
sdd: ownership set to zfs-iscsi01
sdd: not found in pathvec
sdd: mask = 0xc
sdd: state = 2
sdd: prio = 1
zfs-iscsi01: pgfailback = -1 (LUN setting)
zfs-iscsi01: pgpolicy = multibus (LUN setting)
zfs-iscsi01: selector = round-robin 0 (LUN setting)
zfs-iscsi01: features = 0 (internal default)
zfs-iscsi01: hwhandler = 0 (internal default)
zfs-iscsi01: rr_weight = 2 (LUN setting)
zfs-iscsi01: minio = 1000 (config file default)
zfs-iscsi01: no_path_retry = 5 (multipath setting)
pg_timeout = NONE (internal default)
zfs-iscsi01: set ACT_NOTHING (map unchanged)
3600144f04bee77860000144f4abb6a00: exception-listed
3600144f04bee77860000144f4abb6a00: exception-listed
3600144f04bee77860000144f4abb6a00: exception-listed
(6)フォーマットしてマウントする
# ll /dev/mpath/
合計 0
lrwxrwxrwx 1 root root 7 5月 15 20:23 mpath0 -> ../dm-0
# parted /dev/mpath/mpath0
GNU Parted 1.8.1
/dev/dm-0 を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print
エラー: /dev/dm-0 を開けません。ディスクラベルが認識できません。
(parted) mklabel gpt
(parted) print
モデル: Linux device-mapper (dm)
ディスク /dev/dm-0: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
(parted) mkpart primary 0 10G
(parted) print
モデル: Linux device-mapper (dm)
ディスク /dev/dm-0: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 17.4kB 10.7GB 10.7GB primary
(parted) quit
# kpartx -a /dev/mpath/mpath0
# ll /dev/mpath/
合計 0
lrwxrwxrwx 1 root root 7 5月 15 20:23 mpath0 -> ../dm-0
lrwxrwxrwx 1 root root 7 5月 15 21:11 mpath0p1 -> ../dm-2
# mkfs -t ext3 /dev/mpath/mpath0p1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621431 blocks
131071 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mkdir /mnt/mpath0
# mount -t ext3 /dev/mpath/mpath0p1 /mnt/mpath0
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda3 2.0T 2.6G 1.9T 1% /
/dev/hda1 494M 16M 453M 4% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/dm-2 9.9G 151M 9.2G 2% /mnt/mpath0
以上で手順は終了。
後は、パス切断を行ってテストを行ってください。
CentOS徹底入門第2版 価格:4,494円(税込、送料別) |
時刻:
15:54
ディスクの振動とパフォーマンス
ディスクの振動は昔から故障に大きく影響していると言われてきたが、最近ではパフォーマンスに与える影響も大きいというデータが出始めている。
その影響力は絶大で、実験結果を見ると、意図的に微細な振動を稼働中のHDDに与える事でパフォーマンスは20〜90%も低下すると言う。
当然の事ながら振動を受けるHDDの故障率があがり機器のパフォーマンスだけでなく、システムや業務のパフォーマンスが低下してしまう。
(1)Unusual disk latency
http://blogs.sun.com/brendan/entry/unusual_disk_latency
Sun の ブログ。ストレージに対して振動(大きな音)を与えることで、
ストレージのパフォーマンスが低下する様子を動画で公開している。
(2)クラスタノードの高密度実装における振動等の問題について
http://datafarm.apgrid.org/pdf/SWoPP2003-shimizu.pdf
産業技術総合研究所における、大規模グリッド環境において発生した、
振動によるパフォーマンス低下についての論文。
実験の背景や、特定周波数におけるパフォーマンス低下について実験に基づく
数値を根拠に考察している。分かりやすい。
(3)ディスクの振動を抑える事でパフォーマンスは向上する
http://slashdot.jp/hardware/article.pl?sid=10/05/12/0455237
機器の振動発生源は主にファンやハードディスク等の物理的に駆動するものだ。
最近ではデータセンタに機器が集約され高密度にラッキングされることで、一つ一つは無視できる範囲の振動でも、共鳴して大きな振動を生み出してしまう可能性もある。
もし管理している機器が性能を発揮出来ない場合や故障率が高い場合は 振動 という観点も考慮に入れる必要がありそうだ。
(もちろん、温度やアプリの作り、物理設計といったその他の要因も忘れてはいけない)
- Posted using BlogPress from my iPhone
その影響力は絶大で、実験結果を見ると、意図的に微細な振動を稼働中のHDDに与える事でパフォーマンスは20〜90%も低下すると言う。
当然の事ながら振動を受けるHDDの故障率があがり機器のパフォーマンスだけでなく、システムや業務のパフォーマンスが低下してしまう。
(1)Unusual disk latency
http://blogs.sun.com/brendan/entry/unusual_disk_latency
Sun の ブログ。ストレージに対して振動(大きな音)を与えることで、
ストレージのパフォーマンスが低下する様子を動画で公開している。
(2)クラスタノードの高密度実装における振動等の問題について
http://datafarm.apgrid.org/pdf/SWoPP2003-shimizu.pdf
産業技術総合研究所における、大規模グリッド環境において発生した、
振動によるパフォーマンス低下についての論文。
実験の背景や、特定周波数におけるパフォーマンス低下について実験に基づく
数値を根拠に考察している。分かりやすい。
(3)ディスクの振動を抑える事でパフォーマンスは向上する
http://slashdot.jp/hardware/article.pl?sid=10/05/12/0455237
機器の振動発生源は主にファンやハードディスク等の物理的に駆動するものだ。
最近ではデータセンタに機器が集約され高密度にラッキングされることで、一つ一つは無視できる範囲の振動でも、共鳴して大きな振動を生み出してしまう可能性もある。
もし管理している機器が性能を発揮出来ない場合や故障率が高い場合は 振動 という観点も考慮に入れる必要がありそうだ。
(もちろん、温度やアプリの作り、物理設計といったその他の要因も忘れてはいけない)
- Posted using BlogPress from my iPhone
登録:
投稿 (Atom)