2010年3月20日土曜日

Solaris FC-SANにおけるMPxIO設定


このエントリーをはてなブックマークに追加


I/Oのマルチパスは安全性の高いストレージ環境を構築する上では欠かせない要素となる。

永らくSolarisではサードパーティ製のVeritas Volume Manager (VxVM)を使ったマルチパス環境が一般的であったが、Solaris9からOS標準のI/Oマルチパスがサポートされるようになった。



2010年3月18日木曜日

Solaris ZFS + LiveUpgrade で リスク低減したパッチ運用


このエントリーをはてなブックマークに追加


通常OSパッチや製品パッチを適用する際は、万一パッチ適用後に不具合が発生したことを考え、OSバックアップ(コールドバックアップ) → パッチ適用 → 動作確認 という流れをとる場合がほとんどだと思う。
万一不具合があればOSをリストアする必要(パッチを外すだけでOSな場合もある)が出てくるが、これは非常にリスクのある作業となる。

Solaris ZFS+LiveUpgradeはは現時点で他のOSには無い非常に優れた仕組みで、
OSパッチ適用によるリスクとダウンタイムを最小にすることが可能となる。

簡単に説明すると、ZFSのクローン機能を使い、複製したrootボリュームに対して、パッチを適用し、起動先をパッチを適用したボリュームに切り替えて再起動する。不具合が発生した場合は、起動先をパッチ適用前のボリュームに切り替えれば再起動だけで元に戻すことができる。




初期状態
(初回はこのコマンドは失敗する場合がある、その場合は1回lucreateを実行するとそれ以降動くようになる)
# lustatus
Boot Environment           Is       Active Active    Can    Copy
Name                       Complete Now    On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
s10x_u8wos_08a             yes      yes    yes       no     -


Recommened Patchを適用するための領域を作成
# lucreate -n s10x_u8_r200912
# lustatus
Boot Environment           Is       Active Active    Can    Copy
Name                       Complete Now    On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
s10x_u8wos_08a             yes      yes    yes       no     -
s10x_u8_r200912            yes      no     no        yes    -

パッチ適用(初めに必須パッチを適用。。。これはLU関連のパッチ等を先に当てないとLU自体が失敗してしまうので用意されているオプション)
# cd 10_Reccomended
# ./installcluster --apply-prereq --s10cluster   ・・・s10clusterはREADMEに書かれている安全キーワード(このオプション自体に意味はないが、指定しないと先に進めない。。。ようするにREADMEを読めという事)
# ./installcluster -B s10x_u8_r200912 --s10cluster

パッチ適用したボリュームを次回起動時に有効化
# luactivate s10x_u8_r200912
# lustatus
Boot Environment           Is       Active Active    Can    Copy
Name                       Complete Now    On Reboot Delete Status
-------------------------- -------- ------ --------- ------ ----------
s10x_u8wos_08a             yes      yes    no        no     -
s10x_u8_r200912            yes      no     yes       no     -

# init 6  ・・・rebootコマンドでは終了時にbootプロセス変更の処理が走らないので、必ずinit 6を行う。

x86_x64 Solarisの場合、grubのメニューに新規追加したボリュームが起動時の選択して加わり、そちらがデフォルト起動になっている。
万一、新規ボリュームから起動できない場合は、旧ボリュームから起動すれば元の状態へ復帰可能。


2010年3月16日火曜日

IBM XIV グリッド型ストレージ


このエントリーをはてなブックマークに追加


参考資料

http://www-06.ibm.com/systems/jp/storage/products/disk/xiv/
http://www.youtube.com/watch?v=Q6Qn6PyPGg0


従来のストレージは一つの(または冗長化された)コントローラ配下に大量のディスクが設置される。
これらがFiberChannelスイッチにより階層化されSANを構築する。

基本的にはストレージ性能=コントローラの性能となり、ハイエンドストレージとは、性能の高いコントローラを搭載したストレージだった。

XIVは階層型ではなく、並列型のアーキテクチャを持つグリッド型のストレージです。
ノードと呼ばれるCPU/MEM/DISKを持った1つの筺体を最小単位とし、このノードを並列に並べXIVは構成されます。
外部からXIVをみた際に複数のノードがあたかも1つのストレージで在るかのようにふるまいます。
(ノードを1つのHDDと見立て、それらを組み合わせてRAIDを組むイメージ)

使用する際は専用の管理ツールから、LUNの容量、冗長性のレベル、LUN番号、ホストアクセス制限を割り当てるだけで、今までのようにRAID構成、LUN構成、コントローラーオーナーのような細かいことを気にする必要がなく、ベーシックな部分がオートマチックに動作するようになっています。

I/Oはノード間でインテリジェンスに分散され、データの冗長性と速度を保ちます。

同じような構造を持つストレージにIsilonが在ります。
XIVがFC-SANストレージなのに対して、IsilonはNASですが、どちらも同じグリッド構造を持っています。

両者ともストレージの知識がなくとも一定のパフォーマンスと信頼性が担保されるため、使い勝手がよさそうにも見えますが、
Isilonは細かなファイルI/Oに弱く、XIVはFC-SANであるためサービス提供には上位側のOS/アプリに強く依存してしまいます。

が、それが解決された適用範囲では非常に強力な性能を発揮するストレージだと思われます。

*なんでも細かく設定して管理するのが好きな日本人好みではない気がします。


2010年3月7日日曜日

Nexsan完全冗長クラスタストレージ


このエントリーをはてなブックマークに追加


YouTubeで偶然見つけた、Nexsan社という米国メーカーの製品。

完全冗長クラスタストレージ
http://www.nexsan.jp/fully_redundant_cluster.html

RAID を超えたミラーリングで完全冗長クラストレージを実現
http://www.youtube.com/watch?v=nujj-704dj4


本来ならミドルクラス~ハイエンドのFCストレージで実現されていたストレージの冗長化機能を、iSCSIの特性を生かしてローエンドストレージで実現してしまおうというコンセプトのようです。

最近は仮想化が一般的になり、VMotionのような素晴らしい機能を使うため、共有ストレージを導入するケースが多いですが、こうなるとストレージに多くの重要データが集中し、ストレージ停止時のリスクが非常に増大します。そのためストレージの冗長構成や高信頼なストレージを導入しコストが高くなってしまう傾向があります。
VMwareはvSphere4からiSCSIのサポートを強化しているので、このNexsan iSCSIストレージ等と組み合わせることで、安価で高可用なシステムが構築できそうです。


【Nexsan社についての調査】
Nexsan社は国内ではEMCやNetAppに比べると、大々的に展開しているわけではないので、それほど有名ではないですが、
米国ではそこそこの知名度があるメーカで、特にアーカイブ向けに特化されたコストパフォーマンスのよい大容量かつ高集積なストレージを得意としているようです。
また省電力の分野にも一日の長があるようで、高集積による部品削減等のノウハウを組み込むことで同一容量の他社ストレージ品に比べかなりの省電力性を誇り、AutoMAIDと呼ばれる、アイドル状態のディスク回転数を制御する機構をいち早く取り入れ、実用化もしています。

Nexsan社のストレージを国内で検索すると、東京大学のディスクストレージの省電力に関する研究論文がいくつかヒットします。
http://www.google.co.jp/search?hl=ja&rlz=1C1GGLS_jaJP362JP362&q=nexsan+ディスクアレイ+東京大学&btnG=検索&lr=&aq=f&oq=

いずれはこういった磁気ディスクもフラッシュメモリストレージに置き換わっていくのでしょうが、少なくとも後5年はこういった製品を利用して、データセンタの省電力化を計っていく必要がありそうです。


磁気ディスクとフラッシュメモリの比較


このエントリーをはてなブックマークに追加


最近、フラッシュメモリの進歩が目覚ましい。

パナソニックから発売された64GB SDXCメモリカード
http://panasonic.co.jp/corp/news/official.data/data.dir/jn100120-1/jn100120-1.html

この進歩の速度は、FDDや磁気テープ全盛時代のHDDの進歩に似たものがある。

HDDが出始めた当時は、大容量領域は磁気テープ、高速なアクセスにはHDDといわれたが、
HDDの大容量化と低価格化で、磁気テープは輸送できるバックアップ媒体として価値を残すのみで、完全にHDDに持って取って代わってしまった。

ここではHDDとフラッシュメモリについて比較してみる。

比較項目HDDフラッシュメモリ備考
比較製品 HGST Ultrastar 2TB 7200rpm Panasonic 64GB SDXCメモリーカード
容量 2000GB 64GB
価格 約¥30,000 約¥47,000 価格.com調べ
転送速度 134MB/sec * 22MB/sec *サステイン転送
消費電力 11W na
寸法[mm] 101.6x26.1x147 24x32x2.1
体積[m^3]389.8 x10^-6 1.613 x10^-6
重量 740g 2.2g
価格/容量[¥/GB] 15 734
消費電力/容量[W/GB]0.0055 na
体積/容量[m^3/GB] 195 x 10^-9 25 x 10^-9
重量/容量[g/GB] 0.37 0.0344
容量/体積[PB/m^3] 5.13 39.7
容量/重量[GB/g] 2.7 29.1

価格と転送速度以外の面で、圧倒的にフラッシュメモリが優れていることが分かる。
特に同一の体積下(単位体積)あたりの記憶容量(記録密度)に関しては約8倍。単位重量当たりは11倍。

データがないため比較できなかったが、フラッシュメモリの諸費電力が気になるところではあるが、
一般にフラッシュドライブを省電力と宣伝しているメーカの事を考えると、
消費電力でもフラッシュドライブに軍配が上がる気がする。

となると、本当に価格面以外のメリットがHDDには無い。
価格の差はいずれ大量生産が進めば、規模の経済効果で追いつかれてしまうことを考えると、
将来的にHDDはどんな地位に落ち着くとこになるのだろう。


2010年3月2日火曜日

Solaris/ZFS/Samba


このエントリーをはてなブックマークに追加


こちらも全然関係ないですが作業メモ

■インストール
Ultra 24へのSolaris10インストール

OS領域:SILICON POWER SP032GBUF2920V1X 《USBメモリ 32GB》 x2
データ領域:HGST SATA 7200rpm 2TB x4

*現時点で、Solaris10はUSBデバイスへのインストールと起動をサポートしていない。

まず、内蔵HDDを全てはずし、USBメモリを二つ接続。
USBは接続する場所は重要なので接続ポートを後で変えないように気をつける。

BIOSの起動順序を 光学デバイス -> USBデバイス -> 内蔵HDD -> ネットワークの順に設定。

通常のインストール同様Solaris10のイメージをDLし、DVDへ焼いたものから起動しインストール。
使用したのは Solaris 10 10/09 s10x_u8wos_08a X86

コンソール画面に、

Jan 4 14:39:00 sol10-u24 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci108e,5351@1d,7/storage@3/disk@0,0 (sd1):
Jan 4 14:39:00 sol10-u24 Check Condition on REQUEST SENSE
Jan 4 14:39:00 sol10-u24 scsi: [ID 107833 kern.warning] WARNING: /pci@0,0/pci108e,5351@1d,7/storage@2/disk@0,0 (sd0):
Jan 4 14:39:00 sol10-u24 Check Condition on REQUEST SENSE

というエラーがでるが、これは無視してよい。

Select a Language
→ Japanese

ネットワーク接続
→ する

DHCP、IPv6
→ 使用しない

ホスト名、IPアドレス、サブネット
→ あらかじめ決めたものを設定。

ゲートウェイ
→ 指定する

Kerberous
→ 使用しない

ネームサービス
→ DNS

インストールタイプ
→ 全体ディストリビューション+OEMサポート

インストールファイルシステム
→ ZFS(USBメモリが二つ見えるので、両方チェックを入れるとミラー完了)

問題なくインストール終了


■インストール後基礎設定

(1)最初のログインをする前にrootホームディレクトリの変更
Solarisではrootユーザのホームディレクトリが/に設定されているが、
JDS, CDEにログインした際に各種ディレクトリが/直下に作成されてしまうのは煩わしいので変更。

コンソールモードでrootログインし作業
# mkdir /root
# chmod 700 /root
# vi /etc/passwd
root:x:0:0:Super-User:/root:/sbin/sh

改めて、JDSでログインし直す。

(2)パッチの適用(Sun Updata Manager使用)
rootでのJDS初期ログイン時、UldateManagerへの登録を促される。
事前にアカウントを作成しておくことで、パッチのDLが可能になるので登録しておく。
登録完了後、推奨パッチの一覧がリストアップされるが、ここではパッチ適用を行わずそのまま終了。
以下、CUIで適用を行う。

# smpatch analyze ・・・推奨パッチの一覧が表示される
# smpatch update ・・・推奨パッチのダウンロードと、適用が行われる。

今回適用したパッチ、
122213-34 GNOME 2.6.0_x86: GNOME Desktop Patch
119901-09 GNOME 2.6.0_x86: Gnome libtiff - library for reading and writing TIFF Patch
120544-15 SunOS 5.10_x86: Apache 2 Patch
122912-18 SunOS 5.10_x86: Apache 1.3 Patch
141031-08 SunOS 5.10_x86: passwd patch
120273-28 SunOS 5.10_x86: SMA patch
123896-15 SunOS 5.9_x86 5.10_x86: Common Agent Container (cacao) runtime 2.2.3.1 upgrade patch 15
142901-03 SunOS 5.10_x86: kernel patch
121082-08 SunOS 5.10_x86: Disable Transport Agentry for Sun Update Connection Hosted EOL
142048-05 SunOS 5.10_x86: arcfour and rsa patch
141525-07 SunOS 5.10_x86: ssh and openssl patch
141511-05 SunOS 5.10_x86: ehci, ohci, uhci patch
141501-04 SunOS 5.10_x86: kinit patch
119281-21 CDE 1.6_x86: Runtime library patch for Solaris 10
139621-01 CDE 1.6_x86: DtHelp patch
126366-16 SunOS 5.10_x86: CDE Desktop changes - Solaris Trusted Extensions
120461-17 GNOME 2.6.0_x86: Gnome libs Patch
119549-14 GNOME 2.6.0_x86: Gnome Multi-protocol instant messaging client Patch
139100-03 SunOS 5.10_x86: gtar patch
119255-71 SunOS 5.10_x86: Install and Patch Utilities Patch
125062-06 Message Queue 3.7 UR2 Patch 3_x86 SunOS 5.9 5.10 Core product
141879-10 SunOS 5.10_x86: iSCSI patch
118668-24 JavaSE 5.0_x86: update 22 patch (equivalent to JDK 5.0u22)
118669-24 JavaSE 5.0_x86: update 22 patch (equivalent to JDK 5.0u22), 64bit
119214-21 NSS_NSPR_JSS 3.12.5_x86: NSPR 4.8.2 / NSS 3.12.5 / JSS 4.3.1
137148-05 SunOS 5.10_x86: libexpat patch
119964-19 SunOS 5.10_x86: Shared library patch for C++_x86
121431-44 SunOS 5.8_x86 5.9_x86 5.10_x86: Live Upgrade Patch
125732-05 SunOS 5.10_x86: XML and XSLT libraries patch
137081-04 SunOS 5.10_x86: libpng Patch
123591-11 SunOS 5.10_x86: PostgresSQL patch
136999-07 SunOS 5.10_x86: PostgreSQL 8.2 core patch
137001-05 SunOS 5.10_x86: PostgreSQL 8.2 documentation patch
138827-05 SunOS 5.10_x86: PostgreSQL 8.3 core patch
138823-05 SunOS 5.10_x86: PostgreSQL 8.3 documentation patch
119789-10 SunOS 5.10_x86: Sun Update Connection Proxy 1.0.9
125216-03 SunOS 5.10_x86: wget patch
122676-04 SunOS 5.10_x86: SunFreeware samba man pages patch
119758-17 SunOS 5.10_x86: Samba patch
119961-06 SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
120190-19 StarSuite 8 (Solaris_x86): Update 14
136709-01 SunOS 5.10_x86: Service Tags patch
125534-15 Gnome 2.6.0_x86: Trusted Extension Runtime Patch
125542-06 Mozilla 1.7_x86: Mozilla Thunderbird email client
125720-34 X11 6.8.0_x86: Xorg server patch
120095-29 X11 6.6.2_x86: xscreensaver patch

121431-44 は自動適用されないため、手動で適用する。
# patchadd -n /var/sadm/spool/121431-44.jar  ・・・ -n は署名付きパッチの署名検証をせずに適用するオプション

再起動することで、全ての変更が適用される。
# shutdown -y -i 6 -g 0


■ZFS環境の設定

(1)内蔵ディスクの組み込み
電源停止後、外しておいたUltra 24の内蔵ディスクを取り付ける。
# shutdown -y -i 5 -g 0

電源ON後、デバイスファイルの再構築
# reboot -- -r

再起動後、認識されていることを確認
# format -e
AVAILABLE DISK SELECTIONS:
0. c0t0d0
/pci@0,0/pci108e,5351@1d,7/storage@2/disk@0,0
1. c1t0d0
/pci@0,0/pci108e,5351@1d,7/storage@3/disk@0,0
2. c2t1d0
/pci@0,0/pci108e,5351@1f,2/disk@1,0
3. c2t2d0
/pci@0,0/pci108e,5351@1f,2/disk@2,0
4. c2t3d0
/pci@0,0/pci108e,5351@1f,2/disk@3,0
5. c2t4d0
/pci@0,0/pci108e,5351@1f,2/disk@4,0
Specify disk (enter its number):
・・・認識を確認したらCtl-Cで終了。

# zpool status
プール: rpool
状態: ONLINE
スクラブ: 何も要求されませんでした
構成:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror ONLINE 0 0 0
c0t0d0s0 ONLINE 0 0 0
c1t0d0s0 ONLINE 0 0 0

エラー: 既知のデータエラーはありません # zpool create spool raidz c2t1d0 c2t2d0 c2t3d0 c2t4d0
# zpool status
プール: rpool
状態: ONLINE
スクラブ: 何も要求されませんでした
構成:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror ONLINE 0 0 0
c0t0d0s0 ONLINE 0 0 0
c1t0d0s0 ONLINE 0 0 0

エラー: 既知のデータエラーはありません

プール: spool
状態: ONLINE
スクラブ: 何も要求されませんでした
構成:

NAME STATE READ WRITE CKSUM
spool ONLINE 0 0 0
raidz1 ONLINE 0 0 0
c2t1d0 ONLINE 0 0 0
c2t2d0 ONLINE 0 0 0
c2t3d0 ONLINE 0 0 0
c2t4d0 ONLINE 0 0 0

エラー: 既知のデータエラーはありません

zfs 領域の作成
# zfs create spool/cifs01

無駄な負荷を減らす(アクセスタイムを記録しない)
# zfs set atime=off spool/cifs01

圧縮を有効に
# zfs set compression=on spool/cifs01

■sambaの設定

sambaはSolaris標準添付を使用する。

コンフィグファイルの編集
# cp /etc/sfw/smb.conf-example vi /etc/sfw/smb.conf
# chmod 755 /etc/sfw/smb.conf
# vi /etc/sfw/smb.conf
------------------------------------------------
[global] セクションに追加
hosts allow = 192.168.1.    ・・・ローカルセグメントのみ許可
dos charset = CP932      ・・・文字コード設定
unix charset = UTF-8
display charset = UTF-8
mangled names = no      ・・・Winのショートカット名を無効にする。

#[printers]   ・・・プリンタは使わないのでコメント
# comment = All Printers
# path = /var/spool/samba
# browseable = no
# Set public = yes to allow user 'guest account' to print
# guest ok = no
# writable = no
# printable = yes

[raidz-spool-cifs01]
comment = raidz spool cifs01
path = /spool/cifs01
valid users = root
public = no
writable = yes
printable = no
create mask = 0765
------------------------------------------------

# svcadm enable svc:/network/winbind:default
# svcadm enable svc:/network/samba:default

# /usr/sfw/bin/smbpasswd -a root

ユーザ管理はsmbpasswdを使う。この時に指定するユーザは/etc/passwdに存在する必要がある。

以上の操作で、Windowsマシンから \\sol10-hostname\raidz-spool-cifs01 でアクセス可能。



Solaris10 へリモートX接続


このエントリーをはてなブックマークに追加


全然関係ないですが作業メモ

Solaris10はデフォルトでリモートからX接続できない。
Oracle等インストーラーがXでないと動かないものもあるため有効にしておく。


以下rootで作業

# inetadm -e svc:/network/rexec:default
# inetadm -e svc:/application/x11/xfs:default

# svccfg
svc:> select svc:/application/graphical-login/cde-login
svc:/application/graphical-login/cde-login> setprop dtlogin/args = astring:"\ -udpPort\ 177"
svc:/application/graphical-login/cde-login> end

# svcadm restart svc:/application/graphical-login/cde-login

このままではrootでログインできないので、

vi /etc/default/login

# CONSOLE=/dev/console ← コメントにする。

これで接続可能。



このブログの趣旨


このエントリーをはてなブックマークに追加


データを保護するためにどのような方針を練るか。

HDDの物理的な破損に対してはRAIDを。
ユーザ操作ミスによるファイル削除にはスナップショットを。
論理的、または人為的な大規模なファイル破損にはテープでのバックアップを。

とさまざまな対策をデータの重要度や予算に応じて皆様も考えていると思います。


ここで下記のブログを参照させていただき、今までは考えなかった現象に初めて気がつかされました。

あなたのデータは既に壊れているかもしれない(Silent Data Corruption)
http://raven.air-nifty.com/night/2009/07/silent-data-cor.html


ハードディスクに書き込まれたデータが人知れず壊れている可能性があるという内容の記事です。実に怖い。
ただ思い返してみると、久々に読もうと思ったファイルが開けない、という事が何回かあった気がします。
全てがこの現象によって引き起こされているとは思わないですが、もしかすると該当するものもあったかも知れません。

実家で父が大量にため込んだFDD(5インチ)をようやく処分しようとして、
事前にデータをHDDに移そうと、どこで買ってきたのか、
USB-シリアルの変換ケーブルを使って、5インチFDをつなげてデータをサルベージしていた事がありました。

使わなくなって15年?ほど経過し、その間押入れの奥にしまわれていた
約300枚のFDを1週間ほどかけて順に読み取っていましたが実に半分のFDDが壊れていたとのこと。
(逆に半分も読めたことが脅威なのでしょうか?)

今とは精度が比べ物にならないにせよ、磁気データのもろさを実感させられます。


前置きが長くなりましたが、Silent Data Corruption とは、
保存したはずの磁気データがいつの間にか消えてしまうことを指します。
全部が突然消失するわけではなく、

00001000000000011111111101010001001001010

といったデータの1つまたは複数のビットがOSの指示なく突然反転してしてしまう現象を指します。
当然、ファイルフォーマットとの一部が破損することで、アプリケーションからはファイルが開けなくなり、「ファイルが壊れた」状態になってしまいます。

*ビット列の壊れ方にも何パターンかあるようです。
*詳細については上記紹介ブログでリンクされているpdfドキュメントをご参照ください。
http://fuji.web.cern.ch/fuji/talk/2007/kelemen-2007-C5-Silent_Corruptions.pdf


上記リンク先では保存したデータが「人知れず、前触れもなく」破損するという事実を実験的に証明しています。


恐らくこの現象は磁気ディスク装置が世の中に出回ったことから在る現象なのでしょうが、それほど大きな問題にはなっていませんでした。
そもそも壊れたのが、ディスクビット列の反転なのか、保存する際の予期せぬ動作によるものなのか、ファイルシステムのバグなのか、それともディスク装置の不良なのかを後から判別することがきわめて困難だからです。
また磁気ディスク装置というものがそれほど信用されていなかったという背景もあるかもしれません。

しかし最近はありとあらゆるデータが電子化され、磁気ディスクへ保存されるようになり、取り扱われるデータの量は1企業内でも簡単に100TBを超え、入出力の過程で一時的に書き込まれるファイルの量を加味すればPBオーダーでのデータが日々磁気ディスクに書き込まれていることになります。

このブログではこれらのコンピュータを使って生み出されたデータを如何に安全に保存していくか、という内容を中心にソフトやハードについて紹介していく予定です。