Ellinikonblue.com Weblog

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

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 Sep 01, 2014 at 21:39

Linux 備忘録【番外編】: IP アドレスとホスト名の変更

 一応、CentOS 6 で動いていた以前の環境を、 CentOS 7 をインストールした仮想マシンへ 移植し終わりました。

 作業は現行の環境を動かしたまま、 別の IP アドレスを与えた新環境に順次、設定やファイルを移動するという方法でゆっくり行い、 とうとう最後に、現状の環境を落として、 それが使っていた IP アドレスとホスト名へ新環境を切り替えると言う作業を残すのみとなりました。

 事前に CentOS 7 では、 ネットワーク関連の設定は NetworkManager に統合されていることとしって、 いざ、そのコマンドラインで使う nmcli コマンドで、 IP アドレスの変更を試みました…が、うまくいきませんでした orz

 学習目的でやっている作業ではないので、 IP アドレスの変更は /etc/sysconfig/network-scripts 以下にある ifcfg-XXX ( XXX はインターフェイス名) ファイル中の IPADDR0 の値を変更し、 ホスト名は /etc/hostname ファイルを変更するという昔ながらの方法で行い、 再起動したところ、問題なく目的の変更が行えました (^O^;A

 nmcli コマンドが失敗したとき、 NetworkManager と nmcli のバージョンが不整合…云々というメッセージが出たような気がしますが、 (すみません)メモっておらず、結局、原因はわからずじまい (_ _;>

 ひとまず目的は達しましたが、 知識としては「ま、今までの方法でもできます」って話くらい。 と言うことで「番外編」と言うことにしておきます。

 おそまつ m(_ _)m
Posted on Aug 31, 2014 at 23:30

Linux 備忘録: firewall-cmd によるファイアウォールの設定

 VMware vSphere Hypervisor (ESXi) 上に 作成した仮想マシンに CentOS 7 をインストールして、 現状、自宅のサーバーとして常時起動している CentOS 6 で 構築した環境を再構築しているわけですが、 そろそろ CentOS 7 で始めたことを後悔し始めました f^^;

 前回、お話した各種サービスの起動設定が systemd になって変更されているばかりか、 ファイアウォールの設定も違えば、ネットワークの設定も NetworkManager に統合されていると知るに至って、 いよいよこれまでわずかばかりに蓄積されていた知識が崩壊 orz
 めちゃめちゃ時間を費やしています (T-T)

 これまでの CentOS では、 /etc/sysconfig/iptables をいじくるなり、 iptables コマンドを使って設定していたわけですが、 7 ではファイヤウォールが firewalld というサービスに変更されており、 firewall-cmd と言うコマンドで設定を変更する必要があります。

 例のごとく深くはまだ理解できてません orz
 ということで、ひとまず今回は samba と bind のための穴を開ける方法のみメモっときます。

  firewalld では「 zone (ゾーン)」という概念があり、 このゾーンごとにポリシーを設定し、切り替えて使うことができます(できるそうです)。
 当然、デフォルトのゾーンというのが存在し、 今回はネットワークインターフェイスも一つしかない自宅の内部サーバーなので、 ゾーンを切り替えたりすることはあり得ないので、 このデフォルトのゾーン「 public 」の設定を変更すると言う方針で設定しました。

 この前提を元にすると、特定のサービスのためにファイアウォールに穴を開けるのは至って簡単です。

 まずは、
# /usr/bin/firewall-cmd --zone=public --list-all
とする( root 権限で)と今、 public ゾーンの設定が表示されます。
 表示される内容に「 service: 〜 」という行があると思いますが、 特定のサービスのためにファイアウォールの設定を変更するには、ここにサービスを加えてやればいいのです。
 加えられるサービスは、
# /usr/bin/firewall-cmd --get-service
とすれば表示されます。
 幸い samba, samba-client, dns と言うのがあるので、 今回の目的を達するためには、
# /usr/bin/firewall-cmd --permanent --add-service=samba --add-service=samba-client --add-service=dns
とすればいいのですが、ここで一つ注意 (^^)b
 上記のコマンドでは、恒久的にデフォルトのゾーンに --add-service で指定された サービスのためのポートを開放します。 このためこの設定を反映させるには、
# /usr/bin/firewall-cmd --reload
とする必要があります。
 ちなみにサービスを登録するときのコマンドで --permanent を省くと、 即時に設定が反映されますが、再起動時には消えてしまいます。

 ひとまずこれでうちでは samba と bind の通信をはじかなくなりました。
 えぇコマンドを叩いてるだけで細かいことはまったく理解できてませんが、 やらなければならないことがまだあるので先を急ぎます。

「 Red Hat Enterprise Linux 7 がやってきた」ITpro より)

Ellinikonblue.com Weblog 「 Linux 備忘録: systemd の基本中の基本」
Posted on Aug 28, 2014 at 20:21

Linux 備忘録: systemd の基本中の基本

 自宅の次期バックエンドサーバー用のオペレーティングシステムとして、 今回は CentOS 7 を使うことを決めて、 現状の CentOS 6 で動いている環境を移植中ですが、 CentOS 7 になって init の代わりに systemd が採用されていて、 あまりに勝手が違うことにちょっと戸惑っています。

 systemd ってなんよ?って話はのちのちしっかり勉強することとして、 ひとまずこの作法を知らないと、サービスを起動したりすることができないので、 基本中の基本として、軽くまとめておくことにしました。

 これまで( CentOS 6 まで)の init の作法で、たとえば dhcpd サービスを立ち上げるのであれば、
/sbin/service dhcpd start
とすればよかったところが、 ( CentOS 7 の) systemd の場合、
/usr/bin/systemctl start dhcpd
となります。
# 停止の時は「 start 」となっているところを「 stop 」にすればおっけー

 またシステム起動時にサービスを立ち上げるよう設定するには、 これまでは、
/sbin/chkconfig dhcpd on
としていたところを、 systemd では、
/usr/bin/systemctl enable dhcpd
 逆に立ち上がらないようにするには、 これまでは「 on 」のところを「 off 」に、 これからは「 enable 」を「 disable 」にすればよろし (^^)b

最後にこれまではサービスの一覧表示は
/sbin/chkconfig --list
とやっていたところが、これからは、
/usr/bin/systemctl list-units --type=service
だったり、
/usr/bin/systemctl list-unit-files --type=service
としたりするらしいですが、表示される内容がいまいちよくわからない。
 そもそも「ランレベル」って概念はどう表現するの?とか、 いわゆる SysVInit や Upstart に慣れきっていた人間からして、 新たに勉強が必要と思われるところ多数。

 日本語でやさしく教えてくれるページがどこかにないかなぁ… と、ただいま他力本願全開で捜索中 (^O^;A

 ま、まずはこのあたりを読み込むことから勉強を始めたいと思います。

「 Red Hat Enterprise Linux 7 がやってきた」ITpro より)

# ぐぇ…ファイアウォールの設定方法も違うのか… orz

 以上、調べればすぐにわかるレベル、 systemd の「し」の字でした m(_ _)m
Posted on Aug 21, 2014 at 21:35

Linux 備忘録: SELinux の無効化

 VMware vSphere HypervisorIntel D34010WYK へインストールして、 作成した仮想マシン上に CentOS 7 をインストールしました。

 最新版の 7 を使ったこともありますし、 ここ丸一年くらい Linux をインストールしたまっさらな状態から環境を構築した記憶がなく、 さていざ環境構築を始めるにあたって、 自分のサイトで過去の情報を調べてみるとまったく記載されておらず、 10 年もやってるのになんて知識の蓄積のないサイトかと反省する始末 orz

 自分の役にも立たないサイトは人の役にもたたない。 いや、ちゃんとやったことは書いておこう。。。ほんと、そう思った次第。えぇまたです (_ _;>

 ということで、インストールした CentOS 7 の環境構築を始めるにあたってまず、 SELinux を無効化しました。

 SELinux って何?って話は…すみません。 Wikipedia ででも調べてください m(_ _)m
 ごくごく簡単に言うと極端に Linux をセキュアに運用するための機能で、 通常、特に自宅内で使う環境あどでは有効になっている必要はないと思われます。

 いつも CentOS を設定する際は、 以下のサイトを参考にさせていただいており、今回もこちらの記事を見て思い出させていただきました。  動作している環境で SELinux が有効になっているかを調べる際は以下のコマンドを実行します。
# getenforce
「 Enforcing 」と帰ってくれば「有効」になっていて、 「 disabled 」と帰ってくれば「無効」になっています。
# 「 Permissive 」って返答もあります。これは半有効ぐらいに思ってください。(詳細略 m(_ _)m )

 SELinux を無効にするには、以下のコマンドを実行します。
# setenforce 0
 ただし、インストール直後に SELinux が有効になっていた場合、上記のコマンドを実行しても、 システムが再起動されると、再び有効になります。
 再起動しても SELinux が有効にならないようにするためには、 /etc/sysconfig/selinux と言うファイルを編集する必要があります。
# 編集する際は root 権限で編集する必要があります。

 /etc/sysconfig/selinux で
:(略)
SELINUX=enforcing
:(略)
となっている部分を「 enforcing 」から「 disabled 」に変更して保存ください。

 以上で、 SELinux を無効にする作業は完了です。
Posted on Aug 18, 2014 at 22:20

CentOS 7 はじめました

 思いの外、トラブルもなく VMware vSphere Hypervisor が 使えるようになったので、 早々にうちの Shuttle X27D を 勇退させてあげたい! (^^)/

 ずっと自宅のバックエンドには CentOS を使っていて、 X27D でも 6.x を使っていました。
 となると今回は当然「 7 」でしょ! d(^^)

 と言うことで、CentOS 7 の ISO をダウンロードしてきて、 VMware vSphere Hypervisor 上で、 ゲスト OS を CentOS 4/5/6 ( 64ビット) として 1CPU 、メモリー 1GB 、ディスク 16GB の仮想マシンを用意して、 ここにインストール。。。インストーラーもグラフィカルでわかりやすくなっていて、 当然、日本語化もされているので、さっさと…できたがな (^^)b
 なんか調子いいよ、最近 (^O^)
Image:UNIX/20140818CentOS7.jpg
 お、なんかすっきりきれいになったね> CentOS 7

 インストールが終わった時点で、VMware Tool もすでにインストール済みの状態になってるみたいだし。 よくできている。。。 ん、ロック画面どうやって解除するんだ?…あ、最近のできの悪い Windows といっしょね d(^^;
 あれ!?なんだよ systemd って?
 ん? DNS 立てるの BIND でええんかい???
 そもそも SELinux の解除ってどうすんだっけか? f^^;

…あかん。ここんとこ、 Ubuntu Desktop とか、 使うぶんだけお気軽ディストリビューションばかり使ってたからなぁ… そういえば、ここ最近、 Linux の設定って1からしっかりやった記憶がない (^O^;;;>

 まずはこのあたりのリハビリからか… orz
 X27D の勇退はもうちょっと先になりそうです (_ _;>
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 11, 2014 at 20:33

CentOS 7 Release

「 CentOS 7 登場 - XFS 採用など」
「 Red Hat Enterprise Linux 7 登場 - AD 連携強化、XFS標準採用ほか」
(以上、 マイナビニュース より)

 Red Hat Enterprise Linux の 7 がリリースされ、 いよいよ米国時間 7 月 7 日のことですが、 CentOS 7 もリリースされました。

 所々で CentOS を使っていて、 7 がリリースされたと言っても当面は心配のない 6 を、 一番近いところでは自宅のサーバー用途に使ってはいますが、 今後のことを考えると、そうそうに 7 をお試ししてみたいと思います。
 ただ、大きく報じられているようにデフォルトのファイルシステムが XFS に変更されており、 そうなるとどうせ使ってみるならクリーンにインストールして使ってみたいところ。

 早いとこ、 IntelD34010WYK を 買って環境整えるか…うっ、こ、腰が重い。。。 (_ _;;;;;
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 をご購入」