Successfully reported this slideshow.

Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!

5,722 views

Published on

OSC 2014 Tokyo/Springの日本OpenSolarisユーザーグループセミナー枠での資料です。

ZFSベースのAFP-NASの作り方を説明しています。Netatalk の3.1.0を利用しています。

とっても簡単に作れてしまうので、Time Machine用のNASを探している人は是非チャレンジしてみてください。

2014/2/27追記:
一部の内容を修正(インストールするパッケージの追加と不要な設定の削除)しました。

Published in: Technology
  • Be the first to comment

Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!

  1. 1. Open Source Conference 2014 Tokyo/Spring 2014/3/1 Sat. 14:00-14:45 Macユーザーに贈る! OmniOSで作る お手軽・カンタン・高性能な ZFS-NAS! 日本OpenSolarisユーザーグループ ”びぎなーず”担当 _・)つかまん
  2. 2. かるーく自己紹介 名前:_・)つかまん(@tsukaman) 仕事:社畜業を少々嗜んでおります・・・ 近況:先々週、家族の3/4がインフルで旅行中止に。 専門:元々はUNIX/Linuxとか。最近は仮想化とか。 趣味:
  3. 3. 眼鏡
  4. 4. 眼鏡
  5. 5. 続きはWebで http://tumblr.megane.us
  6. 6. “美しい方はより美しく、そうでない方はそれなりに” –Kayoko Kishimoto
  7. 7. 以上、お約束でした。
  8. 8. Open Source Conference 2014 Tokyo/Spring 2014/3/1 Sat. 14:00-14:45 Macユーザーに贈る! OmniOSで作る お手軽・カンタン・高性能な ZFS-NAS! 日本OpenSolarisユーザーグループ ”びぎなーず”担当 _・)つかまん
  9. 9. 本日のお品書き 15分で学ぶ!Mac OS X向けZFS-NAS構築 OmniOSのインストール OmniOSの初期設定 zpool/zfsの作成 netatalkのインストール Mac OS Xからの接続
  10. 10. OmniOSのインストール まずはインストールメディアを入手 http://omnios.omniti.com 配布形態 CD/iso USB Vagrant その他、AWS AMIやNetwork Installでの利用も可
  11. 11. OmniOSのインストール ちなみに・・・ 今回は仮想環境(VirtualBox)上にインストール メモリ8GB、SSD 80GB x 1、HDD 2TB x 5 ↑コレ、私の自宅サーバでの構成とほぼ同じです ちなみにマシンはHPのML115G5(CPUは4コアのものに換装) 年末に壊れたけどヤフオクで中古を購入しニコイチで復活
  12. 12. OmniOSのインストール ZFSをより 速く 使いたい場合は・・・ メモリ増やす(ARC:Adaptive Replacement Cache 用) いわゆるキャッシュ、DRAM上に存在 L2ARC(Level 2 ARC)デバイスとしてSSDを用意する ARCから溢れたデータはL2ARCに保存される ZIL(ZFS Intent log)デバイスとしてSSDを用意する いわゆるWriteログ、同期書き込みを行う際などに効果を発揮 後はディスク速くしたり、CPU速くしたり…(お金次第?)
  13. 13. え? SSDいっぱいいるの?
  14. 14. つかまん的な回答
  15. 15. SSDパーティションきって 同居させちゃえばいいんじゃね?
  16. 16. OmniOSのインストール というわけで今回は通常よりも1手間増やしてます 1. isoからブート 2. Shellを起動してSSDのパーティショニング 3. インストーラー起動 4. 通常のインストール作業開始
  17. 17. じゃ、こっからはマキで
  18. 18. OmniOSのインストール キーボード配列選択で日本語(23)を選択
  19. 19. OmniOSのインストール インストーラーではなくシェル(3)を起動
  20. 20. OmniOSのインストール formatコマンドを実行しSSD(今回は0)を選択
  21. 21. OmniOSのインストール fdiskコマンドを実行
  22. 22. OmniOSのインストール 1パーティションにするかの質問に「n」を回答
  23. 23. OmniOSのインストール パーティションの作成(1)を実行
  24. 24. OmniOSのインストール パーティションタイプはSOLARIS2(1)を選択
  25. 25. ちなみに今回は・・・ 80GB SSD(c1t0s0)に4パーティション(p1∼4)作成 c1t0d0p1 SOLARIS2 55%(44GB)…rpool用、OS領域 c1t0d0p2 SOLARIS2 20%(16GB)…L2ARC用 c1t0d0p3 SOLARIS2 5%(4GB)…ZIL用、メモリの半分 c1t0d0p4 OTHER OS 20%(16GB)…未使用領域
  26. 26. OmniOSのインストール OS領域パーティションのサイズを%で指定
  27. 27. OmniOSのインストール アクティブパーティションにするか?に「y」と回答
  28. 28. OmniOSのインストール ただしp2 p4はアクティブパーティションにしない
  29. 29. OmniOSのインストール 4パーティション分指定したらExit(6)を選択
  30. 30. OmniOSのインストール 戻ったformatメニューでquitコマンドを実行
  31. 31. OmniOSのインストール exitコマンドでシェルを終了
  32. 32. OmniOSのインストール では、いよいよOmniOSインストーラーの実行(1)
  33. 33. OmniOSのインストール Solaris系でよくみるタイプの挨拶文(F2で先へ)
  34. 34. OmniOSのインストール インストール先はSSDを選択(F2で先へ、以下同)
  35. 35. OmniOSのインストール ディスク全体使用ではなく Use a partition… を選択
  36. 36. OmniOSのインストール 1つ目(今回は44GB)のパーティションを選択
  37. 37. OmniOSのインストール パーティション全体(Use the whole…)を選択
  38. 38. OmniOSのインストール 任意のホスト名を指定
  39. 39. OmniOSのインストール タイムゾーン(リージョン)を指定(ASIA)
  40. 40. OmniOSのインストール タイムゾーン(ロケーション)を指定(Japan)
  41. 41. OmniOSのインストール タイムゾーンを確認
  42. 42. OmniOSのインストール 現在の日付と時間を入力
  43. 43. OmniOSのインストール ここで勝手にインストール開始(SSDだと数分)
  44. 44. OmniOSのインストール インストールが終了したら再起動(F8でReboot)
  45. 45. OmniOSのインストール (ISOが残ってる場合) Boot from… を選択する
  46. 46. OmniOSのインストール すると、SSDにインストールした側のGRUBが起動
  47. 47. OmniOSのインストール 初回起動でおなじみ、SMFのリポジトリDB更新
  48. 48. OmniOSのインストール インストール完了!
  49. 49. OmniOSの初期設定 ここでは必要最低限の初期設定を行います 1. rootパスワード設定 デフォルトは パスワードなし 2. ネットワーク設定 IPアドレス、ゲートウェイ、DNSサーバ等を設定 3. 一般ユーザの追加 SSHログイン用に最低1つは作成しておくと吉 4. sudoコマンドの設定 手順 3.の作成ユーザで管理コマンドを実行可能にする
  50. 50. OmniOSの初期設定 1. rootパスワード設定 # passwd 2. ネットワーク設定 NIC(LINK名)の確認 # dladm show-phys IPアドレスの設定 (動的設定)# ipadm create-addr -T dhcp LINK名/識別名 (静的設定)# ipadm create-addr -T static ¥ > -a IPアドレス/プリフィックス LINK名/識別名
  51. 51. OmniOSの初期設定 2. ネットワーク設定(続き) 設定内容の確認 # ipadm show-addr または # ifconfig (静的設定の場合)デフォルトゲートウェイの追加 # route -p add default ゲートウェイアドレス デフォルトゲートウェイ(経路情報)の確認 # netstat -rn -f inet DNSの設定 # echo 'nameserver DNSサーバアドレス' >> /etc/resolv.conf # cp /etc/nsswitch.conf{,.bak} # cp /etc/nsswitch.{dns,conf}
  52. 52. OmniOSの初期設定 実行の様子 その1
  53. 53. OmniOSの初期設定 実行の様子 その2
  54. 54. OmniOSの初期設定 3. 一般ユーザの追加 wheelグループの新規追加 # groupadd wheel 一般ユーザの新規追加 # useradd -G wheel -d ホームディレクトリパス -m -s シェル ユーザ名 作成したユーザのパスワード設定 # passwd ユーザ名 4. sudoコマンド設定 sudoersファイルの編集(wheelグループにsudo実行許可) # visudo 変更する箇所:75行目 又は 78行目のコメント(#)を削除 • • 75行目の場合、sudo実行時にパスワード入力 78行目の場合、sudo実行時にパスワード省略
  55. 55. OmniOSの初期設定 実行の様子 その3
  56. 56. OmniOSの初期設定 実行の様子 その4
  57. 57. OmniOSの初期設定 実行の様子 その5(今回は78行目を修正)
  58. 58. ここまでやったら 後はSSHで・・・
  59. 59. $ ssh -l ユーザ名 IPアドレス
  60. 60. zpool/zfsの作成 HDDとSSDでzpool/zfsを作成します 1. ディスク番号の確認 formatコマンドでHDD/SSDのディスク番号を確認 2. zpoolの作成 zpoolコマンドでzpool(ストレージプール)を作成 3. zfsの作成 zfsコマンドでZFSデータセットを作成
  61. 61. zpool/zfsの作成 1. ディスク番号の確認 $ sudo format 各HDD/SSDのディスク番号(cXtXdX)を確認 SSDは実際には更にパーティション番号(pX)がつく 2. zpoolの作成 $ sudo zpool create プール名 [RAIDタイプ] ディスク番号 [ディスク番号…] ¥ > [cache L2ARC SSDパーティション番号] [log ZIL SSDパーティション番号] RAIDタイプには mirror や raidz 、 raidz2 などを指定 今回はRAID5相当の raidz を使用 spare でホットスペアも指定できるが、今回は割愛 $ zpool list でzpoolの確認も可能
  62. 62. zpool/zfsの作成 実行の様子 その1
  63. 63. zpool/zfsの作成 実行の様子 その2
  64. 64. zpool/zfsの作成 3. zfsの作成 $ sudo zfs create [-o オプション…] データセット名 今回はオプションとして次の3つを使用 mountpoint=パス名 … マウントポイントパスを指定 dedup=on … 重複排除機能を利用 compression=on … 圧縮機能を利用 ZFSには他にも様々なオプションが存在する $ zpool list でデータセットの確認も可能
  65. 65. zpool/zfsの作成 実行の様子 その3
  66. 66. zpool/zfsの作成 実行の様子 その4
  67. 67. netatalkのインストール 今回はOmniOS用に公開されているIPSリポジトリを利用 1. IPSリポジトリの追加 Unofficial Extrasのuulm.mawiを追加 2. ソフトウェアパッケージのインストール pkgコマンドを実行し、ソフトウェアのインストール 3. netatalkの設定 /etc/afp.conf内にnetatalkの設定を追記 共有ディレクトリの所有者/権限の調整 4. サービスの有効化 svcadmコマンドを実行し、サービスを有効化
  68. 68. netatalkのインストール 1. IPSリポジトリの追加 $ sudo pkg set-publisher ¥ > -g http://scott.mathematik.uni-ulm.de/release uulm.mawi $ pkg publisher でリポジトリ登録の確認も可能 2. ソフトウェアパッケージのインストール $ sudo pkg install netatalk unicode
  69. 69. netatalkのインストール 実行の様子 その1
  70. 70. netatalkのインストール 実行の様子 その2
  71. 71. netatalkのインストール 3. netatalkの設定 $ sudo vi /etc/afp.conf [Homes]セクション basedir regex = ホームディレクトリベースパス … /export/home等を指定 任意ボリュームセクション(例:[My Volume] ) [任意ボリューム名] … 共有ボリューム名を指定(MacOS X上での表示名) path = 共有ディレクトリパス … 共有するディレクトリパスを指定 time machine = yes … TimeMachine用として利用する vol size limit = ボリューム容量制限(MB) … ボリュームサイズの上限設定 file perm = パーミッション内容 … ファイルの初期権限を指定 directory perm = パーミッション内容 … ディレクトリの初期権限を指定
  72. 72. netatalkのインストール 3. netatalkの設定(続き) 共有ディレクトリの所有者/権限の調整 必要に応じて所有者や権限を設定する 接続ユーザの所有に変更しておくと良い $ sudo chown ユーザ:グループ 共有ディレクトリパス $ sudo chmod パーミッション 共有ディレクトリパス 設定例 $ sudo chown tsuka:others /tank/FileServer $ sudo chmod 1777 /tank/FileServer
  73. 73. netatalkのインストール 実行の様子 その3
  74. 74. netatalkのインストール 実行の様子 その4
  75. 75. netatalkのインストール 4. サービスの有効化 $ sudo svcadm enable dns/multicast $ sudo svcadm enable netatalk dns/multicastはBonjourの為のサービス サーバのIPアドレスを指定せずにNASを利用可能 $ svcs -a でサービス状態の確認も可能 パイプでつなげてgrepコマンドでキーワード検索すると便利 svcadmコマンドではサービスの無効化や再起動も可能 サービス無効化の例 … $ sudo svcadm disable netatalk サービス再起動の例 … $ sudo svcadm restart netatalk
  76. 76. netatalkのインストール 実行の様子 その5
  77. 77. Mac OS Xからの接続 あとはちょちょいのちょいで接続するだけ 1. NASの確認 Finder上に表示があるかを確認 2. NASにログイン ユーザ名とパスワードを入力してNASにログイン 3. (必要に応じて)Time Machineの設定 Time Machineで利用する場合は設定を行う
  78. 78. Mac OS Xからの接続 Finder上にNASサーバが表示されていることを確認
  79. 79. Mac OS Xからの接続 NASをクリックし 別名で接続… を選択
  80. 80. Mac OS Xからの接続 接続する(OmniOSの)ユーザ/パスワードを入力
  81. 81. Mac OS Xからの接続 接続済み状態を確認
  82. 82. Mac OS Xからの接続 実際に接続した様子
  83. 83. Mac OS Xからの接続 ファイルを置いてみる
  84. 84. Mac OS Xからの接続 OmniOSから配置したファイルを確認
  85. 85. Mac OS Xからの接続 必要に応じて、Time Machie設定を行う
  86. 86. Mac OS Xからの接続 Time Machine利用可能としたボリュームを選択
  87. 87. ほら、 簡単だったでしょ?
  88. 88. 参考URL OmniOS Documentation http://omnios.omniti.com/wiki.php/WikiStart Netatalk 日本語情報(HATさん) http://www003.upp.so-net.ne.jp/hat/netatalk/ Oracle Solaris 11 Information Library (日本語) 11/11 Release http://docs.oracle.com/cd/E26924_01/ Oracle Solaris ZFS クイックリファレンス http://jp.fujitsu.com/platform/server/sparc/technical/document/ pdf/zfs_quick_reference.pdf
  89. 89. ご静聴ありがとうございました 日本OpenSolarisユーザーグループ ”びぎなーず”担当 _・)つかまん

×