48
1 色々捗る自宅検証環境! Linux+SCST+ZFSで作る 多機能型FC-SANストレージと SANbootのおはなし オープンソースカンファレンス 2012 Tokyo/Fall 自宅SAN友の会(#jitakusan) Satoru Nakaya(@giraffeforestg)

Osc2012 tokyo fall_home_san_nakaya_v1.1

Embed Size (px)

Citation preview

Page 1: Osc2012 tokyo fall_home_san_nakaya_v1.1

1

色々捗る自宅検証環境!Linux+SCST+ZFSで作る多機能型FC-SANストレージとSANbootのおはなし

オープンソースカンファレンス

2012 Tokyo/Fall

自宅SAN友の会(#jitakusan)

Satoru Nakaya(@giraffeforestg)

Page 2: Osc2012 tokyo fall_home_san_nakaya_v1.1

自己紹介

自宅SAN友の会

#jitakusan

× 中谷 悟

× 岐阜・名古屋で大学向けインフラSEやってます。

× 岐阜在住。(飛騨牛うまい , 鵜飼有名)

× VMware , KVM , Shibboleth , Capistrano , Zabbix

を実践投入しつつ、OpenStack , CloudStack ,

Chef , OpenAM を勉強中です。

本日はよろしくお願いします。

2

Page 3: Osc2012 tokyo fall_home_san_nakaya_v1.1

自宅検証環境における課題

自宅SAN友の会

#jitakusan

× 検証したいターゲットが沢山あるのに、自宅のマシンが足りない。環境切り替える度に再インストールやリストアは面倒、、、

※仮想マシンで済めばいいけど、プライベートクラウドとか

ハイパーバイザーを検証する時にネストとかも大変

3

Page 4: Osc2012 tokyo fall_home_san_nakaya_v1.1

自宅検証環境における課題

自宅SAN友の会

#jitakusan

× たとえヤフオクとかeBayで中古サーバを山ほど大人買いしたとしても、置く場所がない。

× ラックを買えばいいいじゃない!と言うが、40Uフル搭載しようものなら木造住宅の貧弱な床が抜けてしまいます、、、(家族の理解があったとしても)

4

Page 5: Osc2012 tokyo fall_home_san_nakaya_v1.1

解決方法

自宅SAN友の会

#jitakusan

× そこで本日のテーマ!

Linux+SCST+ZFSで作る多機能型FC-SANストレージとSANbootのおはなし

自宅サーバのディスクをFC-SANストレージに統合し、SANbootさせることで、少ないマシンでも効率的に様々なプライベートクラウドを検証できるようにしちゃいます。

5

Page 6: Osc2012 tokyo fall_home_san_nakaya_v1.1

解決方法

自宅SAN友の会

#jitakusan

× Before × AfterOpenStack検証環境 CloudStack検証環境

XXXシステム検証環境FC-SAN

統合

6

Page 7: Osc2012 tokyo fall_home_san_nakaya_v1.1

ご注意!

自宅SAN友の会

#jitakusan

本物の運用環境や商用・エンタープライズな環境には使用しないでください。

あくまで自宅の検証環境を充実させる手段として紹介します。

サーバにFC-HBAを搭載する際には感電等に十分ご注意ください。

電源ケーブルさしたまま作業しないように。もろもろ部品はさわるな危険。

ZFSをLiunxで使用する上でのライセンスの問題があるかもしれません。使用は各自の判断でお願いします。

(ZFSのライセンスであるCDDLがGPLと相性が悪い)

7

Page 8: Osc2012 tokyo fall_home_san_nakaya_v1.1

環境の説明~物理的に使用したもの~

自宅SAN友の会

#jitakusan

× 検証用サーバ:PRIMERGY RX200S4 x1

└FC-HBA(Emulex LPe1150) x1

× ストレージ用サーバ:PRIMERGY RX300S4 x1

└FC-HBA(QLogic QLE2460) x1

× その他 FCケーブル x1

合計約 ¥40,000円

8

Page 9: Osc2012 tokyo fall_home_san_nakaya_v1.1

環境の説明~物理的に使用したもの~

自宅SAN友の会

#jitakusan9

検証用サーバ

ストレージ用サーバ

Page 10: Osc2012 tokyo fall_home_san_nakaya_v1.1

環境の説明~物理的に使用したもの~

自宅SAN友の会

#jitakusan

× FC-HBA購入の際にはPCI-EとかPCI-Xとか、フルサイズとかロープロファイルの違いに注意してね。

10

Page 11: Osc2012 tokyo fall_home_san_nakaya_v1.1

環境の説明~論理的に使用したもの~

自宅SAN友の会

#jitakusan

× 検証用サーバ

└CentOS6.3 x86_64 , Ubuntu 11.10 64 bit

× ストレージ用サーバ

└CentOS6.3 x86_64

└linux-2.6.39(kernel)

└SCST(A Generic SCSI Target Subsystem for Linux)

└ZFS (Linux on ZFS)

└qemu-img

11

Page 12: Osc2012 tokyo fall_home_san_nakaya_v1.1

作ってみよう!

自宅SAN友の会

#jitakusan

× 1.ストレージ用サーバをFC-SANストレージにする

× 2.ZFSをSCSTのバックエンドとして使用することで、スナップショット/ロールバック機能を実現する。またSCSTのディスクイメージファイルをqemu-imgで作成し、シンプロビジョニング可能とする。

× 3.検証用サーバをストレージ用サーバのディスクからSANbootさせる

12

Page 13: Osc2012 tokyo fall_home_san_nakaya_v1.1

作ってみよう!(構成図)

自宅SAN友の会

#jitakusan

ディスク

FC直結(4Gbps)

ZFS/quem-img

CentOS+SCST

ディスクレス

SANboot

検証用サーバ

ストレージ用サーバ

13

Page 14: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする

自宅SAN友の会

#jitakusan

× (1)ストレージ用サーバにCentOS6.3をインストールする

× (2)SCSTのパッチをあてたカーネルをインストールする

× (3)SCSTをインストールする

SCSTやFC-SANストレージに関して自宅SAN友の会/お役立ちリンク/Linuxベース ストレージmetamdさん , smzkstsさんの資料を参考にしています。https://sites.google.com/site/jitakusan/linkその他,SRCHACKさんのページを参考にしています。

14

Page 15: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(1)ストレージ用サーバにCentOS6.3をインストールする

自宅SAN友の会

#jitakusan

× CentOS6.3 x86_64をインストールしてください

※RX300S4の場合、6.3のインストーラが起動できなかった

ので、6.2をインストールした後でyum updateで6.3にした。

× OSインストール時のインストールパッケージのカスタマイズ

・開発ツール

・開発ライブラリ

後はお好みで。

× ディスクはOSとデータで領域を分けてください。

※今回はsda:OS , sdb:データ(ZFS用)とした。

15

Page 16: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(2)SCSTのパッチをあてたカーネルをインストールする

自宅SAN友の会

#jitakusan

× SCSTのソースをダウンロードする

# cd /root

# svn co https://scst.svn.sourceforge.net/svnroot/scst

× Linux kernelをダウンロードする

# cd /usr/src

# wget ftp://ftp.iij.ad.jp/pub/linux/kernel/linux/kernel/v2.6/linux-2.6.39.tar.gz

# tar xvf linux-2.6.39.tar.gz

# ln -s linux-2.6.39 linux

16

Page 17: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(2)SCSTのパッチをあてたカーネルをインストールする

自宅SAN友の会

#jitakusan

× KernelにSCSTのpatchをあてる

# cd /usr/src

# patch -p0 < /root/scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.39.patch

■ 参考

can't find file to patch at input line 4

Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

--------------------------

|=== modified file 'block/blk-map.c'

|--- old/block/blk-map.c 2012-08-08 02:57:29 +0000

|+++ new/block/blk-map.c 2012-08-08 03:02:56 +0000

--------------------------

File to patch:

このメッセージが出力されたらpatchをあてる対象のファイルが見つかっていないので、pacthファイルの中身をみて、シンボリックリンクはる等して、位置をあわせること例:ln –s linux-2.6.39.4 linux-2.6.39

17

Page 18: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(2)SCSTのパッチをあてたカーネルをインストールする

自宅SAN友の会

#jitakusan

× qla2xxxドライバの差し替え

# mv /usr/src/linux/drivers/scsi/qla2xxx /usr/src/linux/drivers/scsi/qla2xxx_bk

# ln -s /root/scst/trunk/qla2x00t /usr/src/linux/drivers/scsi/qla2xxx

18

Page 19: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(2)SCSTのパッチをあてたカーネルをインストールする

自宅SAN友の会

#jitakusan

× Linux kernelの.config作成

# cd /usr/src/linux

# make menuconfig

Device Drivers->

SCSI device support->

SCSI low level drivers->

<M> QLogic QLA2XXX Fibre Channel Support

[*] QLogic 2xxx target mode support (NEW)

以下が選択されていることを確認し.configをsaveする。

× Makefile編集

# vi Makefile

EXTRAVERSION = -scst

19

Page 20: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(2)SCSTのパッチをあてたカーネルをインストールする

自宅SAN友の会

#jitakusan

× Kernelのコンパイルとインストール(長時間必要)

# make bzImage && make modules && make modules_install && make install

× OS起動時のKernelを選択

# vi /boot/grub/grub.conf

default=0

× OS再起動

# reboot

# uname -r

2.6.39-scst

20

Page 21: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(3)SCSTをインストールする

自宅SAN友の会

#jitakusan

× scstのコンパイルとインストール# cd /root/scst/trunk && make 2release

# cd /root/scst/trunk/scst/src && make all && make install

# cd /root/scst/trunk/qla2x00t/qla2x00-target && make && make install

# yum install redhat-lsb -y

# cd /root/scst/trunk/scstadmin && make && make install

21

Page 22: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(3)SCSTをインストールする

自宅SAN友の会

#jitakusan

× scstの設定

# ln -s /lib/modules/2.6.39-scst/kernel/drivers/scsi/qla2xxx/qla2xxx.ko /lib/modules/2.6.39-scst/extra/qla2xxx.ko

# modprobe scst

# modprobe qla2x00tgt

# modprobe qla2xxx

# modprobe scst_disk

# modprobe scst_vdisk

22

Page 23: Osc2012 tokyo fall_home_san_nakaya_v1.1

1.ストレージ用サーバをFC-SANストレージにする(3)SCSTをインストールする

自宅SAN友の会

#jitakusan

× scstの設定

# vi /etc/init.d/scst

# chkconfig: 2345 99 87

# vi /etc/default/scst

SCST_TARGET_MODULES="scst qla2x00tgt scst_disk scst_vdisk”

# scstadmin -write_config /etc/scst.conf

# chkconfig --add scst

# chkconfig scst on

# reboot

# service scst status

SCST status: OK

23

Page 24: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する

自宅SAN友の会

#jitakusan

× (1)ZFSをインストールする

× (2)SCSTのディスクイメージファイルをqemu-imgで作成する

× (3)SCSTを設定する

24

Page 25: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する(1)ZFSをインストールする

自宅SAN友の会

#jitakusan

× splをインストールする

# yum install libuuid-devel lsscsi -y

# wget http://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc10.tar.gz

# tar xvf spl-0.6.0-rc10.tar.gz

# cd spl-0.6.0-rc10

# ./configure && make && make install

25

Page 26: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する(1)ZFSをインストールする

自宅SAN友の会

#jitakusan

× zfsをインストールする

# cd

# wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc10.tar.gz

# tar xvf zfs-0.6.0-rc10.tar.gz

# cd zfs-0.6.0-rc10

# ./configure && make && make install

26

Page 27: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する(1)ZFSをインストールする

自宅SAN友の会

#jitakusan

× ZFSのストレージプールとファイルシステムを作成する

# zpool create pool01 /dev/sdb

invalid vdev specification

use '-f' to override the following errors:

/dev/sdb does not contain an EFI label but it may contain partition

information in the MBR.

ラベルをつけろと怒られるので付与する# parted /dev/sdb(parted) mklabel gpt(parted) quit

27

Page 28: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する(1)ZFSをインストールする

自宅SAN友の会

#jitakusan

× ZFSのストレージプールとファイルシステムを作成する

# zpool create pool01 /dev/sdb

# zfs create pool01/lun01

# zfs list

NAME USED AVAIL REFER MOUNTPOINT

pool01 128K 268G 31K /pool01

pool01/lun01 30K 268G 30K /pool01/lun01

28

Page 29: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する(2)SCSTのディスクイメージファイルをqemu-imgで作成する

自宅SAN友の会

#jitakusan

× SCSTのディスクイメージファイルをqemu-imgで作成する

# yum install qemu-img -y

# qemu-img create -f raw /pool01/lun01/lun01.img 10G

# ls -ls /pool01/lun01/lun01.img

1 -rw-r--r--. 1 root root 10737418240 8月 18 18:47 2012 /pool01/lun01/lun01.img

10241328 -rw-r--r--. 1 root root 10485760000 8月 18 18:56 2012 /pool01/lun01/lun01.img.dd

↑参考:ddでファイル作成した場合は全領域を最初から確保。# dd if=/dev/zero of=/pool01/lun01/lun01.img.dd bs=1M count=10000

ファイルのディスク割り当て量(1024 バイトブロック単位)実使用量だけ消費する。(シンプロビジョニング)

29

Page 30: Osc2012 tokyo fall_home_san_nakaya_v1.1

2.ZFSをSCSTのバックエンドとして使用する(3)SCSTを設定する

自宅SAN友の会

#jitakusan

× Target Device有効化,グループ作成,ボリューム作成,ボリューム公開等

# scstadmin -enable 21:00:00:e0:8b:9c:b2:02 -driver qla2x00t

# scstadmin -add_group group01 -driver qla2x00t -target 21:00:00:e0:8b:9c:b2:02

# scstadmin -add_init 10:00:00:00:c9:70:f1:fd -driver qla2x00t -target 21:00:00:e0:8b:9c:b2:02 -group group01

# scstadmin -open_dev lun01 -handler vdisk_fileio -attributes filename=/pool01/lun01/lun01.img

# scstadmin -add_lun 0 -driver qla2x00t -target 21:00:00:e0:8b:9c:b2:02 -group group01 -device lun01

# scstadmin -write_config /etc/scst.conf

ストレージ用サーバHBAのWWPN

検証用サーバHBAのWWPN

ボリュームの保存先指定blockioではなくfileio

WWNPは後述するFC-BIOSや# cat /sys/class/fc_host/host?/port_name で確認可能。

30

Page 31: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる

自宅SAN友の会

#jitakusan

× (1)検証用サーバのBIOSを設定する

× (2)検証用サーバのFC-BIOSを設定する

× (3)検証用サーバにOSをインストールする

31

Page 32: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(1)検証用サーバのBIOSを設定する

自宅SAN友の会

#jitakusan

× BIOSを設定する

F2 -> Advanced -> PCI Configuration

32

Page 33: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(1)検証用サーバのBIOSを設定する

自宅SAN友の会

#jitakusan

× BIOSを設定する

PCI SLOTS Configuration -> Option ROM Scan : Enabled

33

Page 34: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(2)検証用サーバのFC-BIOSを設定する

自宅SAN友の会

#jitakusan

× FC-BIOSを設定する

Alt-E ※ちなみにQLogicの場合はAlt-Qになります

34

Page 35: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(2)検証用サーバのFC-BIOSを設定する

自宅SAN友の会

#jitakusan

× FC-BIOSを設定する

1 -> 2 (Configure This Adapter’s Parameters)

35

Page 36: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(2)検証用サーバのFC-BIOSを設定する

自宅SAN友の会

#jitakusan

× FC-BIOSを設定する

1 (Enable or Disable BIOS) -> 1 (Enable) -> Esc -> Esc

36

Page 37: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(2)検証用サーバのFC-BIOSを設定する

自宅SAN友の会

#jitakusan

× FC-BIOSを設定する

1 (Configure Boot Devices) -> Select a Boot Entry :1

37

Page 38: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(2)検証用サーバのFC-BIOSを設定する

自宅SAN友の会

#jitakusan

× FC-BIOSを設定する

Select The Two Digit Number of The Desired Boot Decice :01

-> Enter Two digits of starting LUN (Hex): 00

38

Page 39: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(2)検証用サーバのFC-BIOSを設定する

自宅SAN友の会

#jitakusan

× FC-BIOSを設定する

Enter a Selection : 01

-> 1 (Boot The device via WWPN) -> x -> Y (Reboot)

39

Page 40: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(3)検証用サーバにOSをインストールする

自宅SAN友の会

#jitakusan

× 以下のようにFC-SAN上のディスクが見えるので

自分の好きなようにインストールしてください。

40

Page 41: Osc2012 tokyo fall_home_san_nakaya_v1.1

3.検証用サーバをストレージ用サーバのディスクからSANbootさせる(3)検証用サーバにOSをインストールする

自宅SAN友の会

#jitakusan

× SANboot 完了!

41

Page 42: Osc2012 tokyo fall_home_san_nakaya_v1.1

運用を楽しむ(1)

自宅SAN友の会

#jitakusan

× 検証用サーバのbootディスクをコマンドで切り替える

# qemu-img create -f raw /pool01/lun01/lun01_ubuntu.img 10G

# scstadmin -open_dev lun01_ubuntu -handler vdisk_fileio -attributes filename=/pool01/lun01/lun01_ubuntu.img

# scstadmin -replace_lun 0 -driver qla2x00t -target 21:00:00:e0:8b:9c:b2:02 -group group01 -device lun01_ubuntu

# scstadmin -write_config /etc/scst.conf

lun01 lun01_ubuntu

CentOSUbuntu

作業前に検証用サーバはshutdownしてね。

42

Page 43: Osc2012 tokyo fall_home_san_nakaya_v1.1

運用を楽しむ(1)

自宅SAN友の会

#jitakusan

× 検証用サーバのbootディスクをコマンドで切り替える

43

Page 44: Osc2012 tokyo fall_home_san_nakaya_v1.1

運用を楽しむ(1)

自宅SAN友の会

#jitakusan

× 検証用サーバのbootディスクをコマンドで切り替える

44

Page 45: Osc2012 tokyo fall_home_san_nakaya_v1.1

運用を楽しむ(1)

自宅SAN友の会

#jitakusan

× もとのディスクに切り替える場合

# scstadmin -replace_lun 0 -driver qla2x00t -target 21:00:00:e0:8b:9c:b2:02 -group group01 -device lun01

# scstadmin -write_config /etc/scst.conf

作業前に検証用サーバはshutdownしてね。

45

Page 46: Osc2012 tokyo fall_home_san_nakaya_v1.1

運用を楽しむ(2)

自宅SAN友の会

#jitakusan

× ZFSのスナップショットとロールバックをたしなむ

# zfs snapshot pool01/lun01@snapshot_01

# zfs list -t snapshot

NAME USED AVAIL REFER MOUNTPOINT

pool01/lun01@snapshot_01 0 - 9.77G -

# zfs rollback pool01/lun01@snapshot_01

ロールバックコマンドで、スナップショット取得時にファイルをもどせるので検証サーバの構成を大幅に構成変更する前に、スナップショットをとっておき、失敗したら戻すといった、VMwareのスナップショットと似たような使い方が可能!

作業前に検証用サーバはshutdownしてね。

46

Page 47: Osc2012 tokyo fall_home_san_nakaya_v1.1

注意事項

自宅SAN友の会

#jitakusan

× OS再起動後、ZFSのストレージプールが見えなくなったら、、、# zpool list

no pools available

# zpool import

pool: pool01

id: 14095442938340910494

state: ONLINE

action: The pool can be imported using its name or numeric identifier.

config:

pool01 ONLINE

sdb ONLINE

# zpool import -f 14095442938340910494

# service scst restart

というか再起動したら必ず発生するのは何か抜けているのかな、、、すいません。ワカリマセン。

この手順で復旧できます。

47

Page 48: Osc2012 tokyo fall_home_san_nakaya_v1.1

さいごに

自宅SAN友の会

#jitakusan

× 試してみたいことが沢山!自宅SANを活用して、新しいものを楽しもう!

48