Osc2012 tokyo fall_home_san_nakaya_v1.1

  • 1,549 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,549
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
22
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 色々捗る自宅検証環境!Linux+SCST+ZFSで作る多機能型FC-SANストレージとSANbootのおはなし オープンソースカンファレンス 2012 Tokyo/Fall 自宅SAN友の会(#jitakusan) Satoru Nakaya(@giraffeforestg) 1
  • 2. 自宅SAN友の会 自己紹介× 中谷 悟× 岐阜・名古屋で大学向けインフラSEやってます。× 岐阜在住。(飛騨牛うまい , 鵜飼有名)× VMware , KVM , Shibboleth , Capistrano , Zabbix を実践投入しつつ、OpenStack , CloudStack , Chef , OpenAM を勉強中です。 本日はよろしくお願いします。#jitakusan 2
  • 3. 自宅SAN友の会 自宅検証環境における課題 × 検証したいターゲットが沢山あるのに、自宅のマ シンが足りない。環境切り替える度に再インス トールやリストアは面倒、、、 ※仮想マシンで済めばいいけど、プライベートクラウドとか ハイパーバイザーを検証する時にネストとかも大変#jitakusan 3
  • 4. 自宅SAN友の会 自宅検証環境における課題 × たとえヤフオクとかeBayで中古サーバを山ほど 大人買いしたとしても、置く場所がない。 × ラックを買えばいいいじゃない!と言うが、40U フル搭載しようものなら木造住宅の貧弱な床が 抜けてしまいます、、、(家族の理解があったとしても)#jitakusan 4
  • 5. 自宅SAN友の会 解決方法× そこで本日のテーマ!Linux+SCST+ZFSで作る多機能型FC-SANストレージとSANbootのおはなし自宅サーバのディスクをFC-SANストレージに統合し、SANbootさせることで、少ないマシンでも効率的に様々なプライベートクラウドを検証できるようにしちゃいます。#jitakusan 5
  • 6. 自宅SAN友の会 解決方法× Before × After OpenStack検証環境 CloudStack検証環境 統合 XXXシステム検証環境 FC-SAN #jitakusan 6
  • 7. 自宅SAN友の会 ご注意!本物の運用環境や商用・エンタープライズな環境には使用しないでください。あくまで自宅の検証環境を充実させる手段として紹介します。サーバにFC-HBAを搭載する際には感電等に十分ご注意ください。電源ケーブルさしたまま作業しないように。もろもろ部品はさわるな危険。ZFSをLiunxで使用する上でのライセンスの問題があるかもしれません。使用は各自の判断でお願いします。(ZFSのライセンスであるCDDLがGPLと相性が悪い)#jitakusan 7
  • 8. 自宅SAN友の会 環境の説明 ~物理的に使用したもの~× 検証用サーバ:PRIMERGY RX200S4 x1 └FC-HBA(Emulex LPe1150) x1× ストレージ用サーバ:PRIMERGY RX300S4 x1 └FC-HBA(QLogic QLE2460) x1× その他 FCケーブル x1 合計約 ¥40,000円#jitakusan 8
  • 9. 自宅SAN友の会 環境の説明 ~物理的に使用したもの~ 検証用サーバ ストレージ用 サーバ#jitakusan 9
  • 10. 自宅SAN友の会 環境の説明 ~物理的に使用したもの~ × FC-HBA購入の際にはPCI-EとかPCI-Xとか、フルサイ ズとかロープロファイルの違いに注意してね。#jitakusan 10
  • 11. 自宅SAN友の会 環境の説明 ~論理的に使用したもの~× 検証用サーバ └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#jitakusan 11
  • 12. 自宅SAN友の会 作ってみよう!× 1.ストレージ用サーバをFC-SANストレージにする× 2.ZFSをSCSTのバックエンドとして使用することで、スナップ ショット/ロールバック機能を実現する。またSCSTのディスクイ メージファイルをqemu-imgで作成し、シンプロビジョニング可能 とする。× 3.検証用サーバをストレージ用サーバのディスクからSANboot させる #jitakusan 12
  • 13. 自宅SAN友の会 作ってみよう!(構成図) ディスクレス 検証用サーバ FC直結(4Gbps)SANboot CentOS+SCST ディスク ZFS/quem-img ストレージ用サーバ#jitakusan 13
  • 14. 自宅SAN友の会1.ストレージ用サーバをFC-SANストレージにする× (1)ストレージ用サーバにCentOS6.3をインストールする× (2)SCSTのパッチをあてたカーネルをインストールする× (3)SCSTをインストールする SCSTやFC-SANストレージに関して 自宅SAN友の会/お役立ちリンク/Linuxベース ストレージ metamdさん , smzkstsさんの資料を参考にしています。 https://sites.google.com/site/jitakusan/link その他,SRCHACKさんのページを参考にしています。 #jitakusan 14
  • 15. 自宅SAN友の会1.ストレージ用サーバをFC-SANストレージにする (1)ストレージ用サーバにCentOS6.3をインストールする× CentOS6.3 x86_64をインストールしてください ※RX300S4の場合、6.3のインストーラが起動できなかった ので、6.2をインストールした後でyum updateで6.3にした。× OSインストール時のインストールパッケージのカスタマイズ ・開発ツール ・開発ライブラリ 後はお好みで。× ディスクはOSとデータで領域を分けてください。 ※今回はsda:OS , sdb:データ(ZFS用)とした。 #jitakusan 15
  • 16. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (2)SCSTのパッチをあてたカーネルをインストールする × 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 #jitakusan 16
  • 17. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (2)SCSTのパッチをあてたカーネルをインストールする × KernelにSCSTのpatchをあてる# cd /usr/src# patch -p0 < /root/scst/trunk/scst/kernel/scst_exec_req_fifo-2.6.39.patch ■ 参考 cant find file to patch at input line 4 Perhaps you used the wrong -p or --strip option? このメッセージが出力されたらpatchをあて The text leading up to this was: る対象のファイルが見つかっていないので、 -------------------------- pacthファイルの中身をみて、シンボリックリ |=== modified file block/blk-map.c ンクはる等して、位置をあわせること |--- old/block/blk-map.c 例:ln –s linux-2.6.39.4 linux-2.6.39 2012-08-08 02:57:29 +0000 |+++ new/block/blk-map.c 2012-08-08 03:02:56 +0000 -------------------------- File to patch: #jitakusan 17
  • 18. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (2)SCSTのパッチをあてたカーネルをインストールする × 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 #jitakusan 18
  • 19. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (2)SCSTのパッチをあてたカーネルをインストールする× Linux kernelの.config作成# cd /usr/src/linux# make menuconfig 以下が選択されていることを確認し .configをsaveする。Device Drivers-> SCSI device support-> SCSI low level drivers-> <M> QLogic QLA2XXX Fibre Channel Support [*] QLogic 2xxx target mode support (NEW)× Makefile編集# vi MakefileEXTRAVERSION = -scst #jitakusan 19
  • 20. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (2)SCSTのパッチをあてたカーネルをインストールする × Kernelのコンパイルとインストール(長時間必要)# make bzImage && make modules && make modules_install && make install × OS起動時のKernelを選択# vi /boot/grub/grub.confdefault=0 × OS再起動# reboot# uname -r2.6.39-scst #jitakusan 20
  • 21. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (3)SCSTをインストールする× 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 #jitakusan 21
  • 22. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (3)SCSTをインストールする × 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 #jitakusan 22
  • 23. 自宅SAN友の会 1.ストレージ用サーバをFC-SANストレージにする (3)SCSTをインストールする × scstの設定# vi /etc/init.d/scst# chkconfig: 2345 99 87# vi /etc/default/scstSCST_TARGET_MODULES="scst qla2x00tgt scst_disk scst_vdisk”# scstadmin -write_config /etc/scst.conf# chkconfig --add scst# chkconfig scst on# reboot# service scst statusSCST status: OK #jitakusan 23
  • 24. 自宅SAN友の会2.ZFSをSCSTのバックエンドとして使用する× (1)ZFSをインストールする× (2)SCSTのディスクイメージファイルをqemu-imgで作成する× (3)SCSTを設定する #jitakusan 24
  • 25. 自宅SAN友の会 2.ZFSをSCSTのバックエンドとして使用する (1)ZFSをインストールする× 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 #jitakusan 25
  • 26. 自宅SAN友の会 2.ZFSをSCSTのバックエンドとして使用する (1)ZFSをインストールする× 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 #jitakusan 26
  • 27. 自宅SAN友の会 2.ZFSをSCSTのバックエンドとして使用する (1)ZFSをインストールする × ZFSのストレージプールとファイルシステムを作成する# zpool create pool01 /dev/sdbinvalid vdev specificationuse -f to override the following errors:/dev/sdb does not contain an EFI label but it may contain partitioninformation in the MBR. ラベルをつけろと怒られるので付与する # parted /dev/sdb (parted) mklabel gpt (parted) quit #jitakusan 27
  • 28. 自宅SAN友の会 2.ZFSをSCSTのバックエンドとして使用する (1)ZFSをインストールする× ZFSのストレージプールとファイルシステムを作成する# zpool create pool01 /dev/sdb# zfs create pool01/lun01# zfs listNAME USED AVAIL REFER MOUNTPOINTpool01 128K 268G 31K /pool01pool01/lun01 30K 268G 30K /pool01/lun01 #jitakusan 28
  • 29. 自宅SAN友の会 2.ZFSをSCSTのバックエンドとして使用する (2)SCSTのディスクイメージファイルをqemu-imgで作成する × SCSTのディスクイメージファイルをqemu-imgで作成する# yum install qemu-img -y# qemu-img create -f raw /pool01/lun01/lun01.img 10G# ls -ls /pool01/lun01/lun01.img1 -rw-r--r--. 1 root root 10737418240 8月 18 18:47 2012 /pool01/lun01/lun01.img ファイルのディスク割り当て量(1024 バイトブロック単位) 実使用量だけ消費する。(シンプロビジョニング)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 #jitakusan 29
  • 30. 自宅SAN友の会 2.ZFSをSCSTのバックエンドとして使用する (3)SCSTを設定する × Target Device有効化,グループ作成,ボリューム作成,ボリューム公開等 ストレージ用サーバHBAのWWPN# 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 -target21:00:00:e0:8b:9c:b2:02 -group group01 検証用サーバHBAのWWPN# scstadmin -open_dev lun01 -handler vdisk_fileio -attributesfilename=/pool01/lun01/lun01.img# scstadmin -add_lun 0 -driver qla2x00t -target 21:00:00:e0:8b:9c:b2:02 -groupgroup01 -device lun01 ボリュームの保存先指定# scstadmin -write_config /etc/scst.conf blockioではなくfileioWWNPは後述するFC-BIOSや# cat /sys/class/fc_host/host?/port_name で確認可能。 #jitakusan 30
  • 31. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる× (1)検証用サーバのBIOSを設定する× (2)検証用サーバのFC-BIOSを設定する× (3)検証用サーバにOSをインストールする #jitakusan 31
  • 32. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (1)検証用サーバのBIOSを設定する× BIOSを設定する F2 -> Advanced -> PCI Configuration #jitakusan 32
  • 33. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (1)検証用サーバのBIOSを設定する× BIOSを設定する PCI SLOTS Configuration -> Option ROM Scan : Enabled #jitakusan 33
  • 34. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (2)検証用サーバのFC-BIOSを設定する× FC-BIOSを設定する Alt-E ※ちなみにQLogicの場合はAlt-Qになります #jitakusan 34
  • 35. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (2)検証用サーバのFC-BIOSを設定する× FC-BIOSを設定する 1 -> 2 (Configure This Adapter’s Parameters) #jitakusan 35
  • 36. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (2)検証用サーバのFC-BIOSを設定する× FC-BIOSを設定する 1 (Enable or Disable BIOS) -> 1 (Enable) -> Esc -> Esc #jitakusan 36
  • 37. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (2)検証用サーバのFC-BIOSを設定する× FC-BIOSを設定する 1 (Configure Boot Devices) -> Select a Boot Entry :1 #jitakusan 37
  • 38. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (2)検証用サーバのFC-BIOSを設定する× FC-BIOSを設定する Select The Two Digit Number of The Desired Boot Decice :01 -> Enter Two digits of starting LUN (Hex): 00 #jitakusan 38
  • 39. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (2)検証用サーバのFC-BIOSを設定する× FC-BIOSを設定する Enter a Selection : 01 -> 1 (Boot The device via WWPN) -> x -> Y (Reboot) #jitakusan 39
  • 40. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (3)検証用サーバにOSをインストールする× 以下のようにFC-SAN上のディスクが見えるので 自分の好きなようにインストールしてください。 #jitakusan 40
  • 41. 自宅SAN友の会3.検証用サーバをストレージ用サーバのディスクからSANbootさせる (3)検証用サーバにOSをインストールする× SANboot 完了! #jitakusan 41
  • 42. 自宅SAN友の会 運用を楽しむ(1)× 検証用サーバのbootディスクをコマンドで切り替える 作業前に検証用サーバはshutdownしてね。# qemu-img create -f raw /pool01/lun01/lun01_ubuntu.img 10G# scstadmin -open_dev lun01_ubuntu -handler vdisk_fileio -attributesfilename=/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 CentOS Ubuntu #jitakusan 42
  • 43. 自宅SAN友の会運用を楽しむ(1)× 検証用サーバのbootディスクをコマンドで切り替える #jitakusan 43
  • 44. 自宅SAN友の会運用を楽しむ(1)× 検証用サーバのbootディスクをコマンドで切り替える #jitakusan 44
  • 45. 自宅SAN友の会 運用を楽しむ(1)× もとのディスクに切り替える場合 作業前に検証用サーバはshutdownしてね。# 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 #jitakusan 45
  • 46. 自宅SAN友の会 運用を楽しむ(2)× ZFSのスナップショットとロールバックをたしなむ作業前に検証用サーバはshutdownしてね。# zfs snapshot pool01/lun01@snapshot_01# zfs list -t snapshotNAME USED AVAIL REFER MOUNTPOINTpool01/lun01@snapshot_01 0 - 9.77G - ロールバックコマンドで、スナップショット取得時にファイルをもどせるので 検証サーバの構成を大幅に構成変更する前に、スナップショットをとっておき、失敗したら戻 すといった、VMwareのスナップショットと似たような使い方が可能!# zfs rollback pool01/lun01@snapshot_01 #jitakusan 46
  • 47. 自宅SAN友の会 注意事項× OS再起動後、ZFSのストレージプールが見えなくなったら、、、# zpool list というか再起動したら必ず発生するのはno pools available 何か抜けているのかな、、、# zpool import すいません。ワカリマセン。 pool: pool01 この手順で復旧できます。 id: 14095442938340910494 state: ONLINEaction: The pool can be imported using its name or numeric identifier.config: pool01 ONLINE sdb ONLINE# zpool import -f 14095442938340910494# service scst restart #jitakusan 47
  • 48. 自宅SAN友の会 さいごに × 試してみたいことが沢山!自宅SANを活用して、 新しいものを楽しもう! ☺#jitakusan 48