Ellinikonblue.com Weblog

夢は夢のまま終わらせない…

Posted on Dec 16, 2014 at 20:12

NAS4Free 9.3.0.2.1190 へアップグレード

 やっとでました NAS4Free の 9.3.0.2(rev1190) 。

 今回の 9.3 系では、 我が家で NAS4Free をインストールして使っている GIGABYTE GB-BXCE-2955 に搭載されている ネットワークインターフェイス Realtek 8111G や USB 3.0 インターフェイスをデフォルトで認識してくれます。  ただし、今回のリリースノートの冒頭にはこんな文言が…
Upgrading NAS4Free "Embedded" or "Full" from 9.2 or older to 9.3.0.2 from webgui or from LiveCD/USB is problematic, due a new size of boot partition.
この時点ですでにいやな予感はしていました (_ _;>

 おまけに Embedded 版の拡張子は .xz に変わっていて、当然、このままだと GUI の管理画面から アップグレードできませんでした。
 だったら .gz に変換して読み込ましてやれば…と思ってもやってみるべきではなかった orz
 ものの見事に再起動不能に。よい子はまねしないように… (T-T)b

 と言うわけで、管理画面からのアップデートはできませんでしたし、 Embedded 版のイメージを解凍して直接、 USB メモリーに転送する方法もとらず、 時間もなかったので一番確実な方法で CD から起動して、素直にインストールし直すことにしました。

 事前に設定だけはバックアップしていたもので、 ISO イメージを CD に焼いて、ここから起動して USB メモリーにインストールし直し、 バックアップしておいた設定を読み込ませて再起動。
 USB でつないだストレージがある場合、 9.2 系ではシャットダウンプロセスが止まるバグがありましたが、 9.3 ではこれも解消。すばらしい (^^)b
# 皆さんも無茶をするときは必ず設定のバックアップを。。。 少なくとも設定だけはバックアップから問題なくリストアできました。

 超すったもんだしましたが、何とかアップグレード完成です!
 ネットワークインターフェイスはなんにもせずとも認識し、 USB で外づけているストレージは管理画面で見るかぎりとちゃんと 3.0 で繋がってる!!
 紆余曲折があってやっとここまでたどり着きました。って感じで、ちょっと感動を味わっています (T-T)

 期待通りのパフォーマンスアップは望めたか? それはもうちょっと使い込んでから報告します ^^
Image:Computer/20140907HomeDC.jpg

Posted on Dec 14, 2014 at 11:39

FreeNAS 9.3 に続いて NAS4Free 9.3.0.x も登場!

「 FreeNAS 9.3 が登場」マイナビニュース より)

 9.2 に大きく機能を追加して FreeNAS の 9.3 が登場しましたが、 NAS4Free も 9.3 系がそろそろ登場するようです。
# あまり大きくは機能追加されないようですが…
## rev1179 アップ直後にバグが見つかって一旦削除されたようですが…

 次のバージョンはどちらも FreeBSD 10 系がベースになるようですが、 そんな先のことは(今は)結構、どうでもよく (^^;A 、 FreeBSD 9.3 がリリースされて以来、 これで手を加えずとも Realtek 8111G を認識してくれる上に、 Haswell プラットフォームでも USB 3.0 をちゃんと認識してくれるはずの、 首を長くして待っていたバージョンです。
 SSD で我が家の NAS4Free をインストールした GIGABYTE GB-BXCE-2955 を パワーアップしたところですが、 USB 3.0 が有効になればさらなるパフォーマンスアップが期待できます。

 焦らずじっくり攻めたいと思いますが、 冬休みに入るまでにはちゃんとリリースしてね (^^;A > NAS4Free

FreeNAS Project 「 FreeNAS 9.3 Released 」 Ellinikonblue.com Weblog
「 NAS4Free を SSD でパワーアップしようという野望」
「 NAS4Free でスワップを有効にする」
「 NAS4Free で ZFS の L2ARC/ZIL を SSD 上に設定する」
「 NAS4Free で L2ARC/ZIL を SSD に設定した効果」
Posted on Nov 27, 2014 at 19:43

ZFS 備忘録: ZFS プールを CUI でインポート

 先般、 SSD を購入して、 L2ARC/ZIL をこの SSD 上に設定したわけですが、 この設定後に困ったことが起きました。

 うちでは NAS4Free をインストールした GIGABYTE GB-BXCE-2955 に、 二台のハードディスクケースを USB で外付けしていて、起動時は HDD のデバイス名が認識順に決まるので、 一方はつなぎっぱなしで起動して、もう一方は OS 起動後につなぎます。
 このため、完全に起動した後に、管理画面からすべての ZFS プールをインポートし直していたのですが、 SSD 上に L2ARC/ZIL を設定したとき、最初につないだハードディスクケースの ZFS プールだけを認識してしまい、 ZFS の管理画面に行っても、あとからつないだケースの ZFS プールを GUI からインポートするためのボタンがでない状態になってしまいました。  どうしよう、どうしようとひとしきりあたふたしたあとで、 「コマンドラインからインポートはできないのか?」とひらめきました。

 ありました。 CUI からインストールする方法 (^^)b

 まずは SSH で NAS4Free にログインします。 それから以下のコマンドでインポートできる ZFS プールを検索します。
# 注: スーパーユーザー権限で実行して下さい。
# zpool import
 インポートできる ZFS プールがある場合、それが表示されますので、 以下のコマンドを実行すればインポートできます。
# zpool import tank
 tank はインポートできる ZFS プールとして表示されたプール名です。

 以上の処理が終わった上で、 NAS4Free の管理画面 (GUI) から ZFS の設定を同期しておけば大丈夫かと思います。

 えーっと、おそらく FreeBSD を普通に使っている人なら ごくごく当たり前の対処法かと思います。
 お粗末様でした m(_ _)m

Ellinikonblue.com Weblog 「 NAS4Free で ZFS の L2ARC/ZIL を SSD 上に設定する」
Posted on Nov 10, 2014 at 20:31

NAS4Free で L2ARC/ZIL を SSD に設定した効果

 Crucial CT120M500SSD3NAS4Free をインストールした GIGABYTE GB-BXCE-2955 に追加して、 スワップの有効化と、 ZFS の L2ARC/ZIL を SSD 上に設定しました。

 スワップを有効にしてもパフォーマンスは変わりませんが、 果たして L2ARC/ZIL を SSD 上に設定してどの程度効果があるのか?

 半信半疑で、今回、 L2ARC に 20GB の容量をとってみましたが、 普段、ディスクイメージがこのサイズに収まる Linux 系の仮想マシンでは、 明らかに再起動等が早くなりました。これはすぐに実感できました。

 一方で、ディスクイメージがこの L2ARC のサイズに収まらず、 またファイル I/O に関する処理が頻繁な Windows 7 がインストールされた仮想マシンで、 客観的にどの程度パフォーマンスがアップしたかを確かめてみました。

 ちなみにこの L2ARC/ZIL の設定を行う前に、 CrystalDiskMark で、 ローカルのドライブへのアクセス速度を計測してみたところ、以下のような結果でした。
Image:UNIX/20141106CDM_WinVM.jpg
 さんざんです orz

 参考として普段、私が使っている自作機(デスクトップ)ではこんな感じです。
Image:UNIX/20141106CDM_Desktop.jpg
 Intel 製 SSD を搭載して Intel Smart Response Technology を有効にしてありますので、 かなり早い部類に入ると思いますし、これと仮想マシンのディスクイメージへのアクセス速度との 比較は酷だとは思いますが、それにしてもパワーアップ前はひどすぎました。

 それがここまでアップしました。
Image:UNIX/20141106CDM_WinVM2.jpg
 いやまぁ通常のデスクトップ環境には遠く及びませんが、 それでも 3 倍から条件によっては 5 倍近くの改善がはかれました。
 ZIL だけ無効にしての計測はしていませんので、これだけでの威力は定かではありませんが、 仮想マシンのディスクイメージが小さい場合の威力は絶大なので、 おそらくこれは L2ARC の威力は偉大なように思います。

 NAS4Free が今後のバージョンアップで USB 3.0 にしっかり対応してくれれば、これ以上のパフォーマンスアップが実現できそうですが、 現時点で SSD 代 9,000 円弱の投資効果としてはかなり満足しています (^^)v

Ellinikonblue.com Weblog
「 NAS4Free で ZFS の L2ARC/ZIL を SSD 上に設定する」
「 NAS4Free でスワップを有効にする」
Posted on Nov 05, 2014 at 20:18

NAS4Free で ZFS の L2ARC/ZIL を SSD 上に設定する

 NAS4Free をインストールした GIGABYTE GB-BXCE-2955 に、 ハードディスクケースに複数のハードディスクを装填して ZFS プールを作成したものを USB 3.0 で接続してストレージサーバーを構成しています。

 ところが現在使用している NAS4Free 9.2 系では、 接続しているハードディスクを USB 3.0 で認識してくれず、ここがネックでパフォーマンスが上がりません。
 特に VMware vSphere Hypervisor (ESXi) の 記憶領域をここに作成して NFS でマウントしているため、 ファイル I/O が頻繁になるとパフォーマンス低下が激しいのです。

 そこでこの問題に対して、 ZFS の Read 用の二次キャッシュ (L2ARC) と Write 用ログ領域 (ZIL/ZFS Intent Log) を SSD 上に置くことで、 パフォーマンスアップを狙ってみることにしました。  まずは SSD 上に L2ARC と ZIL 用の領域を確保します。
 この作業は NAS4Free サーバーに SSH で接続してコマンドラインから root ユーザーに切り替えて行います。

 以下のコマンドで GPT で初期化された SSD ( /dev/ada0 と認識されているものとします)上に、 ZIL 用に 8GB と L2ARC 用に 20GB の領域を確保します。
# gpart add -a 4k -s 8G -t freebsd-zfs -l zil0 ada0
# gpart add -a 4k -s 20G -t freebsd-zfs -l l2arc0 ada0
上記では -l オプションでラベル(それらしき文字列でかまないと思います)を指定していますが、 こうしておくと、実際に L2ARC と ZIL を設定するとき、以下のコマンドで済ませられます。
# zpool add zpool log gpt/zil0 cache gpt/l2arc0
 上記の例では ZFS プール zpool に対して、ラベルを zil0 とした領域を ZIL として、 l2arc0 とした領域を L2ARC としています。

 これで実際 zpool コマンドで状態を確認してみると。。。
# zpool status
  pool: zpool
 state: ONLINE
  scan: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        zpool         ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            da1       ONLINE       0     0     0
            da2       ONLINE       0     0     0
        logs
          gpt/zil0    ONLINE       0     0     0
        cache
          gpt/l2arc0  ONLINE       0     0     0

errors: No known data errors
ってな感じで確認できます。

 これで大丈夫のはずですが、当方では設定が終了したあと一度、サーバーを再起動しておきました。

 で、実際、どの程度パフォーマンスが上がったかは、また次回 (^^)/
Image:Computer/20140907HomeDC.jpg
Posted on Nov 04, 2014 at 22:06

NAS4Free でスワップを有効にする

 さて Crucial の mSATA 内蔵型 SSD CT120M500SSD3 を購入したところで、 早速、 GIGABYTE GB-BXCE-2955 に インストールした NAS4Free の スワップを有効にします。

 Embedded 版の NAS4Free は 初期状態でスワップが有効になっておらず、 当方ではメインメモリーとして 8GB 搭載していてそうそうメモリー不足に陥ることはないですが、 ちょっと無茶な設定をしたときなど過去数度フリーズしたこともあるので、 120GB と言う容量に余裕のある SSD を増設したため、この際、スワップも有効にすることにしました。
Image:Computer/20141103GB-BXCE-2955.jpg
 ハードウェアのセットアップが終わったらまずは SSD を初期化します。

 作業は NAS4Free サーバーに SSH でログインしてコマンドラインから root ユーザーに切り替えて作業を行います。
 セットアップの終わった SSD は /dev/ada0 として認識しているものとして話を進めます。

 まずは新品の SSD ですので、以下のコマンドで GPT で初期化を行いました。
# gpart create -s gpt /dev/ada0
 この後、スワップ領域を確保します。今回は 20GB ほど確保しました。
# gpart add -a 4k -s 20G -t freebsd-swap ada0
 以上の作業が終わったら、NAS4Free の GUI 管理画面にログインして、 「システム」メニューの「高度な設定」から「スワップ」タグを選んで、 スワップを「有効」にしてタイプで「デバイス」を選び、「デバイス」で「 /dev/ada0p1 」を指定します。
# 上記で SSD 上に作成した領域が最初のパーティション ( ada0p1 =デバイス ada0 の 1st パーティション p1 )の場合です。

 それから「保存」を押せば作業は完了です。
Image:UNIX/20141101NAS4FreeSwap.jpg
 ここまでの作業が終わるとコマンドラインから swapinfo コマンドで、 スワップが有効になっていることを確認できます。
# swapinfo -h
Device          1K-blocks     Used    Avail Capacity
/dev/ada0p1      20971520       0B      20G     0%
 さてこれでスワップの有効化は完了です。
 次はいよいよ ZIL/L2ARC の設定を行います。 Ellinikonblue.com Weblog 「 Crucial M500 CT120M500SSD3 を手に入れた!」
Posted on Oct 14, 2014 at 21:15

NAS4Free を SSD でパワーアップしようという野望

 春先に GIGABYTE GB-BXCE-2955 を購入し、 今夏、 Intel D34010WYK を購入して、 我が家のバックエンド環境をこの二台にすべて集約したわけですが、 NAS4Free をインストールした GB-BXCE-2955 には、ストレージをすべて USB で接続しており、 やはりここがいまいちパフォーマンスが上がらない原因ではないかと思い始めました。
Image:Computer/20140805D34010WYK.jpg
 一応、 USB 3.0 にこだわってつなぐ機器を選んだのですが、 いかんせん今使っている FreeBSD 9.2 ベースの NAS4Free は USB 3.0 で認識してくれず、 これも一つパフォーマンスが上がらない理由になっています。

 ただオペレーティングシステム側の問題は、個人で簡単に解決できるものではないので、 ひとまずアップデートを待つとして、他にパフォーマンスアップできる手はないかといろいろ調べてみたのですが、 Read 用の二次キャッシュ (L2ARC) と Write 用ログ領域 (ZIL/ZFS Intent Log) を SSD 上に置くことでパフォーマンスが上がる可能性を知りました。  最近は SSD の価格下落もあって 10,000 円以下の出費で、 GB-BXCE-2955 に内蔵でき、かつ必要十分な容量の mSATA SSD が手に入ります。

 また先般、長らく予備のデスクトップに使っていた Windows 7 Professional の ライセンスも、 ESXi (VMware vSphere Hypervisor) 上に用意した 仮想マシン上にインストールし、 普段使いにはほとんどまったく問題のないパフォーマンスを発揮しているのですが、 唯一、ファイル I/O が連続したり、大きなファイルをコピーしたりするとパフォーマンス劣化が激しいのです。
 しかし、このようなファイルトランザクションが頻発ような場合にも、 SSD 上に L2ARC/ZIL を待避するという手段は有効と言う情報も見つけました。

 加えて、NAS4Free の Embedded 版を使っているもので、 初期状態で Swap が設定されておらず、過去二度ほどメモリーが不足して停まったことがあるので、 これも Swap 領域を SSD 上に用意することで解消できそうです。

 うん!これだな (^^)b
 もうすぐクレジットカードでものを買っても払いが冬のボーナス後になる時期なので、 近々、このパワーアップ計画を発動しようと思っています。 Ellinikonblue.com Weblog 「 Windows 7 Professional on ESXi 」
Posted on Jul 12, 2014 at 18:44

(今度こそ (^O^; )NAS4Free で ZFS のディスクを交換する

 うちの GIGABYTE GB-BXCE-2955 に インストールした NAS4Free 環境は、 管理しているストレージすべてが、 USB 経由で外付けで繋がっており、 またこれらを収容しているハードディスクケースがすべてホットプラグには対応していないという特殊な環境ですが、 以下に示す手順であれば、うまく交換して復帰できました。

 ただし、ハードディスクの交換作業においてコマンドラインインターフェイスでの 操作は必須です。グラフィカルユーザーインターフェイスではすべての作業を完結することはできません。
 そのため、事前に SSH は必ず有効にしておいてください。

 では、以下に交換手順をまとめます。
  1. 本体( NAS4Free がインストールされている PC )を シャットダウンします
  2. 交換する対象の HDD を交換します
  3. 本体を起動します
  4. NAS4Free の設定画面にアクセスし、 ディスクマネジメント画面(管理メニューの「ディスク」 - 「マネージメント」で表示)で 表示されているディスク情報を一旦全部削除してから、再度、「ディスクのインポート」を実行します。
     各ディスクの細かい設定(スタンバイ時間など)はここで再度設定しておきます
  5. ZFS 設定画面(管理メニューの「ディスク」 - 「 ZFS 」で表示される画面で「設定」タブを選択)で 「検出」タブを選んで、「ディスク上の ZFS 設定をインポート」を実行します。
     インポート実行後、 HDD を交換したプールが状態が「 DEGRADED 」になっていることを確認してから、 「同期」タグへ遷移して、「同期」を実行しておきます。
以上、ここまでが GUI で可能な作業です。

 以降は SSH で NAS4Free がインストールされている PC にアクセスして、 スーパーユーザー権限で以下のコマンドを実行します。
# zpool replace tank da1
上記は HDD を交換したプールが「 tank 」で交換した HDD が /dev/da1 として認識されている場合の例です。
 このコマンドを実行すると、プールの再構築が始まります。  ZFS ではプールを構成するすべてのディスクをより大容量なものにすべて交換すると、 容量を拡張することができます。 ただし、すべてのディスクの交換後に、やはりコマンドラインからのコマンドの実行が必要になります。

 今回、当方では 1TB HDD でミラーリングしていたプールの HDD を、 上記の手順を二回繰り返して、すべて 2TB のものに置き換えました。 その後、以下のコマンドを実行することで容量の拡張も無事行えました。
# zpool online -e tank da1 da2
上記の例は、 /dev/da1, /dev/da2 でミラーリング構成されたプール tank の容量拡張を実行する場合の例です。

 ひとまず、当方ではここまでして、 やっと ラトックシステム RS-EC32-U3R に HDD を装填して構成した ZFS プールの容量がめでたく倍( 1TB → 2TB )になりました。

 さぁ次こそは Intel D34010WYKVMware vSphere Hypervisor に チャレンジだ!
…それにはもうちょっとやる気の充填が必要かも… orz

Ellinikonblue.com Weblog 「 NAS4Free で SSH を有効にする」
Posted on Jul 10, 2014 at 20:51

NAS4Free で ZFS のディスクを交換する…前に (^^;

 NAS4FreeGIGABYTE GB-BXCE-2955 に インストールして、 ラトックシステム RS-EC32-U3R と、 ロジテック LHR-4BNHEU3 に ハードディスクを詰め込んで、我が家のストレージを集約し終え、 夏のボーナスが出たら IntelD34010WYK を買って、 今度は VMware vSphere Hypervisor で バックエンド環境の集約だ!と思っていたのですが、困りました。 何かとやる気が起きなくなりました orz  ひとまず D34010WYK 購入前に、 RS-EC32-U3R に詰め込んである 1TB HDD を 2TB の HDD にリプレースして、 VMware vSphere Hypervisor のための ストレージ容量を確保せねば…と思っていたのですが、 ここんところのこのバイオリズムの低下で手をつけていませんでした。

 こういう気合いの急降下は、無理せず上昇気流が来るのを待つのが一番!と個人的には思っているので、 ひたすらぼーとしてました (^O^;

 さてちょっと復活してきたのでここは一念発起!まずは下調べで参考にしたのは以下のドキュメント。

yunoya の日記 「 RAID-Z の HDD 交換」
hirotomium.com 「 zfs/raidz1 のディスクを交換する( 2 ヶ月で orz …)」

以上を参考にして、あっさり………行くわけもなく f^^; 、 またすったもんだしてました。
 何となく想像はしていたんですよね。だからこそ気合いが低空飛行している間は、 手をつけなかったんですが…

 そもそもうちの NAS4Free の環境は、 すべてのストレージを USB で外付けにしており、 GB-BXCE-2955 には一切の二次記憶領域を内蔵していません。
# OS そのものも USB メモリーにインストールしてます。

 使ってわかったことなんですが、NAS4Free では 起動するたびに USB 経由で認識する HDD のデバイス名の割り当てが変わるので、 起動時はまず RS-EC32-U3R だけをつないだ状態で電源オン、 OS の起動が終わってから LHR-4BNHEU3 を接続して、 ディスクマネージメント画面でディスクのエントリを一度すべて削除してからインポートし直し、 それから ZFS の設定をインポートし直してから同期をかけると言う非常に面倒な運用をしています。

 で、今回、上記のドキュメントを参考に RS-EC32-U3R の片方の HDD をオフラインにして、 RS-EC32-U3R 電源を切り、 片方の HDD を交換して再度、電源を入れたところ、 ZFS のプールを認識せず、あっちこっちいじってる内に ZFS プールの情報が NAS4Free の GUI で見ると異常な表示をし出すようになり… 一時は ZFS プールを作り直してバックアップを戻すかとも考えました。

 が、その後もしつこく格闘を続け、どうにかこうにかうまくいきました。
 その結果を次回まとめたいと思います。
Posted on Jun 02, 2014 at 20:29

NAS4Free で ZFS を使う #2

 AC アダプタの初期不良でいきなり頓挫しましたが、 ロジテック のサポートに切り分け結果を伝えると (装填したハードディスクをまた取り出すのめんどくさかったので) 「 AC アダプタだけ送って」と言うわがままに二つ返事で応えてくれ、 しかも代替の AC アダプタが翌日には到着すると言うすばらしい対応で、 購入した LHR-4BNHEU3 への移行を 早々と始めることができることになりました。
 Good Job です (^^)b > ロジテック

 と言うことで、装填した HDD を個々に認識させるシングルモードがないために コレガ CG-HDC4EU3500 の ハードウェア RAID 機能を使って冗長化し UFS でフォーマットしている 我が家では最大サイズのストレージを、 LHR-4BNHEU3 に 3TB HDD を四発装填して移行作業を開始しました。

 HDD は以前、NAS4Free の本番環境への移行の際に、 ラトックシステム RS-EC32-U3R へ 突っ込んでストライピングを組んだ時に使った 3TB HDD 二発と新規に購入した 3TB HDD 二発、 この計四発で RAID-Z を組みました。

 以前、ラトックシステムRS-EC32-U3R を使ったミラーリング構成で ZFS を構築したときの手順をまとめてあったので、 これに従ってディスクの追加→仮想デバイスの作成→ ZFS プールの作成とすればできた …ら、こんな記事にはしません (^-^;A

 今回もやっぱり一筋縄ではいきませんでした orz
 どうしても ZFS プールを作成した後、 作成したプールが「初期化中」のまま、最後に 「変更の適用」をしようとするとエラーになります。
 初期化に時間がかかるのかな?と思って、丸 2 日くらい放っておいたのですが まったく変わりません。  結論から言うと、一度、 ZFS strage pool device としてフォーマットして使っていた HDD を使い回したのが原因でした。
 ZFS プールを作成する場合、完全に初期化が施された HDD を用意することが鉄則だそうです。

 HDD の初期化は以下のように行いました。
 HDD を認識させた NAS4Free が動作するサーバーに SSH でログインします。
 その上で、 su で root ユーザー切り替えてその権限で以下のコマンドを実行します。
# dd if=/dev/zero of=/dev/da2 bs=1k count=1
 上記は初期化する HDD が /dev/da2 として認識されている場合の例です。 またディスクを初期化することが目的ですから、 同じことができるなら NAS4Free でなくとも Linux などでも作業が可能です。
 このおまじないを作成する ZFS プールに使用する HDD すべて(まったく新品の HDD なら必要ありません)に施してから、 ディスクの追加→仮想デバイスの作成→ ZFS プールの作成を順序通りに行うと、 無事、 RAID-Z の新しい ZFS プールを作成することができました (^O^)

 データセットを作成して、データのコピーに丸三日以上かかりましたが、 おかげで CG-HDC4EU3500 を完全に休止させることができました。

 さて、次は CG-HDC4EU3500 に装填していた 2TB の HDD を使って、 ミラーリングしている RS-EC32-U3R の 1TB HDD を置き換えて、 容量拡張にチャレンジしたいと思います。

Ellinikonblue.com Weblog
「 NAS4Free でディスクを追加する」
「 NAS4Free で ZFS を使う #0 」
「 NAS4Free で ZFS を使う #1 」
「 ロジテック LHR-4BNHEU3 をご購入」