2012/06/03

WindowsのiSCSI Initiatorを利用する上で必須のチューニング項目メモ


■Disable Nagle Algorithm

HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}\<Instance Number>\Parameters

iSCSIDisableNagle
: (DWORD) 0x1

■Disabling delayed ACK

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<Interface GUID>

TcpDelAckTicks
: (DWORD) 0x0
TcpAckFrequency
: (DWORD) 0x1

iSCSIターゲットデバイス側でも必要があれば同様の設定を行っておくこと。

2012/05/13

IBM System x3200でもディスク障害。

今し方HP ML110G7でのRAIDディスク障害が起こっておりましたが、こちらでも起こっていたので対応中。
こっちは割と古いサーバでまともにDirectorやRSA2を利用していなかったので発覚が遅くなりました。

ディスクの状態を確認する

管理用の画面などを入れてないので、そこら辺にあるフリーソフトを使ってみます。
今回はその中でも有名な?CrystalDiskInfoで見てみました。


S.M.A.R.T.情報を見るのはどのディスク管理ソフトでも共通しているので、分かりやすいですね。
このディスクはどうも代替セクタを使う状態になってる模様。(物理的にどこかおかしなところがあるようです)

ベイ番号などが分からないので、シリアルナンバーを控えてOSシャットダウン。
ホットスワップモデルであればオンラインでディスク交換可能なのですが、このサーバはシンプルスワップモデルなので電源オフ時でないとディスクの抜き差しができないので。。。

ディスクを交換する

ディスク交換ついでにほこり取りも…



RAIDの再ミラー

x3200に標準搭載されているLSI LogicのRAIDコントローラ(MegaRAID)は、障害状態を起こしたディスクなどの情報をNVRAM上にも保持してたはずなので、ディスク交換後は、正常なディスクから新しいディスクに、自動的に再ミラー(RESYNC)をかけてくれます。

RAID状態の確認

きちんと再ミラーが進んでいるかは、MegaRAID Storage Manager上で確認できます。


一応最後に、交換後のディスクのS.M.A.R.T.情報も見ておきます。


大丈夫そうですね。
これも優雅に放置しておきます。

HP ML110G7でディスク障害が起こったときのメモ。

我が家で先日導入したHP ML110G7に、大掃除で発掘されたSeagateの1TB HDDを積み込んで動かしてましたが、どうも調子が悪い様子…と思ってたらついにお亡くなりになりました。

障害ディスクを確認する

内蔵RAIDコントローラ(SmartArray B110i SATA RAID)の場合、HP System Management Homepage (SMH)を入れてるとこんな感じで表示されます。

障害予兆…もうすぐ壊れそうって感じ

障害…壊れちゃってますねw

さらに進むとドライブ情報すら取れなくなる

いずれの場合も左側や中央のボックス・ベイから障害を起こしているディスクは簡単に特定できると思います。

ディスクを交換する

ホットスワップモデルの場合は、このままディスクを物理的にオンラインで引っこ抜いて、新しい正常なディスクを挿入してあげれば済むのですが、今回はノンホットスワップモデルなので一回シャットダウンしてオフラインで交換してあげます。





RAIDを再ミラーする

ディスクを交換後、サーバを起動するとPOST画面のあとにSmartArrayのところで「データを再ミラー(リカバリー)するけど良い?」って聞かれるのでF1キーを押して自動リカバリーさせます。


サーバ起動後はオンラインで再ミラーが進みますが、状況を確認するにはまたSMHを見れば分かります。(とはいえ結構時間がかかるので優雅に待ちます)


安鯖とは言え、上位機種(DL3xx,5xxなど)と同じ感じなのでとてもお手軽ですね。

2012/05/06

謎のiSCSIストレージ…?


とりあえず環境情報も何も出さずに見ると、以下の結果が「何かおかしい?」と思ってもらえるかと貼り付けてみた。


ちょっといろいろ検証してみますかねぇ。。。

2012/05/03

Solaris COMSTARでクラスタ共有ディスクを公開するコマンドのメモ。

Solaris 11上でCOMSTARを使ってiSCSIストレージ領域を公開する手順メモ。
大まかにはブロックデバイスの作成と、iSCSIターゲットの作成、そしてLUNマスキングという流れ。


iSCSIターゲットの作成

root@LAINSS01:~# itadm create-target
Target iqn.1986-03.com.sun:02:ada42f3b-da72-6dd5-ec33-f176bc61f0d2 successfully created
root@LAINSS01:~# stmfadm offline-target iqn.1986-03.com.sun:02:ada42f3b-da72-6dd5-ec33-f176bc61f0d2

iSCSIターゲットをビュー(LUN Maskingグループ)に追加するときにエラーになるので、先にターゲットをオフラインにしておきます。

iSCSIターゲットグループの作成

root@LAINSS01:~# stmfadm create-tg TG-LAINCL01
root@LAINSS01:~# stmfadm add-tg-member -g TG-LAINCL01 iqn.1986-03.com.sun:02:ada42f3b-da72-6dd5-ec33-f176bc61f0d2

先の手順で作成したiSCSIターゲットを一つだけ含んだ、iSCSIターゲットグループを作成します。
(ビューに所属させて、実際にイニシエータからアクセスさせるのはこのターゲットグループになります)

iSCSIホスト(イニシエータ)グループの作成

root@LAINSS01:~# stmfadm create-hg HG-LAINSV01
root@LAINSS01:~# stmfadm create-hg HG-LAINSV02
root@LAINSS01:~# stmfadm add-hg-member -g HG-LAINSV01 iqn.1991-05.com.microsoft:lainsv01.wirednet.local
root@LAINSS01:~# stmfadm add-hg-member -g HG-LAINSV02 iqn.1991-05.com.microsoft:lainsv02.wirednet.local

Windows上でiSCSIを構成するとIQNと呼ばれるホスト識別子が生成されるので、それをホストグループに所属させます。

ブロックデバイス(LUN)の作成

root@LAINSS01:~# zfs list
root@LAINSS01:~# zfs create -V 1G hugepool/block/iscsi/LAINCL01-DriveQ

root@LAINSS01:~# sbdadm create-lu /dev/zvol/rdsk/hugepool/block/iscsi/LAINCL01-DriveQ
Created the following LU:

              GUID                    DATA SIZE           SOURCE
--------------------------------  -------------------  ----------------
600144f090960c0000004fa153370001  1073741824           /dev/zvol/rdsk/hugepool/block/iscsi/LAINCL01-DriveQ

ZFS上で1GBのブロックデバイス領域を切り出した上で、sbdadmコマンドで管理サービスに登録するとGUIDが生成されます。(ビューにはGUID単位で登録していきます。)


ビュー(LUN Masking)の作成

ビューには、iSCSIターゲットグループ&iSCSIホストグループに対して、公開するブロックデバイスを登録する感じになります。(どこから:target、どこに:host、なにを:LUN、公開するという関係)

root@LAINSS01:~# stmfadm add-view -t TG-LAINCL01 -h HG-LAINSV01 600144f090960c0000004fa153370001
root@LAINSS01:~# stmfadm add-view -t TG-LAINCL01 -h HG-LAINSV02 600144f090960c0000004fa153370001

実際にブロックデバイスがどのビューに紐づけられているかは下のコマンドで確認。
root@LAINSS01:~# stmfadm list-view -l 600144f090960c0000004fa153370001

最後にターゲットをオンラインにすれば、配下のiSCSIホストから認識できるようになります。

root@LAINSS01:~# stmfadm online-target iqn.1986-03.com.sun:02:ada42f3b-da72-6dd5-ec33-f176bc61f0d2


以上。

2012/04/12

入れ終わったときのZabbix 2.0の画面。

Zabbix 1.6の頃とはもう趣が違いますねぇ。。。
そしてIPv6アドレス直指定でもちゃんと動くようになってます。



Scientific LinuxにZabbix 2.0rc2を入れてみた。(Zabbix 2.0.4に合わせて一部修正)


Scientific Linux 6.2(x86_64)にZabbix 2.0rc2をインストールしたときのメモ。

全般的に、以下のサイトを参考にしてみました。
http://blog.torigoya.net/2012/03/10/centos6-zabbix/
http://www.zabbix.com/documentation/2.0/manual/installation/install

※2013/1/5 Zabbix 2.0.4をインストールしたときに一部手順追記しました。

■Zabbix (2.0rc2)のダウンロード

$ wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Release%20Candic2.tar.gz
$ tar xvzf zabbix-2.0.0rc2.tar.gz

■関連パッケージの導入

# env LANG=C yum groupinstall "Development tools"
※開発用ツールをインストールしておかないと、gccやmakeすらないので。

# wget http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -i epel-release-6-8.noarch.rpm
※fpingをインストールするために、拡張パッケージのリポジトリを追加。

# yum install httpd mysql-server mysql-devel php php-mysql php-bcmath php-gd php-mbstring php-snmp php-xml OpenIPMI-devel libcurl-devel libssh2-devel net-snmp-devel  net-snmp fping

■MySQLの設定と起動

# vi /etc/my.cnf
[mysqld]
character-set-server=utf8

を追記

# service mysqld start

# /usr/bin/mysqladmin -u root password 'P@ssw0rd!'
# /usr/bin/mysqladmin -u root -h localhost password 'P@ssw0rd!' -p

■Zabbixのコンパイル

$ cd [Zabbixのコンパイルディレクトリ]
$ ./configure --enable-server --enable-agent --enable-ipv6 --with-mysql --with-openipmi --with-net-snmp --with-libcurl --with-ssh2
$ make
# make install

☆途中足りないライブラリが出てきたらyumでインストールしておく。

■MySQL上にZabbix用のDBを作成

# mysql -p
mysql> create database zabbix;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'P@ssw0rd!';
mysql> flush privileges;
mysql> exit

# cd [Zabbixのコンパイルディレクトリ]/database/mysql
# mysql zabbix -uzabbix -p'P@ssw0rd!'  < schema.sql
# mysql zabbix -uzabbix -p'P@ssw0rd!'  < images.sql
# mysql zabbix -uzabbix -p'P@ssw0rd!' < data.sql

# cd [Zabbixのコンパイルディレクトリ]/frontend/php
# cp -a . /var/www/html

# vi /usr/local/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=P@ssw0rd!

# vi /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Tokyo

■PHP/Apache周りのSELinuxの制限緩和

# getsebool -a | grep httpd_can_network_connect
httpd_can_network_connect --> off
httpd_can_network_connect_db --> off

# setsebool -P httpd_can_network_connect on
# setsebool -P httpd_can_network_connect_db on
※httpd_can_network_connectはZabbixフロントエンドから、Zabbixサーバに接続するために必要
(Port 10050へのアクセス)
httpd_can_network_connect_dbは、ZabbixフロントエンドからDBサーバに接続するため。

# fixfiles relabel
↑/var/www/htmlの内容をいじっている場合に、一部ファイルのSELinuxラベルがおかしくなることがあるので、ラベルの貼り直しを行う。

■Zabbix実行用ユーザの追加 (2013/1/5追記)


# groupadd -g 1000 zabbix
# useradd -m -u 1000 -g 1000 zabbix


■Zabbixの設定ウィザードを実行

# service httpd start

http://[サーバIP]/
にアクセスしてウィザードに従い設定

途中設定したコンフィグファイル(zabbix.conf.php)がでてくるので、サーバ上のconfディレクトリに手動でコピーしておく。
(2012/4/14追記: confディレクトリのApacheプロセスからの書き込み権限を付与してあげればOK by くりゅうさん)

■自動起動の設定

# cd [Zabbixのコンパイルディレクトリ]/misc/init.d/redhat/8.0/
※ ↑Zabbix 2.0.4で試してみたところ、redhatディレクトリが存在しないようです。その場合は、fedora/core5のものを使えば良さそうです。(2013/1/5追記)

# cp * /etc/init.d/
# cd /etc/init.d
# chmod 755 zabbix_agentd zabbix_server
# chown root:root zabbix_agentd zabbix_server

# vi zabbix_agentd
chkconfig: - 93 10
progdir="/usr/local/bin/"

# vi zabbix_server
chkconfig: - 90 13
progdir="/usr/local/sbin/"

# chkconfig mysqld on
# chkconfig httpd on
# chkconfig zabbix_server on
# chkconfig zabbix_agentd on

■日本語フォントの設定

デフォルトだとグラフがDejaVuSansで表示されて、日本語のところが□でつぶれてしまうので修正。
(特に何もしなくても入ってくるVL-Gothicを利用します)

# cd [Zabbixフロントエンドのディレクトリ]/fonts
# ln -s /usr/share/fonts/vlgothic/VL-Gothic-Regular.ttf ./

# vi [Zabbixフロントエンドのディレクトリ]/include/defines.inc.php

define('ZBX_GRAPH_FONT_NAME',                   'VL-Gothic-Regular'); // font file name

以上。
意外と簡単でした。