2012年10月26日金曜日

Openstack Swift構築太郎

openstack swiftの構築手順。 OSはubuntu 10.04 swiftのverは1.7.0(folsum) 構成は、 LB配下にproxy:2 account:3 container:3 object:3 公式ドキュメント参考にして、計11台構成で作ってみたお

#まずはproxyサーバから。
#必要なモジュールの準備

apt-get install python-software-properties
add-apt-repository ppa:swift-core/release
apt-get update
apt-get install curl gcc git-core memcached python-configobj python-coverage python-dev python-nose python-setuptools python-simplejson python-xattr sqlite3 xfsprogs python-webob python-eventlet python-greenlet python-pastedeploy python-netifaces

#ユーザつくる
/usr/sbin/groupadd -g XXXXX yatta_swift
/usr/sbin/useradd -u XXXXX -g yatta_swift yatta_swift


#ディレクトリつくる
mkdir -p /etc/swift

#hashの設定ファイルつくる
cat >/etc/swift/swift.conf <> /etc/fstab
mkdir -p /srv/node/sdb1
mount -a
chown -R yatta_swift: /srv/*

#recon用のディレクトリきっとく
mkdir -p /var/cache/swift
chown -R yatta_swift: /var/cache/swift/

#proxy serverの設定 2台ともやるお

vim /etc/swift/proxy-server.conf
[DEFAULT]
#cert_file = /etc/swift/cert.crt
#key_file = /etc/swift/cert.key
bind_port = 8080
workers = 8
user = yatta_swift
log_facility = LOG_LOCAL1
[pipeline:main]
pipeline = healthcheck cache tempauth staticweb proxy-server

[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true

[filter:tempauth]
use = egg:swift#tempauth
##proxyのinternval vipを設定
user_system_root = testpass .admin https:XXX.XXX.XXX.XXX:8080/
reseller_prefix = /yatta_images/
user_test_tester = testing .admin
user_test2_tester2 = testing2 .admin
user_test_tester3 = testing3

[filter:healthcheck]
use = egg:swift#healthcheck

[filter:cache]
use = egg:swift#memcache
##proxyserverのipを追加
memcache_servers = XXX.XXX.XXX.XXX:11211,XXX.XXX.XXX.XXX:11211

#静的配信もするので、staticwebモジュール追加
[filter:staticweb]
use = egg:swift#staticweb



#ログ周りの設定
vim /etc/rsyslog.d/10-swift.conf 
# Uncomment the following to have a log containing all logs together
#local1.*   /var/log/swift/all.log

# Uncomment the following to have hourly proxy logs for stats processing
#$template HourlyProxyLog,"/var/log/swift/hourly/%$YEAR%%$MONTH%%$DAY%%$HOUR%"
#local1.*;local1.!notice ?HourlyProxyLog

local1.*;local1.!notice /var/log/swift/proxy.log
local1.notice           /var/log/swift/proxy.error
local1.*                ~

vim /etc/rsyslog.conf
$PrivDropToGroup adm

mkdir -p /var/log/swift/hourly
chown -R yatta_swift /var/log/swift
chmod -R g+w /var/log/swift
service rsyslog restart
ここから、container、account、objectの設定するお その前に、swiftの各node間の同期はrynscでやるんでproxyをのぞく各nodeで下記を設定
vim /etc/rsyncd.conf 
uid = yatta_swift
gid = yatta_swift
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = xxx.xxx.xx.xxx 

[account]
max connections = 100
path = /srv/node/
read only = false
lock file = /var/lock/account.lock

#rysncの設定ファイル編集
vim /etc/default/rsync 
RSYNC_ENABLE=true

#rsync再起動
/etc/init.d/rsync restart
#accountの設定の場合 ※各nodeでやる
vim  /etc/swift/account-server.conf 
[DEFAULT]
#containerのip
bind_ip = XXX.XXX.XXX.XXX
workers = 100
log_facility = LOG_LOCAL1
mount_check = false
disable_fallocate = true
recon_cache_path = /var/cache/swift
user = yatta_swift

[pipeline:main]
pipeline = recon account-server

[app:account-server]
use = egg:swift#account

[filter:recon]
use = egg:swift#recon

[account-replicator]

[account-auditor]

[account-reaper]

#containerの場合
vim /etc/swift/container-server.conf 
[DEFAULT]
bind_ip = xxx.xxx.xxx.xxx
mount_check = false
disable_fallocate = true
workers = 100
log_facility = LOG_LOCAL1
devices = /srv/node
user = yatta_swift
recon_cache_path = /var/cache/swift

[pipeline:main]
pipeline = recon container-server

[app:container-server]
use = egg:swift#container

[container-replicator]

[filter:recon]
use = egg:swift#recon

[container-updater]

[container-auditor]

[container-sync]

#objectの場合
/etc/swift/object-server.conf 
[DEFAULT]
bind_ip = xxx.xxx.xxx.xxx
workers = 100
log_facility = LOG_LOCAL1
devices = /srv/node
user = yatta_swift
mount_check = false
disable_fallocate = true
recon_cache_path = /var/cache/swift

[pipeline:main]
pipeline = recon object-server

[app:object-server]
use = egg:swift#object

[filter:recon]
use = egg:swift#recon

[object-replicator]

[object-updater]

[object-auditor]

swift-clientいれとく
python-swiftclient-1.2.0.tar.gzを本家からDL
tar zxvf python-swiftclient-1.2.0.tar.gz
python setup.py install
swift起動させてみる
#swift起動させる
#proxyの場合
swift-init proxy start

#container object accountの場合
#※ほんとは個別であげるべきだとおもうけど とりま。
swift-init all start

#proxyでringファイル生成(複数ある場合は一台だけで)
swift-ring-builder account.builder create 18 3 1
swift-ring-builder container.builder create 18 3 1
swift-ring-builder object.builder create 18 3 1

swift-ring-builder account.builder add z1-xxx.xxx.xxx.xxx:6002/sdb1 1
swift-ring-builder account.builder add z2-xxx.xxx.xxx.xxx:6002/sdb1 1
swift-ring-builder account.builder add z3-xxx.xxx.xxx.xxx:6002/sdb1 1
swift-ring-builder account.builder rebalance
 
swift-ring-builder container.builder add z1-xxx.xxx.xxx.xxx:6001/sdb1 1
swift-ring-builder container.builder add z2-xxx.xxx.xxx.xxx:6001/sdb1 1
swift-ring-builder container.builder add z3-xxx.xxx.xxx.xxx:6001/sdb1 1
swift-ring-builder container.builder rebalance
 
swift-ring-builder object.builder add z1-xxx.xxx.xxx.xxx:6000/sdb1 1
swift-ring-builder object.builder add z2-xxx.xxx.xxx.xxx:6000/sdb1 1
swift-ring-builder object.builder add z3-xxx.xxx.xxx.xxx:6000/sdb1 1
swift-ring-builder object.builder rebalance

#builderファイルと*.ring.gzが生成されるので、builderは各proxyに*.ring.gzは全nodeの/etc/swift配下に。

ちょっといじってみるお
#各nodeの状況確認@proxyで

#swift-ring-builder container.builder 
container.builder, build version 6
262144 partitions, 3 replicas, 3 zones, 3 devices, 0.00 balance
The minimum number of hours before a partition can be reassigned is 1
Devices:    id  zone      ip address     port      name weight partitions balance meta
             0     1    xxx.xxx.xxx.xxx  6001      sdb1   1.00     262144    0.00 
             1     2    xxx.xxx.xxx.xxx  6001      sdb1   1.00     262144    0.00 
             3     3    xxx.xxx.xxx.xxx  6001      sdb1   1.00     262144    0.00 

#nodeのadd remove rebalance
#node外す
swift-ring-builder object.builder remove z1-xxx.xxx.xxx.xxx/sdb1

#node入れる(重み代えるのもこれでできる)
swift-ring-builder object.builder add z1-xxx.xxx.xxx.xxx/sdb1 1

#reblance ちなみにrebalanceは一度やると一時間はできない ↑の設定だと。
swift-ring-builder object.builder

swift-ring-builder object.builder rebalance
Reassigned 262144 (100.00%) partitions. Balance is now 726.36.
-------------------------------------------------------------------------------
NOTE: Balance of 726.36 indicates you should push this 
      ring, wait at least 1 hours, and rebalance/repush.
-------------------------------------------------------------------------------
とりあえずいったんここまでで。 ほかにも結構いろいろ検証しているので、あとでのせます。

2012年6月12日火曜日

Megacli64でディスク交換太郎

Megacli64を使ったディスク交換の手順だお。
ちなみに今回は、Medium Errorがたくさんでてるディスクの予防交換。

OSはCent5.4
RAIDカードは、LSI Megaraid 9280 FW:12.12.0-0090
Megacli 8.02.16で。



#まずはHDDの状態を確認。
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0

Enclosure Device ID: 252
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 0
Device Id: 16
WWN:
Sequence Number: 2
Media Error Count: 67     ← errorはいてる
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Online, Spun Up
Is Commissioned Spare : NO
Device Firmware Level: A5C0
Shield Counter: 0
Successful diagnostics completion on :  N/A
SAS Address(0): 0x4433221100000000
Connected Port Number: 0(path0)
Inquiry Data:       MN1220F32HYULDHitachi HDS723020BLA642                 MN6OA5C0

・・・省略

#対象のディスクを確認(ランプ点灯)
/opt/MegaRAID/MegaCli/MegaCli64 -Pdlocate start physdrv[252:0] -a0

#対象のディスクを確認(ランプ消灯)
/opt/MegaRAID/MegaCli/MegaCli64 -Pdlocate stop physdrv[252:0] -a0


#対象ディスクのオフライン
/opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv[252:0] -a0

Adapter: 0: EnclId-252 SlotId-0 state changed to OffLine.

Exit Code: 0x00


#status確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0 | less

Adapter #0

Enclosure Device ID: 252
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 0
Device Id: 16
WWN:
Sequence Number: 3
Media Error Count: 67
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Offline  ← offlineになってる。

・・・省略

#対象のディスクにmissing markつける
/opt/MegaRAID/MegaCli/MegaCli64 -PDMarkMissing -PhysDrv[252:0] -a0

EnclId-252 SlotId-0 is marked Missing.

Exit Code: 0x00

#missing markのついたdiskの確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDGetMissing -aALL

    Adapter 0 - Missing Physical drives

    No.   Array   Row   Size Expected
    0     0       0     1907200 MB

#削除前の準備
/opt/MegaRAID/MegaCli/MegaCli64 -PDPrpRmv -PhysDrv[252:0] -a0


Prepare for removal Success

Exit Code: 0x00

#ここでHDDを交換。


#Missing markの状態変更
/opt/MegaRAID/MegaCli/MegaCli64 -PDReplaceMissing -PhysDrv[252:0] -Array0 -row0 -a0

#Rebuildスタート
/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -Start -PhysDrv[252:0] -a0

#状態確認
/opt/MegaRAID/MegaCli/MegaCli64 -PDList -a0 | less
^M
Adapter #0

Enclosure Device ID: 252
Slot Number: 0
Drive's postion: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 0
Device Id: 16
WWN:
Sequence Number: 12
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SATA
Raw Size: 1.819 TB [0xe8e088b0 Sectors]
Non Coerced Size: 1.818 TB [0xe8d088b0 Sectors]
Coerced Size: 1.818 TB [0xe8d00000 Sectors]
Firmware state: Rebuild   ← rebuildのステータスになった

・・・省略

#Rebuildの状況確認

/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -showprog -physdrv[252:0] -a0

Rebuild Progress on Device at Enclosure 252, Slot 0 Completed 4% in 11 Minutes.

Exit Code: 0x00

こんな感じでできる。 ただ、PDmarkMissingが対応していない場合があるので注意。

2012年4月12日木曜日

SPDY 構築太郎

やっと構築までこぎつけたので、一旦メモで。

SPDYとはGoogleが策定を進めている通信プロトコルらしく
HTTPよりはやいお!!ってことらしい。

gmail、googlecalenderとか、Twitterとかが実装しているらしい太郎。

なんかみたところ、通常のHTTPの50%近くの高速化を目標としているらしい。
今後の主流となること間違いないという予想太郎。

ただ、Firefox11系と、Choromeの最新版?でしか対応してないので
大規模サービスの画像配信とかで使うにはちょっと難しいのかな・・・

まあ、apacheのモジュール公開されてたんで構築してみた。
環境は、Ubuntu 11.04


#まずは事前準備
apt-get install subversion curl g++ apache2 patch binutils julius make

#任意のディレクトリで

mkdir mod_spdy
mkdir temp
cd temp

#depot_tools持ってくる
svn co http://src.chromium.org/svn/trunk/tools/depot_tools

#PATH通す
export PATH="$PATH":`pwd`/depot_tools
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/yattarou/temp/depot_tools

#SPDYのコード落としてくる ちなみにrootで実行してる
gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
Running depot tools as root is sad.
#失敗したw

#gclientソース見てみる
#base_dirんとこでうまくいってないっぽいので、パワープレイ。
#パス直書きにしてやったw
vim /home/yattarou/temp/depot_tools/gclient

#!/usr/bin/env bash
# Copyright (c) 2009 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

base_dir=$(dirname "$0")

"$base_dir"/update_depot_tools

PYTHONDONTWRITEBYTECODE=1 exec python "$base_dir/gclient.py" "$@"

#もっかいチャレンジ
/home/yattarou/temp/depot_tools/gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"
Running depot tools as root is sad.

#失敗した
#update_depot_toolsのコードみる
#rootの権限チェック、コメントアウトした。
vim /home/yattarou/temp/depot_tools/update_depot_tools

#!/usr/bin/env bash
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This script will try to sync the bootstrap directories and then defer control.

if [ "$USER" == "root" ];
then
echo Running depot tools as root is sad.
exit
fi

#もっかいやってみる
/home/yattarou/temp/depot_tools/gclient config "http://mod-spdy.googlecode.com/svn/trunk/src"

#いけたぽいので
/home/udagawa/temp/depot_tools/gclient sync --force
1>________ running 'svn checkout http://mod-spdy.googlecode.com/svn/trunk/src /home/udagawa/mod_spdy/src --non-interactive --force --ignore-externals' in '/home/yattarou/mod_spdy'
・・・・
いっぱいおとしてくる。

26>Checked out revision 933.
Syncing projects: 96% (26/27), done.ols/gyp

________ running '/usr/bin/python src/build/gyp_chromium' in '/home/yattarou/mod_spdy'
Updating projects from gyp files...

#落としてきたら


cd src/
./build_modssl_with_npn.sh

#.soをコピー
cp -rp mod_ssl.so /usr/lib/apache2/modules/
a2enmod ssl

#おれおれ証明書作成
apt-get install ssl-cert

make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /tmp/selfsigned.crt
mkdir /etc/apache2/ssl
mv /tmp/selfsigned.crt /etc/apache2/ssl/

#証明書の設定編集
vim /etc/apache2/sites-available/default-ssl

SSLCertificateFile /etc/apache2/ssl/selfsigned.crt
#コメントアウト
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

a2ensite default-ssl

#apache再起動
/etc/init.d/apache2 restart

#SPDYのBUILD
make BUILDTYPE=Release
・・・・
#いっぱいでる

cp out/Release/libmod_spdy.so /usr/lib/apache2/modules/mod_spdy.so
echo "LoadModule spdy_module /usr/lib/apache2/modules/mod_spdy.so" | tee /etc/apache2/mods-available/spdy.load
echo "SpdyEnabled on" | tee /etc/apache2/mods-available/spdy.conf

a2enmod spdy
Enabling module spdy.
Run '/etc/init.d/apache2 restart' to activate new configuration!

#apache再起動
/etc/init.d/apache2 restart


#これでおk
#下のでいろいろ見れる
chrome://net-internals/#spdy

#あと、SPDY用のベンチマークツール
#windowsで確認するとき、chrome.exe --enable-benchmarkingしないと起動しないので注意
http://dev.chromium.org/developers/design-documents/extensions/how-the-extension-system-works/chrome-benchmarking-extension


すこし、確認したところ、まあまま早い感じがする。
検証結果は、あとでちゃんと載せます。

2012年4月10日火曜日

glusterFS(Distribute)構築太郎

GlusterFSを構築するお。

環境は、ubuntu 11.04とかCentOS5.4。とりあえず作ってみたかったので
バラバラです。

事前に
・python2.4以上
・python-crypt
・flex
・bison
いれた。

コマンドの結果、とり忘れたのであとでつけますね。


#まずは、FUSEから。
tar zxvf fuse-2.8.7.tar.gz
./configure
make && make install

#FUSE読み込み
modprobe fuse
dmesg | grep -i fuse
#fuse init (API version 7.13)

#次、gluster。
tar zxvf glusterfs-3.2.6.tar.gz
./configure
make && make install

#インストールすると、/etc/glusterd配下にディレクトリ・ファイルが展開される。
# ls -lHR
.:
total 4
drwxr-xr-x 2 root root 24 Apr 12 03:25 geo-replication
-rw-r--r-- 1 root root 42 Apr 12 03:25 glusterd.info
drwxr-xr-x 2 root root 6 Apr 12 03:25 nfs
drwxr-xr-x 2 root root 6 Apr 12 03:25 peers
drwxr-xr-x 2 root root 6 Apr 12 03:25 vols

./geo-replication:
total 4
-rwxr-xr-x 1 root root 1137 Apr 12 03:25 gsyncd.conf

./nfs:
total 0

./peers:
total 0

./vols:
total 0

#glusterFS 起動 ( 各サーバで)
/etc/init.d/glusterd start

#ディレクトリほる
mkdir /gluster_data

#peerの作成 (各ノード間で信頼関係をつくるらしい)

#まずはpeerの状態確認
/usr/local/sbin/gluster peer status
No peers present

#peerはる
/usr/local/sbin/gluster peer probe xxx.xxx.xxx.xxx
Probe successful

#peerの状態確認
/usr/local/sbin/gluster peer status
Number of Peers: 1

Hostname: xxx.xxx.xxx.xxx
Uuid: ad0bb29e-f91b-4053-8ab0-9a90adbd095e
State: Peer in Cluster (Connected)

#volumeの作成(今回は、とりあえず全ノードの領域を使う方法にしました。ほかに、stripe、replicaがあるみたいす。あとでやり方あげます)

/usr/local/sbin/gluster volume create gluster-vol xxx.xxx.xxx.xxx:/gluster_data xxx.xxx.xxx.xxx:/gluster_data
Creation of volume gluster-vol has been successful. Please start the volume to access data.

#volume確認
/usr/local/sbin/gluster volume info

Volume Name: gluster-vol
Type: Distribute
Status: Created
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: xxx.xxx.xxx.xxx:/gluster_data
Brick2: xxx.xxx.xxx.xxx:/gluster_data

#volume 起動
/usr/local/sbin/gluster volume start gluster-vol
Starting volume gluster-vol has been successful

#確認
/usr/local/sbin/gluster volume info

Volume Name: gluster-vol
Type: Distribute
Status: Started
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: xxx.xxx.xxx.xxx:/gluster_data
Brick2: xxx.xxx.xxx.xxx:/gluster_data

#各Clientからmount
mount -t glusterfs -o log-level=WARNING,log-file=/var/log/gluster.log xxx.xxx.xxx.xxx:gluster-vol /mnt/glusterfs

#これでとりあえず使えます。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 1.9T 3.4G 1.9T 1% /
none 5.9G 204K 5.9G 1% /dev
none 5.9G 0 5.9G 0% /dev/shm
none 5.9G 48K 5.9G 1% /var/run
none 5.9G 0 5.9G 0% /var/lock
none 5.9G 0 5.9G 0% /lib/init/rw
/dev/sdb1 51T 11G 51T 1% /gluster_data
/dev/sda1 472M 27M 422M 6% /boot
xxx.xxx.xxx.xxx:gluster-vol
52T 17G 52T 1% /mnt/glusterfs

#こんなファイルできてる
/etc/glusterd# ls -lhR
.:
total 4.0K
drwxr-xr-x 2 root root 24 Apr 12 03:25 geo-replication
-rw-r--r-- 1 root root 42 Apr 12 03:25 glusterd.info
drwxr-xr-x 3 root root 37 Apr 12 03:42 nfs
drwxr-xr-x 2 root root 49 Apr 12 03:34 peers
drwxr-xr-x 3 root root 24 Apr 12 03:40 vols

./geo-replication:
total 4.0K
-rwxr-xr-x 1 root root 1.2K Apr 12 03:25 gsyncd.conf

./nfs:
total 4.0K
-rw-r--r-- 1 root root 1.3K Apr 12 03:42 nfs-server.vol
drwxr-xr-x 2 root root 20 Apr 12 03:42 run

./nfs/run:
total 64K
-rw-r--r-- 1 root root 6 Apr 12 03:42 nfs.pid

./peers:
total 4.0K
-rw-r--r-- 1 root root 74 Apr 12 03:34 ad0bb29e-f91b-4053-8ab0-9a90adbd095e

./vols:
total 4.0K
drwxr-xr-x 4 root root 4.0K Apr 12 03:42 gluster-vol

./vols/gluster-vol:
total 24K
drwxr-xr-x 2 root root 66 Apr 12 03:42 bricks
-rw-r--r-- 1 root root 16 Apr 12 03:42 cksum
-rw-r--r-- 1 root root 1.2K Apr 12 03:40 gluster-vol-fuse.vol
-rw-r--r-- 1 root root 995 Apr 12 03:40 gluster-vol.xxx.xxx.xxx.xxx.gluster_data.vol
-rw-r--r-- 1 root root 995 Apr 12 03:40 gluster-vol.xxx.xxx.xxx.xxx.gluster_data.vol
-rw-r--r-- 1 root root 174 Apr 12 03:42 info
-rw-r--r-- 1 root root 12 Apr 12 03:42 rbstate
drwxr-xr-x 2 root root 39 Apr 12 03:42 run

./vols/gluster-vol/bricks:
total 8.0K
-rw-r--r-- 1 root root 75 Apr 12 03:42 xxx.xxx.xxx.xxx:-gluster_data
-rw-r--r-- 1 root root 71 Apr 12 03:42 xxx.xxx.xxx.xxx:-gluster_data

./vols/gluster-vol/run:
total 64K
-rw-r--r-- 1 root root 6 Apr 12 03:42 xxx.xxx.xxx.xxx-gluster_data.pid

#/etc/glusterd/glusterd.infoの中身
cat glusterd.info
UUID=e0548668-aec6-49c0-96e7-46761d97015d

#/etc/glusterd/nfs//nfs-server.volの中身
/etc/glusterd/nfs# cat nfs-server.vol

#各clientの情報
volume gluster-vol-client-0
type protocol/client
option remote-host xxx.xxx.xxx.xxx
option remote-subvolume /gluster_data
option transport-type tcp
end-volume

volume gluster-vol-client-1
type protocol/client
option remote-host xxx.xxx.xxx.xxx
option remote-subvolume /gluster_data
option transport-type tcp
end-volume

#volumeの情報?
volume gluster-vol-dht
type cluster/distribute
subvolumes gluster-vol-client-0 gluster-vol-client-1
end-volume

#writeのパラメータ。バックグラウンドで遅延書き込みするってことみたい。
volume gluster-vol-write-behind
type performance/write-behind
subvolumes gluster-vol-dht
end-volume

#readのパラメータ。read-aheadってことは先読みか。
volume gluster-vol-read-ahead
type performance/read-ahead
subvolumes gluster-vol-write-behind
end-volume

#cacheのパラメータ。clientとserver間の接続のパラメータみたい。
volume gluster-vol-io-cache
type performance/io-cache
subvolumes gluster-vol-read-ahead
end-volume

#こっから下まだ調べてない
volume gluster-vol-quick-read
type performance/quick-read
subvolumes gluster-vol-io-cache
end-volume

volume gluster-vol
type debug/io-stats
option latency-measurement off
option count-fop-hits off
subvolumes gluster-vol-quick-read
end-volume

volume nfs-server
type nfs/server
option nfs.dynamic-volumes on
option rpc-auth.addr.gluster-vol.allow *
option nfs3.gluster-vol.volume-id dc957ba2-188a-48bf-8c80-e6899ed999c7
subvolumes gluster-vol
end-volume

#↑のパラメータは、http://www.gluster.org/community/documentation/index.php/Translators/performanceに結構書いてあるので後でまとめます。


結構チューニングするとこ多そうなので、調べなきゃ。

LSI9285 - Potential non-optimal configuration太郎

Megaraid9285のFWを21.0.1-0111 → 23.1.1-0004にしたところ、ストレージがピーピー言っておる。

しらべた。


#ログだす
/opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog -GetEvents -f /home/yattarou/getlog.log -a0

#確認する 一部抜粋
#各physical disk(計8本)で、下記のメッセージがでていた。
#見る限り、おで、emergency spareになるよってことだと思う。
===========
Device ID: 14
Enclosure Index: 252
Slot Number: 5


seqNum: 0x0000070d
Time: Wed Mar 28 14:11:21 2012

Code: 0x00000196
Class: 1
Locale: 0x02
Event Description: Reminder: Potential non-optimal configuration due to drive PD 0f(e0xfc/s4) commissioned as emergency spare
Event Data:
===========



確認する限り、ディスクのread,write、RAIDの状態には問題なさそう。
ただDiskが死んだ時、変な動きをしそうなのでLSIさんに問い合わせてみた。

結果、farmのバグらしく下のlinkから最新版を当てたらなおった。
2週間もたたないくらいで直してくれました。ありがとうございます。

http://www.lsi.com/products/storagecomponents/Pages/MegaRAIDSAS9285-8e.aspx

Version:23.4.1-0028

です。

2012年3月12日月曜日

Megaraid 9285 Firmware update太郎

Megaraid 9285のfirmあげようとおもったら、ちょっとつまづいたOrz



#Megaraid9285のFWを21.0.1-0111 → 23.1.1-0004にしようとしてみる
/opt/MegaRAID/MegaCli/MegaCli64 -AdpFwFlash -f mr2208fw.rom -a0

Adapter 0: LSI MegaRAID SAS 9285-8e Vendor ID: 0x1000, Device ID: 0x005B ERROR:
The image file is invalid and could not be flashed to the controller!!!

#エラーでてできない(´・ω・`)
#megacliのバージョンが古いVer 8.00.40)のが原因みたい。
#下のサイトから最新版もってきたらできた
http://www.lsi.com/Pages/user/eula.aspx?file=http%3a%2f%2fwww.lsi.com%2fdownloads%2fPublic%2fMegaRAID%2520Common%2520Files%2f8.02.16_MegaCLI.zip&Source=http%3a%2f%2fwww.lsi.com%2fdownloads

2012年3月7日水曜日

Megaraid 9280 Firmware update太郎

Megaraid9280 e8のfirmwareのアップデートしてみたお。
9285もいっしょっぽい。


#firmwareのバージョンを確認
/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -a0

Adapter #0

==============================================================================
Versions
================
Product Name : LSI MegaRAID SAS 9280-8e
Serial No : XXXXXXXX
FW Package Build: 12.0.1-0081

#LSIのホームページから、対象RAIDカードのFWをとってくる。解凍。
unzip 12.12.0-0090_SAS_2108_FW_Image_APP-2.120.243-1482.zip

#適用
MegaCli -adpfwflash -f mr2108fw.rom -a0

#再起動
/sbin/init 6

#確認
/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -a0
Adapter #0

==============================================================================
Versions
================
Product Name : LSI MegaRAID SAS 9280-8e
Serial No : XXXXXXXXX
FW Package Build: 12.12.0-0090


ものの数分でおわるお