高森太郎のノート

このページについて

このページは、高森太郎がノート的に何でも書くページです。
主に勉強したこと、自分が知った知識や方法などを中心に、適当に、メモ的に、書き留めてます。

2016年10月08日 (土曜日)

[]FreeNAS 9.10.1 U1から9.10.1 U2 にアップグレードしたらGURB errorになり起動できず→CD-ROMから改めてアップグレードで正常に FreeNAS 9.10.1 U1から9.10.1 U2 にアップグレードしたらGURB errorになり起動できず→CD-ROMから改めてアップグレードで正常に - 高森太郎のノート を含むブックマーク はてなブックマーク - FreeNAS 9.10.1 U1から9.10.1 U2 にアップグレードしたらGURB errorになり起動できず→CD-ROMから改めてアップグレードで正常に - 高森太郎のノート

標題がほぼすべてなのだが。

要約。

Web GUIでアップデートしたところ失敗した。起動してこない。

結論から言うと、改めてCD-Rからアップグレードをかけたところ正常に起動できた。

症状

FreeNAS 9.10.1 U2が出ていたので、FreeNAS 9.10.1 U1からアップグレードしたところ、いつまでたっても起動してこない。

コンソールでみると

Welcome to GRUB!
error : attempt to read or write outside of disk 'hd1'
grup rescure > 

と言うことで止まっていた。ぐぬぬ…。

修復の方法

改めて最新のFreeNASのISOインストーライメージをFreeNAS公式サイトからダウンロードしてきて、それでブートし、インストーラーから「アップグレード」を選んで手動でアップデートしたところ、正常に起動できた。

今回の方法が駄目だったときに考えられる復旧オプション

FreeNASの良さとして、きちんと設定ファイルをバックアップしてさえおけば*1きちんと設定ファイルをバックアップしてさえおけば(大事なことなので2回)最悪システム領域がUSBメモリの破損などで完全におかしくなっていたとしても、ゼロから新しい領域にセットアップして、設定を書き戻してやれば元に戻るというところがある。普通だったらシステム領域が飛びました等と言うと大惨事で復旧に時間がかかるわけだが、FreeNASの場合はUSBメモリさえあれば最悪でも1時間弱で復旧が可能。ありがたいです。制作者の方に感謝*2

更に言えば、ZFSは今となってはかなり普及しており、非常に良くできているため、他のFreeNAS搭載のマシンや、他のZFS対応OS(最近だとUbuntuが16.04 LTSでネイティブ対応した)にくっつけて「zpool inport」さえできればほとんどデータ復旧はできるはず。

試したが駄目だったこと

GRUBのコンソールから、lsで探って、と言うLinux式のやり方を試そうとしたが、FreeNASのブート領域はZFSになっているためか、どうも手が出ない感じがある。

もしかしたらやる方法があるかも知れない。

原因?

いくつか推測がたつ。

  1. ブートローダーのアップデートに失敗してブートローダーの領域が破壊された可能性。
    • ただ、今回に限ってはこれは常に発生しうるがそれほどよくは起きないかなー、と思われる。
  2. はUSBメモリが寿命、
    • だが、ブート領域はRAIDZ1でミラーリングしており、こちらもそう簡単に駄目にならないので、可能性
  3. ググっていて、このエラーはBIOSの対応状況で、読めない領域にブート領域が入るとなることが起きる?とか。
    • 他のOSのOSアップデートの時に起動できなくなったケースの話。このFreeNAS鯖のハードウエアはHP ML110 G6なので、もう気がつけば5年近く使っている。そこに16GBGBのUSBメモリ2本なのだが、FreeNASはアップデートしていくと古い領域がスナップショットとしてのこすことで安全にアップデートできるという仕組みになっている。これが上手くならなかたったのかなあ、とも想像した。CD-ROMからアップデートすると、今までのスナップショット領域が全部一度削除されて、CD-ROMでインストールしたバージョンのみになる。

教訓

  • FreeNASでアップデートしてしばらくし、動作確認がとれたら、古いブートイメージは定期的に消した方がよさそう。

と言う他に、

  • バックアップはできるだけ頻繁にとりましょう。
  • 出先からVPN接続している環境でアップデートとかそう言う馬鹿な真似はやめましょう。手も足も出なくなります。
  • アップグレードするときはせめて確実に設定ファイルのバックアップは取っておきましょう。

と言う基本的なところも…。最近あんまりにも順調に動いていたので、設定ファイルのバックアップを確認したらもう1年近く前にとったっきりで焦った。

*1:実は今回の場合、最後に設定バックアップをとったのが1年近く前とかですごい焦った。順調に動きすぎて全く意識していなかった。あぶねー。いやあ、俺はアホです。業務ではしつっこいほどバックアップとるのに

*2:と言うか日本でもFreeNAS専用アプライアンス売ったらどうですか。FreeNASをベースにしたなんか妙な奴は販売されているみたいなので、本家が乗り出してきたら売れると思うんだけれども。どこか日本の代理店声かけたらどうか。って毎回書いている

2015年09月25日 (金曜日)

[][]2015/09/25現在の自宅録画サーバの現状を整理してみる(Ubuntu14.04+PT3+KVM+Foltia) 2015/09/25現在の自宅録画サーバの現状を整理してみる(Ubuntu14.04+PT3+KVM+Foltia) - 高森太郎のノート を含むブックマーク はてなブックマーク - 2015/09/25現在の自宅録画サーバの現状を整理してみる(Ubuntu14.04+PT3+KVM+Foltia) - 高森太郎のノート

書く理由

最近自宅の録画サーバの環境をまとめてメモって公開するのが流行っているそうなので

http://vector.hateblo.jp/entry/2015/09/24/102145

http://pi9min.hateblo.jp/entry/2015/09/25/002206

自分も先人の皆様のお知恵をお借りしている身だし、駄文でも誰かの役に立つ可能性もゼロではないし、世界平和のためだそうなので晒してみる。

おことわり

なお、本稿にPT3やFoltiaなどの環境が出てきますが、これらは暗号化された録画データを戻す機能はありません

Foltiaのページに

本製品には不正競争防止法に定められている技術的保護手段回避装置としての機能は有していません。
と書かれているように、我が家の録画サーバで録画しているのは、ネットラジオと地元の自治体系CATVが流している暗号化が施されていないお知らせ放送や地域の話題のみであり、万が一それ以外のものが録画できている様に見える記載があっても、それは妄想であり事実ではありません。

また、本稿に出てくる「アニメ」とは私が作った英語っぽい伺かの造語、「Agriculture and Near area Information for ME」(農業と近隣地域の俺特情報)の略称であり、それ以外の何かには関係がありません。ご注意ください。

さてと。

前提

  • 毎日、放送されているアニメを録画しております。
  • ただ録画量は田舎故にあまり多く無く、通常一週間でTSが250GBぐらい。
  • 録画データはFlotiaが自動的にMP4にエンコードしてくれ、TSは基本消す派なので、1ヶ月で300GBぐらいのペースで容量増加中

サーバについて

メインサーバ

市販の安サーバなどではなくて、組みました。

理由は、演算サーバ的にも利用するのでパフォーマンスはできるだけ高くしたかったことと、RAID Z2にするためにはSATAポートの数+3.5インチベイの数がほしかったが、安サーバではそれが実現できそうな物が見当たらなかった事にある。

ProLiantnの300シリーズの中古も検討したが 面白くない 予算に合う物がなく断念した。

マザーボードZ97 Extreme6(←発売直後に喜んで買ったら初期不良だったので一回交換した)
CPUCore i7-4790K
メモリ8×4=32GB,DDR3(マザボ的に最大)
HDDWesternDigital RED 3TB (WD30EFRX) ×5
SSDIntel 530 120GB(ホストのシステム用)
Blu-rayドライブBDR-209JBK(←ぶっちゃけほとんど使ってないのでいらなかったかも)
グラボRD-R7-250X-E1GB ×2(パススルー用)
チューナーPT3
電源KRPW-PT800W/92+ REV2.0(←不良品引いた)
ケースCM 690 III
(ただし、この組合せだとマザボのPCIe用補助電源コネクタが、ケースの電源抑えに干渉するので注意。自分は4ピンをL字コネクタに変換できるケーブルをはさんで、ケースを削って対処した)
CPUクーラー虎徹 SCKTT-1000

サーバなのにグラボ2つとかイミフ、 RAIDZ2とかアホ? っていうかお前何クソ高いCPU積んでんだよ無駄だろ、などの部分は後記。

実は今まで安鯖を渡り歩いてきたため、ベースマシンがない自作ははじめてだったりする。マザーボードが初期不良を引いてしまい3回に2回ぐらいの割合で起動に失敗していろいろと参った。

ただ、ネットショップ(ツクモ)の人に手早く対処していただけたおかげで、大事にならずに済みました。感謝。

今だったらZ99系を使う所なんだが、時期的にはこれがベストだった(強弁

バックアップ用サーバ、及びNAS
サーバベースHP ProLiant ML110 G7 の一番やすいやつ
メモリ16GB
HDDWesternDigital RED 3TB (WD30EFRX) ×3 RAIDZ(RAID5相当)

HP定番の安サーバで、何も考えずに作り、何も考えずに動きます。優秀。

だけどもう売ってないんだよな…。ML310eがどっかでまた安く出ないかなと狙ってはいますが。

なお、同じ構成のNASが2台あり、片方は録画以外の用途の普段使いのNASとしています。

また、NTT-Xで当時、3台注文すると1台につき2000円引きなんてセールを使ったので予備機が1台あります。

なんで自鯖運用なの

そりゃもちろん安いから。

金金金 金金金 金金金金金金(三三七拍子のリズムで

そして、録画鯖は当然ながら外には出せません。アンテナにつながなければならないから。

また、このserverは、録画サーバ以外にも目的があります。それが不可能だから。

まずはどうしてもハードウエアのグラフィックス支援が必要な用途があり、GPUをパススルーする必要があったと言うところがあります。そんな変態サーバプランは個人で手が出るような価格では無理です。(NVIDIA GRIDとか使ったものしかない)また、Windowsを仮想環境に入れる場合、自分で所有していないレンタルサーバには原則、ライセンス上自分のライセンスを入れる事ができません。そんなこんなで、GPUを別にしても、レンサバ屋が用意したライセンスをお金出して借りる事になると、Windowsデスクトップ用途だと結構な金額になります。(月額3千円ぐらいから)

自分で所有し、自分でライセンスを用意するのならWindowsはサーバ版でなくてよいのでかなり安く作れます。

また、NASの運用も、今のサーバが2代目、初代から数えると運用はじめて7年目。それ以前に市販のNASを使っていた頃を含めばもう10年ぐらいになるのかも。

先代サーバのころは、タイで水害があったころのWesternDigital Greenを引いてしまい、8台中6台が2年で壊れるといった事で、落ち込んだりもするけれど、私は元気です。

そんなこんなもあって、WD Redシリーズで統一してます。

OS, FileSystem, Software

OS

メインサーバのホストはUbuntu Server 14.04 LTS に、Linux On ZFSを入れています。

他にもCent OSやらなんやら試したのだけれど、当時構成的に比較的新しいバージョンのKVM QEMUでないと駄目っぽく、これに落ち着きました。仕事でも使ってるし。

今思って見ると、作ったのは去年の7月ごろで、その頃、最新チップセットを搭載したマザーボードが出てから3ヶ月とかでした。そら安定性重視のディストリビューションでは動きませんわ、と言う話だと思う。

また、ヘタレなのでGUIを使っております。Ubuntu ServerにLXDEを入れてLubuntsu状態で、さらにVNCではなくxrdpを使っていると言うヘタレです。だってこっちだと何も考えずに音が通るんだもの。あとUnity。

KVMで仮想化というとプロが大規模に扱うケースが多いようで、ネットで公開してくださっている先人の皆様はコマンドで処理する方法の方が多いです。が、基本的にはVirt-managerは出来が良く、個人用途ならこれを使った方が楽だと思う。

NASの方は使い慣れたFreeNASを使わせて頂いております。

9.3になってからは

  • ブート領域もZFSになっていて、アップグレードに失敗しても古いスナップショットから起動できるようになってるんでお手軽にアップグレード
  • 故障する可能性が一番高い起動ドライブ(USBメモリ)のミラーリングが可能になってる
  • 試していませんがどうやらVirtualBoxを使って仮想ホストにもなれる

など、いろいろと良くなってます。正直、9になりたての頃はデフォルト設定だとsambaが暴走するとか言う頃もありましたが、今は安定してると思います。

各ソフトウエアの開発者の方に感謝。っていうかFreeNASの商用版が入ったやつ、日本でもどっか代理店になって売ったらどうですか。

filesystem

システムはext4で、ストレージはZFSです。

メインサーバはRAID Z2で、NASの方はRAID Z1です。

なんでZFSかというと

  • 以前からFreeNASを運用してきてなかなかに調子が良かった
  • ちょっと深い操作をするとコマンドを叩かなければならなかった昔のFreeNASでやってきたんでそれなりにコマンドが分かる
  • ftp.jaist.ac.jpの中の人の評価がよい
  • スナップショットを使うとゲストが簡単にクローンできるしバックアップできる

と言う所が大きいです。

そして、やはりFreeNASの存在は大きくて、メインサーバの方はシステムが死んでも、FreeNASをインストールしたUSBメモリをぷすっと刺すと、何にも考えずに自動でストレージを認識します。こんなふうに、システム間で互換性的にもそれなりに保たれているっぽいのもメリットとして考えてます。

(実は、ちゃんとアクセスできるかまではちゃんと試していない)

なお、なぜRAID Z2にしているかというと、気の迷い 以前WD Greenを引いたとき、次々に壊れる中で2台同時に壊れるのではないかとひやひやしたので。一つ目のドライブを交換して元に戻ったあと1週間もしないで次のドライブが故障して認識しなくなる、なんてことになった経験がありるためですかね。2台同時故障せずにデータが保持できたのは単に運だったと思っております。

もっとも、WD Redシリーズを使う様になってからはまだHDDは一台も故障を経験してませんが。

foltiaについて

主題の録画サーバは、ゲストにfoltia ANIME LOCKER(商用版)を入れて、そのまま使ってます。

https://foltia.com/ANILOC/

なかの人に感謝。感謝ついでに、MicroServerにプリインストールしたやつずっと品切れですが、早く追加生産してください。予備機に欲しいんです。

他にもLinuxを用いた録画サーバソフトはあるんですが選んだ理由としては一言で言うと趣味ですが、もうちょっと言うと

  • 録画はアニメが基本で、それ以外は言うほど使わない。
  • しょぼいカレンダーなど有志の方がなさっているサービスと連携し特化している
  • 仮想マシンで専用運用する事が前提だったため、OS込みのパッケージになっている方が選択しやすい
  • 有償版があるので、自然な形で開発者の方に投げ銭できる

といった事で選んでます。

KVM+QEMUの設定やパススルーについては、ググると先人の皆様の智恵があるのでそれを参考にしていただければと思います。自分がどんだけ説明してもそちらの方が分かりやすいので。

とにかく、何にも考えずにIOMMUを有効にし、Bridgeネットワークを設定した後、仮想マシンマネージャ(virt-manager)の機器追加にPT3が出てきたので、そのまんまぽちぽちとGUIでパススルー設定できました。

動作はかなり動作します。カードリーダーについても同様。(注意点としては、ホスト上でドライバなどはインストールしないこと。ドライバをインストールしてしまうとそれを差し替えるとかいろいろと呪文が必要になる模様)

また、録画先のストレージはホストに共有を設定して、その領域を使う様にしています。

録画サーバの設定などは全部Foltia任せで何にも考えずに基本デフォルトを受け入れています。非常に快適。勝手に録画してくれるし、エンコードしてくれるし、DLNAも共有も出してくれるので楽。こんなに頼り切っちゃっていいのかしらほんと。

Foltiaでは、エンコードはHDで出力するオプションなどもあり、その上で味付けに不満がある場合はソースコードいじれば設定変更できるみたいですが自分はやってません。

ただ問題になったのが2つあったのでここにメモ。

一つ目は今ではすでに問題にならないことだと思われるけど、仮想マシンを作成した当時は、ブート用のCent OSのバージョンが低くてインストールできない症状に嵌まりました。当時の対処方としては、準仮想化系やパススルーを全部切った状態の仮想マシンにインストールして、Foltiaがひとまずインストールされたあとに復活させると言うやり方で上手くできました。ただ、現在はブートのOSも新しくなっているようで、問題ないかも。

もう一つ嵌まったのがCMカット機能。

結論から言うと、仮想マシン上のFoltiaでは、Wineで動いているので、CMカット機能は無効にしておく方が無難だと言う事ですね。

CMカット機能とは、最新のFoltiaには搭載さている目玉機能の一つ。特にここで魅力的なのは、カットして消すだけではなく、カットして自動的に一番最後にまとめて移動させる事も可能という「わかってるな!」と言う所です。

喜んで使おうとしたのだけれど、これが上手く動かなかった。

当初稼働し始めた時は

  • 録画は順調に行われるのに、エンコードが詰まったまま進まない
  • CPU使用率が100%に張り付いたまま
  • FAQやマニュアルを参考につまりを除いてもやっぱり詰まる
  • ただ、その状態で2,3日置いておけばエンコードが終わっていることがある

と言う事がおきて、原因がわからなかった。

サポートに連絡しても良かったのだが、それはなんだかもったいない(???)ので

また、Foltiaは実際の所、オープンソースソフトウエアの組合せで構築されており、内部はシリアルナンバー認証機構以外の部分は全部ソースコードが読める状態になっていたので、それを追ってみた。

すると、どうやらCMカット機能はWindowsのバイナリをWineで動かしているよう。どうもそのプロセスが詰まっているようだったので、CMカット編集機能を止めた。

ただ、Foltiaの仕様上、CMカット編集を始めとした再エンコード時の設定は、録画予約時にまとめて行われるようになっていて、CMカットを止めても、引き続き次のTSに対してCMカット機能をしようとしてしまって戻らない状態にも。

当時はまだGUI上で録画済みのデータの再エンコード設定をやり直す方法がなかった。ので、さらにコードを読んで、内蔵されているPHPMyAdminから直接DBを編集して対処しました。今だとGUIが作られているので、一つずつCMカットを解除してやれば良いと思われますが。

この件の教訓は、Foltiaは中身を覗けるので、いざとなれば直接いじれるのは有利だと言う事。最後に手段があるのはありがたいね。

この他は、Foltiaは問題らしい問題はおきていない。非常に快適です。


その他のゲストについて

録画鯖以外に、Windows 8.1 pro入りの仮想マシンと、Ubuntu 14.04ベースのOpenCAE用の仮想マシンを使っています。

これらには、それぞれ物理GPUをパススルーして接続してます。

GPUのパススルーもPT3と同様に、ホスト側で一切ドライバなどを入れずに、そのまま仮想マシンマネージャーで追加したらあっさり認識しました。

Ubuntu 14.04ベースの仮想マシンの方は当然ながらKVMとの相性が抜群で、全く問題なく動いています。

Windowsのほうもドライバをきちんと入れ、GPUも正常に動作。FreeCADBlenderも新しいシムシティも、各種3Dベンチマークも、カスタムメイド3Dも、3Dカスタム少女も動いてます。(カスタムメイド3D2は直接操作すると正常に動いているが、リモートにすると何故か3Dの状態でマウスを認識してくれないと言う状態に陥り中、悩み中。問合せしたら「仮想マシンなどでの動作は保証しない」って明示されてしまいました。ま、そりゃそーですよね。)

ただ、Windowsの仮想マシン

  • 起動に5分ぐらい時間がかかる
  • 起動直後が異様に重たい(ストレージがアクセスしっぱなしになる)
  • ファストブートをONにすると2回に1回ブルースクリーンになる
  • ゲストをシャットダウンした後、ホストを再起動せずに再びゲストを起動するとホストまで巻き込んで全部死ぬ上GPUが暴走する

等、何か地雷を踏んでいる気はしている。まぁそこは運用でカバー(いいのか?

また、Windowsは普通のWindows 8.1なので、1コアを1ソケットと認識します。そのため2コアまでしか割り当てができないのもアレといえばアレだが用途的にそれで十分なのと、これを解決するにはServer向けOSを用意しなければ鳴らず、お金もかかるしでこれも保留(いいのか?

さて、なんでこんな構成にしているかというと、いわゆるVDIサーバ的に使いたかったからです。

自分はほとんど趣味で、オープンソースソフトウエアをつかった、コンピュータ工学シミュレーションをやっているのだけれど、これがとにかく重たい。計算負荷がでかく計算に時間がかかるし計算結果は膨大になる。突き詰めればスーパコンピュータなんて世界になります。これをモバイル環境で実現しようとすると、ゲーミングPCやモバイルワークステーションが必要になる。前はがんばってモバイルワークステーションを持ち歩いていたのだが、いい加減しんどくなり、また最近は立ち寄り先にWifiが利用できるようになりつつあり、現実的な速度でリモートで接続が現実的になったのでこんな風にしてます。

この世界だともともとVDI的に接続するのはかなり行われていて、HPC等は基本このやり方です。また、最近AWSなどクラウドリソースを使って似たような事をやろうと言うソリューションが花盛りだったりしますが、どれも個人が自分でやると言う様な設計にはなっていないので、自分でやってみたというわけですな。自分はシミュレーションですが、例えば3D CGなどをやる人も、結構つかえるんじゃないでしょうか。一度LAN内部に世俗できてしまえば、あとはこのサーバからWoLで必要なマシンをたたき起こして、そちらに投げて演算させて戻す、といった事もできます。

あと雑多とした注意点とすると

  • ホストにGPUのドライバ、インストールしてしまうとパススルーに失敗するので注意。特にプロプライエタリのドライバは消しにくい。(きれいに消せばいいと思うが自分は面倒臭くなってOS再インストールした)
  • GPUNVIDIAではなくAMDを選んだ理由は、KVMでパススルーするならAMDのほうが成功率が高いらしいと聞いたから。
  • マザーボードのBIOS/EFUIでVT-Dを有効にするのを忘れずに。初期は無効になってること多い
  • マザーボードのBIOS/EFUIでメイン画面をオンボードにする事を忘れずに。そうしないとホストにGPUとられちゃってパススルーに失敗する。そしてその状態だと自動的にプロプラドライバ進めてきてうっかりインストールすると…。
  • パススルーしたいデバイスをPCI-eのブリッジチップを介してるスロットに刺すと、ブリッジチップごとパススルーしないと認識に失敗するっぽいので、CPUに直結しているPCIeのポートに指す方が無難(やってできない事は無いよう)
  • リモートでの使用が基本。ソフトはTeamViewerを利用している(RDPだとハードウエアGPUが有効にならない)この時、GPUをディスプレイに接続しておかないと画面が有効にならないので注意。 自分は EDID制御機能付きのディスプレイ切替機を接続している。
  • LANへの接続は、BUFFALOの格安VPNルータ、VR-S1000を使ってL2TP/IPSecで接続してます。
    • L2TP/IPsecにしたのは、今となってはこれがセキュアさと設定の手軽さのバランスがとれていたので
    • ヤマハじゃないのはお金がかかるから。あとアクセスは最高でも同時3つまでなので。
    • サーバにVPNサーバを組み込んでないのはVPNが死ぬと手も足も出せなくなるので、専用品のほうが安定しているから
    • 回線のホームゲートウェイに付いてる機能を使わないのはいくらなんでも遅いため
    • 以上は全部表向きの理由で実際は使って見たかったから(ォィ

バックアップについて

基本的には領域を適宜バックアップ用のNASにスナップショット転送してます。

さらに、録画したデータのなかでお気に入りのデータはさらにNASに手動でコピーして、場合によってはちょいちょい編集して整理しています。

なんでNASにコピーしているかと言うと、バックアップもそりゃあるんですが、FreeNASのプラグインにPlex Media Serverというのがあり、これがなかなか優秀なためです。日本ではあまり知られてないけども、Webインターフェイス、DNLAは当然として、iOS,Android、そしてAndroid TV向けのアプリもすでにあるそうです。これをFreeNASの場合は半自動でインストールして使える様にしてくれます。便利です。

動画などのクラウドバックアップは諦めてますが…Google Photoとか。検討してみましょうかね…。

普通のファイルのバックアップはOne Driveを使っていますがWindowsとくっつきすぎていて使いづらい気がする。

アラートについて

なにそれおいしいの?

あ、FreeNASはアラート出してくれます。

経験した故障について

電源の故障があり、交換した、と言う話だが故障切り分けをしたのでメモ。

使用から1年したころ、GPUが認識しなくななりました。

BIOSからもトラブルの当初は認識していたが、次第にBIOSからも認識しないと言う状態に陥りました。

ただ、この時は取り急ぎパススルーからGPUを外したら素直に動き、また録画鯖の方のPT3は正常に動作していたのでそのまま放置。しかし、しばらくしてサーバがうんともすんとも言わなくなりました。完全に電源が入らない。

そこで以下のような形で被害探求をしました。

  • マザボから全部外す。電源もマザボ行きライン以外全部外す
  • CMOSクリアをする。(なお、CMOSクリアボタンがバックパネルにある事は全てが終わってから気づいた模様)
  • この状態で、一度電源ケーブルを抜き、放電させてからマザボ上のスイッチで電源をONにすると、一瞬(一秒も満たないレベル)CPUファンが動くがすぐに止まる。
  • 全部外して、ATX電源のスイッチのピンをショートさせてみたが電源が全く反応なし

(ご参考: http://jisaku-pc.net/experimental/0004.html 感謝)

そこで、電源その物は3年保証だし、悪評が出ているものではないので、単なるエラーだと判断してまったく同じものを注文して差し替えたところ、正常に動作するように。

そういえば、以下のような心当たりがあった。

  • GPUのパワーを使う様な動作をさせると、PT3の録画が一部飛んでしまうことがあった
  • 2つの仮想マシンで同時にGPUを使うと、ホストが再起動する事があった

これらももしかしたら、電源が故障し、PCIe補助電源を正常に供給できなくなっていたことが原因なのかも。と言うわけで、GPUがおかしくなったと言う場合、電源が障害の原因ってこともそれなりにありそうです。

この故障した電源を取り外して、ファンの隙間から見てみると、アルミのヒートシンクの部分に黄色いシミのような物がついておりました。

どうも、どこかのコンデンサが液漏れを起こしたっぽい?

これもツクモ経由でメーカに返送して修理してもらう予定。

今後の課題について

  • マニュアルなし。今から再構築しろと言われてもたぶんできない
  • バックアップ鯖のほうが容量が小さいので破綻が近い
    • ML310eが安く出たら速攻でGetしてリプレイスしたい(無茶
  • クラウドバックアップ、重要なデータだけでもなんとかしたい
  • UPSのバッテリーが死にそうなので買い換えたい。
  • FreeNAS構築記事のあたらしいの書きたい。

2011年11月14日 (月曜日)

[][][][]Internet information Service(IIS)でネットワークドライブを仮想ドライブとして指定する方法 Internet information Service(IIS)でネットワークドライブを仮想ドライブとして指定する方法 - 高森太郎のノート を含むブックマーク はてなブックマーク - Internet information Service(IIS)でネットワークドライブを仮想ドライブとして指定する方法 - 高森太郎のノート

先日作ったFreeNASのファイルサーバだが、ダウンロード専用に簡単にファイルを渡したいという要望があった。どちらもLAN内での話だが

  • 先方にデータを送りたいとき、社内で認証など不要な場合も多々あるが、そんなときでもいちいち認証を求めていたのでは非効率である
  • いくらバッチファイルなどの手段があるとはいえ、そういったことがすらすらとできる人ばかりではない

と言う事である。確かにそうだ。と言う事で

  • メールにURLが書いてありリンクをクリックすればダウンロードができる

と言う事を実現したい。

普通ならきちんとしたファイル共有システムやら、アップローダやらを設置してやるとかすればいいのだがそんなにリソースもない。ならばサーバにApacheなどの適当なHTTPdを入れてディレクトリブラウズをできる様にしてやればいいのだが、FreeNAS8系では現状それができない*1

一方、現状別の用途で運用しているWindows Server 2003があり、こちらではIISが稼働している。というわけで

と言う手段をとることにした。*2

これはそれの設定メモである。FreeNASと言っているが、NASと言うかネットワーク共有ドライブならば特に限定はされないはず。またこの手法で行うと認証がされなくなってネットワーク上に大公開という事になるので、セキュリティには他で担保する必要がある。

なお以下の例でそれぞれ、IPアドレスが

FreeNASサーバ
192.168.10.254
Windows Server
192.168.10.253

であると仮定し、共有用のディレクトリは「public_share」としている。このほかの設定は前回ファイルサーバを作った時の設定と同じにしてある。

FreeNAS側の下準備 - ユーザを作成する

前提条件として、NAS側にIISがアクセスに使うためのユーザを作って適切にアクセス権限を設定しておく必要がある。またディレクトリも分けて置いた方が無難だろう。

以下FreeNASの例である。

これは前回の記事で作成したFreeNASサーバを前提として書いている。

まずFreeNAS側でWindows Serverからアクセスするためのアカウントを作る。

Web Guiから

ユーザ -> Add ユーザ

で適当なユーザを作る。Windows Serverから使うだけなので、自分はわかりにくい名前にしておこうとアカウント名パスワード共にランダムな文字列を設定した。またこのユーザでシェルへログインする事はあり得ないので、グループを「nogroup」ログインシェルを「nologin」にしておくことを忘れずに。

またディレクトリも作っておいた方がいいだろう。

ここではSSHでログインして

mkdir /mnt/tank/public_share
chgrp all_user /mnt/tank/public_share
chmod 775 /mnt/tank/public_share

とした。

mkdir /mnt/tank/public_share
ディレクトリの作成
chgrp all_user /mnt/tank/public_share
オーナーグループを「all_user」に変更
chmod 775 /mnt/tank/public_share
パーミッションの設定。オーナーとグループは全部許可、それ以外は読み出しのみ許可

また、WebGUIから

共有 -> CIFS Shares -> Add CIFS Share

からこの/mnt/tank/public_shareを共有に出しておく。この時に、Windows Server以外からこの共有にアクセスする事を制限するなどもできる。

この後、前回の設定だと各ユーザのホームディレクトリに/mnt/tank/public_shareへのシンボリックリンクを作成する。

ln -s /mnt/tank/public_share /mnt/tank/home/(ユーザ名)/public_share

を繰り返してユーザディレクトリに作成していく。

面倒なのでこのあたりはシェルスクリプトにして流してしまった方がいいかもしれない。

また当然直接共有に出してしまうなど別の方法でアクセスを担保しても良い。

Windows Serverの下準備

FreeNASで作成したユーザ名、ユーザIDと同じユーザを作成しておく。

当然ながらこの時もログインできないように処置をしておいたほうがいい。

IISでの設定

IIS マネージャから加えたいWebサイトを右クリックして「仮想ディレクトリの追加」として、後は表示通りにやっていくだけ。

このあたりは検索して見ると豊富なやり方が出ているのだけれど、この時ネットワークドライブを追加する時の注意点として以下の二点がある。

  • ファイルパスをUNC名で入れなければならない
  • ネットワークドライブにアクセスするためのユーザとパスワードを指定する必要がある

まず全社「ファイルパスをUNC名で」とはどういう事かと言うと、ここでたとえ、このドライブを「Z」などとしてWindows Serverにマウントしていても、このZへマウントしていると言う情報はユーザ依存なので使えないと言う事らしい。*3

つまり

Z:\public_share

と入れても駄目で、参照を押してネットワークドライブを加えようとしてもOKがグレーアウトして押せない。なので、たとえばサーバのアドレスが192.168.10.254であったとすると

\\192.168.10.254\public_share

と入力する必要がある。

これを入力すると、通常は与えるアクセス許可の選択に行くのだが、ネットワークの場合「セキュリティ資格情報」という画面になる。この画面で、「ネットワークディレクトリへのアクセスを検証するときに、認証された資格情報をつねに参照する」をチェックを外し、先ほど作成したネットワークドライブにアクセスする用のユーザを選択し、パスワードを適切に入力してやる必要がある。*4

ウイザードを終了するとこれで仮想ディレクトリはできるが、今回はこのディレクトリの中身を観覧してもらうようにしたい。ということで作成した仮想ディレクトリを右クリックして「プロパティ」を開き、「仮想ディレクトリ」のタブから「ディレクトリの参照」のチェックボックスをつけてOKする。

これによって、アクセスするとそのディレクトリの中身の一覧が見られるようになる。また必要に応じてMIMEも設定してやること。

これで、ウエブブラウザでアクセスしてみる。今回の例だと「http://192.168.10.253/public_share」にアクセスする。

テストアクセスしてみて500とか出る場合は大抵Windows Server/IISNASへのアクセスに失敗しているのでまずそこを確認するのがいいと思う。

完成結果

これでユーザは、

  • ネットワークドライブの自分のホームの中に見えている「Public_share」の中に送りたいファイルを入れる
  • Webブラウザで「http://192.168.10.253/public_share」にアクセスする
  • 自分が今入れたファイル名を右クリックしてリンクアドレスのコピーをする
  • コピーしたアドレスをメールに記載する

と言う事を行うと、受け取ったユーザはメール本文を開いて、リンクURLをクリックするだけでダウンロードが始まると言う事になるのである。

本当はセキュリティ上の様々な懸念があるのでもうちょっと工夫したりしないと駄目なことも多いだろう。認証なども必要に応じて施す。

また当然ながらこいつは信頼できるコンピュータだけがつながっているLANの上で使われる事を前提にしている事も注意が必要だ。外に出すならもっといろいろと考えるべき事は多いだろう。

また、アクセスの量がそれほどでも無い場合はいいが、結構なアクセスが発生するようだとNICを足してスタティックルートを設定、クロスケーブルで直結するなどネットワークの改造をした方がいいかもしれない。

このほか、現状だと送ることはできるが、データを受け取ることが出来ないと言う事になる。この場合WebDAV等を検討する事になるかも知れない。が、認証がポカ避け程度にしか必要無いなら

if exist \\192.168.10.254\public_share goto ACCESS_OK
net use \\192.168.10.254\IPC$ /user:<ユーザ名> <パスワード>
:ACCESS_OK
%windir%\Explorer.exe \\192.168.10.254\public_share

とか言う身も蓋もないバッチファイルを配ってしまってやるとか、FreeNAS側でFTPを有効にしてFTPで入れてもらうとかいろいろと考えられる。

*1:ロードマップを見ると、将来どこかで軽量なHTTPdをプラグインとして組み込むという議論はあるようだが、フォーラムを見ると「そんなもんいらねえだろ」と言う意見もあってそれほど進んでいない。FreeNAS0.7系ならできる

*2:このほかにiSCSIとかWebDAVとかいろいろな手段があるが今回はそこまで必要無いのでやってません

*3:ネットワークドライブのパスはユーザごとに決まっており、別のユーザでは変わってしまう他、IISはサービスとして動作するのでと言う事らしい。このあたり詳しくはMicrosoftサポート情報 マップされたドライブを IIS で使用する方法 でよくわかるんだかわからんのだかと言う文章を参照

*4:アクティブディレクトリ環境などの場合、当然この限りではなく、「ネットワークディレクトリへのアクセスを検証するときに、認証された資格情報をつねに参照する」をONにしたまま、アクティブディレクトリの認証情報をつかっていろいろとできるらしい

2011年11月01日 (火曜日)

[]FreeNASで40人規模のファイルサーバを作ったメモ FreeNASで40人規模のファイルサーバを作ったメモ - 高森太郎のノート を含むブックマーク はてなブックマーク - FreeNASで40人規模のファイルサーバを作ったメモ - 高森太郎のノート

FreeNAS8.0.2で40人規模のファイルサーバを作った。一応正常に動いているようなのでその件についてメモ的な記事です。

素人が片手間に調べながらやってるので、間違っている可能性、これよりもよい方法がある可能性は大いにあります。この情報を用いて何があっても自己責任、それが原則でお願いします。

なお、参考にすべき基本的なリンクをはじめに示しておきます。

  • freenas.org
    • 使用するNAS特化型、FreeBSDディストリビューション FreeNASの公式Web
  • doc.freenas.org
    • FreeNAS公式ドキュメントページ。えーごわかんない!と言う自分のような方はGoogle翻訳などを利用して読んでみてください。平易な英語なのでなんとかなります。

いろいろとやるにあたって、たくさんの方の先人の知恵をお借りしました。

またオープンソース/フリーで公開していただいているものをたくさん利用させていただいております。感謝申し上げます。

要件とか

比較的安価なハードウエアで、オープンソースの資産を最大限活用させていただき、40人程度が使用する予定のファイルサーバを作ると言う事になった。

ファイルサーバに必要な要件は以下の通り。

  • 予算10万以下(UPS込み)
  • 容量は多ければ多いほどよい。
  • 基本的に24時間稼働
  • ファイルサーバ以外には使わない。

利用者の要件としては

  • ユーザ40人程度のWindowsユーザにバックアップ用のプライベート領域、及びアクセス権限に応じた共有ディレクトリを渡したい。
  • ドライブは単一で接続して、その中に共有ディレクトリが見える形にしたい。
    • 各ユーザがサーバにアクセスすると、自分のホームのみが見え、そこの中にシンボリックリンクでつながれた各ユーザのアクセス権限に応じた共有ディレクトリが見える形にしたい。
  • スピードはLANが100Base-Tなのでそれほど望まないが、夕方早朝などに同時アクセスがある可能性があり、それに耐えられるよう配慮する

このような要件でいろいろと案を考えたのだが、結局予算とかその他の理由で、Windows Server Foundationとかを使う案は却下され、またDabro等の専用機器も却下された。

そこでいろいろと話をした結果、安価なサーバを増強して使用するこになった。

構成

品目詳細/型番価格リンク等
ベースシステムHP ML110 G6 5100780-AVCN(Core i3-530@2.93GHz 搭載機)22,980円NTT-Xストア
システム領域4GB USBメモリ580円
ストレージ2TB HDD×4(ウエスタンデジタル WD20EARX)6,050円×4=24,200円ASIN:B005030N36
メモリDDR3 2G ECC unbuffer ×4(キングストン KVR1333D3E9K2/4G(2GB二枚組) ×2)4,480円×2=8960円ASIN:B001O7TPDG
NICIntel ギガビットデスクトップアダプタ EXPI93010CT3,487円ASIN:B001CXWWBE
UPSAPC Smart-UPS 750 SUA750JB29,790円ASIN:B0009QD8ZE

その他諸経費、LANケーブル、マーカなど小物等々含めて、10万以内に抑えた。

なお価格は購入した当時であり、現在とは異なる。

システムはすでにFreeNAS0.7系を使用したことがあったFreeNASを採用するした。この時、FreeNAS0.7系(いわゆるLegacy)とFreeNAS8系があったのだが、以下の理由でFreeNAS8系を選んだ。

  • FreeBSD8.2ベースである。
  • ZFSがベースOSであるFreeBSD上で正式サポートされている。WebGUI上でも出来る事が増えている。
  • 今後はエンタープライズ用途はFreeNAS8系でアップデートしていき、今後Legacyから開発の中心が移動する予定*1
  • 必要な機能が揃っている
    • Windows共有(Samba)
    • UPSサービス(APCのUPSに対応している)
    • Rsync対応

なお、ここではこのような選択をしたが、現時点でFreeNAS8系は、FreeNAS0.7系と比べて以下のような違いがある事を覚えておく必要がある。FreeNAS8系から7系にはデータを保持したまま簡単に乗り換えができないのでこれから構築する人はきちんと見極めておいたほうがよい。

  • UPnP(DLNA)/iTunesサーバ非対応(FreeNAS8.1でプラグインにより対応予定)
  • Bit Torrent非対応(FreeNAS8.1でプラグインにより対応予定)
  • その他、HTTPサーバなどいくつかのサービスが非対応
  • FreeNAS0.7系にくらべて余り枯れているとは言えない
  • FreeNAS0.7系は一応日本語のドキュメントがある

この点を考慮して選択する必要がある。

[]ハードウエアの組立、セットアップと基本設定 ハードウエアの組立、セットアップと基本設定 - 高森太郎のノート を含むブックマーク はてなブックマーク - ハードウエアの組立、セットアップと基本設定 - 高森太郎のノート

Hardwareの組立

特に先に書いた構成で特に問題は無なし。

Memtest86+でメモリテストも3パスクリア、KNOPPIXにより一通りの動作を確認した。これは初期不良返品が可能な期間内に行って置いた方が面倒がない。検品の一環として一通りの流れとして行った。

なお、このメモリテストについてだが、Micorosoftが配布している同種のソフトウエアもある。また"+"がついてないmemtestもあるが、この2つは4GB以上のメモリに対応していないので注意する必要がある。特にMSが配布しているツールは、使えそうな気がするが、さらっと

Windows メモリ診断は、最初の 4 GB の RAM のテストに制限されています。RAM が 4 GB より多い場合は、最初の 4 GB の残りの RAM を Windows メモリ診断でテストすることはできません。

Windows メモリ診断 - 付録

などと書いてある。今回場合は8GBのメモリ領域をテストする必要があり使えない。と言うか今時4GBまでってどうよとも思う。

また、システム領域をインストールするUSBメモリは、本体内のマザーボードに設置されているUSBのソケット*2にそのまま接続した。

ここら辺が面倒であったり、自前で難しい場合はは、組み付け済みで販売してくれる小売店などもあるので、そう言う所に相談すると組み付けて納品してくれたりもするので利用するとよい。当然自前で部品を組み付けるよりもコストはかかるが、HPの純正CTOよりは安いし、リスク評価などを勘案すると総合的には安いかもしれない。

システムのインストール

インストーラは、FreeNASの公式Webからリンクをたどり、SourceForgeから最新の「安定版」をダウンロードしてくる。ダウンロードページからは複数のバージョンがダウンロードできるが、今回のケースでは最後がamd64.isoをダウンロードしてきた。それぞれのファイルは以下の通り。

amd64.iso
AMD64(いわゆるx64)プラットフォームのインストール/アップグレード用のCDイメージファイル。近年のパソコンであればx64に対応している。基本的にはこれでよい。
amd64-GUI-Upgrade.xz
AMD64(いわゆるx64)プラットフォームのWebGUIからアップデートするためのファイル。展開せずにそのままWebGUIを通じてアップロードして使用する。今回は初期インストールなので使用しない。
amd64-Full_install.xz
AMD64(いわゆるx64)プラットフォームのDDなどのツールでUSBメモリ/HDDに直接焼き込むためのイメージファイル。分かっている人が使うためのものです。
i386.iso
i386-GUI-Upgrade.xz
i386-Full_install.xz
上記のi386版。いわゆる32bit版。64bitの方がパフォーマンスが発揮されるし、ZFSはメモリをふんだんに使用するので、AMD64(x64)非対応のものを使用するので無ければ使わない。ただし、環境テストなどで仮想環境にインストールするときはこちらの方がいいかもしれない。

なお、FreeNAS8は、従来のFreeNAS0.7系と異なり、システム領域に物理的なドライブを丸ごと全部使用するので注意が必要である。USBメモリにインストールできるので、USBメモリ等を用意しておくことが推奨されている。*3

インストールは、落としてきたisoイメージを、CD-Rに焼き込み、それを端末のDVD-ROMドライブに入れてブートする。ブートすると、以下順番に表示が現れるので、それぞれ以下のように操作する。

FreeNAS (バージョン) Console setupの画面
1 Install/Upgrade to hard drive/flash device, etc. を選択する
Choose destiation mediaの画面
適切な領域を選ぶ。製品名なども表示されるし、この場合一つだけケタが違うので確実に選択する。
Start FreeNAS installationの画面
「インストールするデバイスの中身は全てのパーティションに渡って全部消される」「インストールするデバイスはデータ共有には使えない」という警告が表示される。よろしければYesで次に進む。
インストール中
画面下にいろいろ出るが基本的に問題無く進む。
インストール完了画面
ディスクを取り出して再起動しろと言うメッセージが出るので、再起動する。

これだけでインストールは基本的に完了する。

インストール完了してリブートする。DHCPサーバが稼働しているならば、ここで再起動したときに自動的にIPが振られ、画面に「http://xxx.xxx.xxx.xxx/」とアクセスすべきWebGUIのアドレスが表示されるので、アクセスをする。DHCPサーバが稼働していない場合、再起動した後にコンソールからIPアドレスを手動で設定する。

なお、まず最初にアクセスすると、WebGUIは何もパスワードを要求せずにアクセスができてしまう。また、WebGUIの右上にあるアラートが黄色になっている。これはWebGUIのアカウントパスワードを変更していないために起こっているので、まず

アカウント->管理ユーザの変更

でユーザ名を。

アカウント->パスワードの変更

でパスワードを必ず変更しておくこと。

また日本語化は、

Setting->language

でJapaneseを選択し、ブラウザを開き直せば日本語化できる。

またその時同時にタイムゾーンをAsia/Tokyo、WebGUI Portを必要に応じて変更しておく。

なおWebGUI Portはここで変更してもコンソールに出てこないので、忘れるとポートスキャンとかする羽目になるので変更したらブックマークするなりメモるなりしておくこと。

その他、

設定->E-mail

に正しいメールアドレスと利用できるメールサーバを設定しておくと、日々の状態などがメールで送られてくる。

またメールによって状態を送信してくるサービスもこの設定を利用するので設定しておくとよい。

ZFSボリュームを作成する

WebGUIから、

ストレージ->ボリューム->ボリュームの作成

と入り、「ボリュームの作成」画面で、作成する。

ボリューム名
ボリュームの名前。分かり易い名前をつけておく。ZFS界隈だと「tank」とつける事が多いらしいので、今回の例では「tank」としておく。
メンバーディスク
このボリュームに含めるディスクを選択する。選択したディスクは中身全部消されるので注意。
ファイルシステム
UFSとZFSと選べる。ZFSを選ぶ。
4096バイトセクタサポート
今回のディスクの場合はこのオプションが表示されるので、チェックしておく。(いわゆる4KBセクタ対応ディスクで表示される)
グループタイプ
RAID-Zを選択する。ここではRAID-Z1(RAID5相当)になる。
ZFS Extra
ここでグループに含めなかったディスクの処遇を決める事ができる。分かる人が使う部分なので無視してよいが、SSDを混ぜてキャッシュにしたり、ホットスペアに指定できたりするが、バグもある:

よければ「ボリュームの作成」をクリックして作成する。既存のファイルシステムだとここから延々とフォーマットが始まる所だが、ZFSの場合はほぼ一瞬で終了するはずである。

なおここで追加されたものは、/mnt/以下に自動的にマウントされる。この場合は

/mnt/tank/

となる。

ここまで来たら、

設定->設定のダウンロード

で一度設定のバックアップを取っておくことをおすすめする。この後もそれぞれの段階で設定のバックアップを取っておくこと。なおこれはFreeNASのシステムの設定のバックアップであり、当然ながらストレージのバックアップではない。

だいたい以上が基本設定である。このまま、アクセス制限など考える必要がなければ、

共有->ADD CIFS Share

で/mnt/tank/を丸ごと共有に設定、さらに

サービス->CIFS

の認証モデルを「Anonymous」にしてしまえばあっという間にとりあえずのファイルサーバにはなる。(ただしこのままでは誰からもアクセスし放題の非常に脆弱なサーバになる)

[]共有・アクセス制限、ホームディレクトリなどの設定 共有・アクセス制限、ホームディレクトリなどの設定 - 高森太郎のノート を含むブックマーク はてなブックマーク - 共有・アクセス制限、ホームディレクトリなどの設定 - 高森太郎のノート

今回はさらに、適切なアクセス制限を行う。

基本設定…の準備。

まず、どういう風に使いたいか考えてそれを形にしておく。今回の場合以下のように設定した。(括弧内はこの例での定義名)

  • ユーザHome Directory(home/ユーザ名/)
    • ここをそこをドライブとしてマウントして使う。ここは本人意外アクセス不可。このホームディレクトリはUNIXのディレクトリでは無く、Samba的意味でのホームディレクトリ。
  • 全員向け共有(all_user/)
    • 使用する者全員がアクセスできる共有ディレクトリ。
  • 管理職用共有(manager/)
  • チーフクラス共有(chief/)
  • Xプロジェクト共有(project_x/)

こうした後で、ディレクトリ構造は以下のようにしたい。それぞれ/mnt/tank/以下に

  • all_user
  • manager
  • chief
  • project_x
  • home/(ユーザ名)/my_data
    • ただのディレクトリ
  • home/(ユーザ名)/all_user
    • /mnt/(ユーザ名)/tank/all_user/へのシンボリックリンク
  • home/(ユーザ名)/manager
    • /mnt/tank/manager/へのシンボリックリンク
  • home/(ユーザ名)/(権限のあるディレクトリ)
    • 権限を持たせたディレクトリへのシンボリックリンクを追加する

また、各ユーザは以下のようなグループに分ける。

  • all_user
  • manager
  • chief
  • project_x

それぞれはそれぞれに対応する共有ディレクトリにアクセするための権限を持つグループとする。またあらかじめ、ユーザのIDとパスワード、及び可能なアクセス範囲を一覧にしておく。

また、この設定にはSSHを利用するので、

サービス

の画面でSSHをONにし、

ユーザ->Addユーザ

で管理用のユーザ(Wheelグループに入れてrootがとれるように)を作っておく。

ユーザと、グループの作成

ユーザと、グループを作成する。まずはユーザを作成する。ユーザは、

アカウント->ユーザ->Addユーザ

で必要なだけ作成する。入力項目はだいたい以下の通り。

ユーザID
1001番から始まる数字。重複できないが、Addユーザすると自動的に連番が入ってくるのでそのままでだいたいOK
ユーザ名
ログインする時に使うユーザ名。半角英数。ここをWindowsのログイン名と同じにしておくと捗る事も。
プライマリグループ
主グループ。アクセス設定は補助グループを使うので、ここでは「nogroup]にしておく。
シェル
ログインシェル。単にファイルアクセスだけさせるユーザの場合ここは「nologin」にしておく。SSHなどでアクセスするユーザは適正に設定する。
フルネーム
ユーザの名前。たとえが「Taro Takamori」などと入れておけばよい。
E-Mail
特に必須ではないが、入力しておくとアラートの送付ユーザに設定したりできる。ただファイルアクセスだけするユーザの場合は無記名でかまわない。
パスワード
パスワード.Windowsのログインのものと同じにしておくと捗るかも。
Disable Password logins
たとえばSSHでアクセスするユーザなどのために、パスワードログインを抑止する事ができる。チェックを入れた場合んはSSH Keyを入力する。

必要な数だけこれを繰り返す。

次にグループを作成する。グループは

アカウント->グループ->Addグループ

で作成する。入力項目はだいたい以下の通り。

グループID
1001番から始まる数字。重複できないが、Addグルーアップすると自動的に連番が入ってくるのでだいたいそのままでOK
グループ名
分かり易い名前をつける。

これを必要なだけ作成する。

次に、作成したユーザに補助グループを設定する。これには2種類やり方があるが、どちらか分かり易い方でOK

グループベースにユーザを選ぶ場合
アカウント->グループ->全てグループを表示

を選んで、「メンバ」を押して出た画面で、左のboxで入れたいユーザ名を選び、右のboxに>>をつかって移動してOK

ユーザベースにグループを選ぶ倍委
アカウント->ユーザ->全てユーザを表示

を選んで、「補助グループ」を押して出た画面で、左のboxで入れたいグループ名を選び、右のboxに>>をつかって移動してOK


以上を必要な数だけ繰り返す。

ディレクトリの作成

SSHでログインする。SSHって何?と言う人は、検索でも何でもすれば出てくるのでそれらを。

ログインしたら、まず、以下の順番でコマンドを入力して共有ディレクトリ、ホームディレクトリの素となるディレクトリを作成、及びユーザ、グループへのアクセス権を設定する。必要に応じてsu等しておくこと。

mkdir /mnt/tank/home

mkdir /mnt/tank/all_user
chgrp all_user /mnt/tank/all_user
chmod 770 /mnt/tank_one/all_user

mkdir /mnt/tank/manager
chgrp manager /mnt/tank_one/manager
chmod 770 /mnt/tank_one/manager

mkdir /mnt/tank/chief
chgrp chief /mnt/tank_one/chief
chmod 770 /mnt/tank/chief

mkdir /mnt/tank/project_x
chgrp project_x /mnt/tank_one/project_x
chmod 770 /mnt/tank/project_x
mkdir
ディレクトリを作成している。
chgrp
オーナーグループを変更している。
chmod
パーミッション(アクセス権)を設定している。

各コマンドの詳しい事はより分かり易いページを参照させていただくとよい。


次に、各ユーザのディレクトリ周りの設定をする。ユーザ名はそれぞれのユーザ名に置き換えてやる。またlnのコマンドは、アクセス権限のある共有に対してだけ行う。

mkdir /mnt/tank/home/(ユーザ名)
mkdir /mnt/tank/home/(ユーザ名)/my_data
chown -R -P (ユーザ名) /mnt/tank/home/(ユーザ名)
chmod 700 /mnt/tank/home/(ユーザ名)
ln -s /mnt/tank/all_user /mnt/tank/home/(ユーザ名)/all_user
(以下必要に応じ)
ln -s /mnt/tank/manager /mnt/tank/home/(ユーザ名)/manager
ln -s /mnt/tank/chief /mnt/tank/home/(ユーザ名)/chief
ln -s /mnt/tank/project_x /mnt/tank/home/(ユーザ名)/project_x
mkdir
ディレクトリを作成している。
chown
オーナーを変更している。
chmod
パーミッション(アクセス権)を設定している。
ln -s
シンボリックリンクを設定している。

これを必要なユーザの数だけ繰り返す。


以上がコマンドなのだが、こう言ったものをいちいち手打ちにしておくと非常に手間なので、シェルスクリプトという形でスクリプトを作っておき、これをSSHで適当なディレクトリにアップして一度に実行すると言う手もある。

CIFSの設定をする

サービス->CIFS

で設定画面を開く。設定項目は大抵以下のような感じ。

認証モデル
ローカルユーザにしておく。Anonymousを選ぶと無制限アクセスになる
NetBIOS名
Windowsのローカルネットワークで表示される名前。
ワークグループ
WindowsのWorkグルーアップ
説明
Windowsから見たときに説明として表示される。
DOS文字セット
CP437(デフォルト)でよいはず。
Unix文字セット
UTF-8(デフォルト)でよいはず。
ログレベル
ログの量を設定する。FreeNASの場合、デフォルトでは再起動するとログが消えてしまうので、最小で大抵はよい。
ゲストアカウント
nobodyにしておく。(ゲストは許可しない)
ゲストアクセスの許可
チェックしない
ゲストアクセスのみを許可
チェックしない
ファイルマスク
設定したファイルを表示させないようにできる。通常は入力の必要無し。
ディレクトリマスク
設定したディレクトリを表示させないようにできる。通常は入力の必要無し。
Large RWサポート
使用する端末がWIndows 2000以降のみであればチェックを入れておくとアクセス速度が改善する
Sendfile(2)を用いて送信
使用する端末がWindows 2000以降のみであればチェックを入れておくとアクセス速度が改善する
EAサポート
OS/2で使用されていたファイル属性拡張のサポート有無。通常はチェックしなくてよい。
DOSファイル属性のサポート
隠しファイルなどのUnixにないファイル属性のサポートの有無。チェックしておく。
空のパスワードを許可
許可しない方が良いのでチェックしない。
補助パラメータ
GUIで設定できる以外の、smb.confの内容を直接記述できる欄。後記参照
ホームディレクトリの有効化
チェックを入れておく。これを有効化しておくことで、いちいちユーザ用のホームディレクトリの共有を作らなくても自動的にホームの共有を作成してくれる。
Enable Home directories browsing
チェックしない。チェックしておくとホームディレクトリが見えるようになるが、今回は見えない方がよいのでチェックしない。
ホームディレクトリ
ホームディレクトリのルートを設定する。/mnt/tank/home と選択する。
AIOの有効化
チェックをいれておくと高速化するので基本的にチェックを入れておく。データをやりとりしている最中になんらかの障害が起きるとデータが壊れたりする事も(ごく希に)あるので応じて決める。簡単に言うとこれをONにすると、FreeNASのサーバがデータを受け取ったり書き込んだりするとき、いちいち相手の応答を待たなくなる。
Minimum AIO Read size
非同期読み込みを行う最小サイズの設定。最適値はいろいろあるチューニングポイント。1にすると全て非同期読み込みを行う。単位はbyte
AIOライトサイズの最小値
非同期書き込みを行う最小サイズの設定。最適値はいろいろあるチューニングポイント。1にすると全て非同期書き込みを行う。単位はbyte

ここで「補助パラメータ」の欄に

follow symlinks = Yes
wide links = Yes
unix extensions = No

と入力しておくこと。

follow symlinks
シンボリックリンクのサポートする。これを記入しておくとシンボリックリンクを辿って共有ができる。記入しないと共有にシンボリックリンクしたディレクトリが出てこない。
wide links
共有に設定していないディレクトリへのシンボリックリンクを辿るようになる。記入しないとシンボリックリンクした先も共有になっていないとリンクを追わない。
unix extensions
HPによるCIFSのUnix拡張の利用を制御する。これがYesのままだと上記の設定をしても正常にアクセスできないので同時に設定する。

シンボリックリンクを設定して、上記のオプションを入力してあっても、正しくパーミッションが設定されていないと共有にはアクセスできないのでそこも併せて注意しておく。たとえば間違えてアクセス権限の無いユーザのホームディレクトリにmanagerのシンボリックリンクを追加してあっても、そこにアクセスしょうとすると蹴られる事になる。逆にこの設定の場合、いくらアクセス権限を設定してあっても、シンボリックリンクがしてないとCIFSで共有に出していないのでそのディレクトリは見に行くことができない事になる。

そして最後に、

サービス

の画面で、CIFSをONにする。

これでWindowsのクライアントからアクセスすると、自分のホームディレクトリだけがあり、そこに入ると「my_data」と、それぞれのユーザ権限に応じたディレクトリが見える、と言う形になる。

設定したはずなのに上手く見えない場合は、とりあえず

  • CIFSを一度OFFにしてONにする
  • Windowsの再起動/ログオフ
  • サーバの再起動

等をすると改善することもあるので試すといいかも。

UPSの設定

後はUPSの設定についてもメモをしておく。

サービス->UPS

と入ったUPSの設定画面で設定する。

認識名
識別に使うので適当な名前をつける。
ドライバ
http://www.networkupstools.org/stable-hcl.html にリストされている名前から適切に選ぶ。この場合はapcsmart
ポート
ドロップダウンリストからUPSが接続されているポートを選ぶ。この場合は/dev/cuau0
Auxiliary paramters(ups.conf)
ここで設定できない設定を直接ups.confの書式で記入できる。
説明
分かり易い説明をしておく。
シャットダウンモード
どのような状態になるとシャットダウンするか決める。この場合はUPSがバッテリ駆動になりました、に設定してあるが、これはこの状態になったらシャットダウンタイマが始まると言う意味で即座にシャットダウンされるわけでは無い。
シャットダウンタイマ
上記シャットダウンモードの状態になってから、この秒数経過したらシャットダウンと言う時間。
ステータス更新時にメールを送信
バッテリー駆動になった、等のUPSのステータスが変更された場合にメールを送るかどうかの設定。
メールの宛先
ステータス更新時メールの手先を設定する。
Email Subject
メールのタイトル。たくさん管理しているときはわかりにくいので変えたりするとよいが普通はこのままでもよい。

これを設定したら一度"UPSの"電源を引っこ抜いてテストなどし、正常にシャットダウンされるか確認しておくこと。

最後に。速度等。今後等。

最後にベンチマークを取ってみたところ、ほぼ全ての場合で10MB/Sec以上でており、接続が100Base-Tであることを考えると非常に優秀なアクセス速度が出ている。っていうかGigabitにしたい。

今後はRsyncの設定をしてやりたい。Rsyncは圧縮して送ることができるので、この類の明らかに接続速度がボトルネックになっている場合には有効だと思われるためである。

また、本来は複数台同じ構成のサーバを用意しておいて同期しあうようにするとか考えておいたほうがいいかもしれないので、そっちも追々考える。

*1:実は実際にはそうでも無く、FreeNAS8.0.0正式版がリリースされた後でも、細々とFreeNAS0.7系はアップデートが続けられている。またFreeNAS0.7系のUIのままで、コアをFreeBSD8系や9系にしたものも一部で動いていたりする。

*2:本来はテープドライブなどを接続するために用意されているらしいが、普通のUSBと全く同じでそのまま使用できる

*3:ちなみにFreeNASは起動時にインストール領域から読み込まれたら、その後はユーザが設定をセーブするタイミングでしかインストール領域を書き換えないようになっているらしい。そのためUSBメモリで大量のアクセスが発生してフラッシュメモリの限界を超えると言う事は起きにくいし、システム領域にあるファイルは書き換えても再起動すると消えたり元に戻ったりする。また書き出した設定ファイルをバックアップするだけで簡単にシステム設定のバックアップができるようにもなっている。

CarlyndaCarlynda2016/05/06 10:01There are no words to describe how bodouiacs this is.

FinchFinch2016/05/08 03:19Hi,You are on my Blog right now, you left a comment on it.There are links to the free plan all over my Blog (top, RH side, and inside comments) but here is a link to the .Thank you for wrktTng.iaie Care,S.W. http://zujdceovcz.com [url=http://gftexg.com]gftexg[/url] [link=http://fpiicl.com]fpiicl[/link]

2011年10月15日 (土曜日)

[]FreeNAS 8.0.1 で、ユーザが専用の個人フォルダと共有のフォルダを持てるようにパーミッションを設定する方法。 FreeNAS 8.0.1 で、ユーザが専用の個人フォルダと共有のフォルダを持てるようにパーミッションを設定する方法。 - 高森太郎のノート を含むブックマーク はてなブックマーク - FreeNAS 8.0.1 で、ユーザが専用の個人フォルダと共有のフォルダを持てるようにパーミッションを設定する方法。 - 高森太郎のノート

http://forums.freenas.org/showthread.php?1122-Set-Permission-to-allow-users-to-share-a-common-folder-amp-have-private-personal-folder

を翻訳するつもりで書いてみます。

つもりなので誤訳やらなんやらたくさんあると思いますが突っ込んでください。

最終的にどういう状況を目指しているかというと、

2人のユーザ

  • alpha
  • beta

がそれぞれ、アクセスすると自分だけがアクセスできるネットワークドライブ(この場合ユーザalphaは「alpha」と、ユーザbetaは「beta」という名前)があり、一方さらに「alpha-beta」という共有は2人ともアクセスできるようにしたいと言う設定をFreeNASで行うにはと言う話。

その時、保存する場所の実体は

/mnt/strage/home/

以下としている。

また前提条件として

  • すでにボリュームの作成は終わっており/mnt/以下にきちんとマウントされている
  • サービスではSSHが稼働中

と言う事になっている。

なお、この原文を公表してくださったprotosd氏に感謝申し上げます。

問題があれば削除します。(ってえーごではなんとかけばいいんだろ…)

introduction

個人用のフォルダを持ちたいが、グループ共有もしたい2人以上のユーザがいる場合にこのガイドを始めてください。

注:このガイドは、FreeNAS 8.0.1 Beta 4に基づきます。また、ここのフォルダは例です。'/mmt/strage'は、(SSHを使用してログインした)FreeNASのシステム上のコマンドラインから「df]を行う事により見つけることの出来るボリュームと名前に置き換えてください。(訳注:dfコマンドの結果から)'/mmt/(あなたのボリューム名)'を示す行を探してください。

おそらく私は、いくつかのミスを気付かずにしているはずですので、より良い方法を提案したり、より良い説明が追加出来る場合は、訂正しますので私に知らせてください。私がここで説明していないことに関係があると思われる多くの設定は、サービス -> CIFSの下にあります。(詳細はFreeNASのドキュメント「CIFS_Shares」(リンク先)を参照してください)

(1)保存場所(フォルダ)の作成

各ユーザがファイルを保存する予定のフォルダ、共有するフォルダを作成します。これらはコマンドラインから実行してください。以下のサンプルでは「strage」をあなたのマウントポイントの名前と置き換えてください。

(訳注:SSHでログインして)

mkdir /mnt/storage/home/alpha
mkdir /mnt/storage/home/beta
mkdir /mnt/storage/home/alpha-beta

(2)フォルダ共有用のグループの作成

共有フォルダの共有設定に使うためのユーザーグループを設定します。

(訳注:WebGUIから)

Account(アカウント) -> Groups(グループ) -> Add Gruop(Addグループ)

と進みます。ここでは'Gorup ID'(グループID)と'Group Name'(グループ名)が表示されているはずです。

Gorup ID(グループ名)
任意の重複しない番号を入力します(通常は4桁)(訳注:呼び出すと自動的に重複しない一番小さい番号が入ってくるのでこのままでもよい)
Gorup Name(グループ名)
任意の単語や名前を入力します。(訳注:ここでは'commongrup'と設定しています。以降自分のグループ名に読み替えてください)

[OK]

をクリックします。(訳注すると少し待って画面が戻ります)

(3)ユーザを追加

この例では、alpha と言うユーザと、betaというユーザを追加します。

(訳注:WebGUIから)

Account(アカウント) -> Users(ユーザ) -> Add User(ADDユーザ)

と進みます。(訳注:ここでAdd Userと言う画面が表示されているはずです)

User ID(ユーザID)
重複しない一意の番号を入力します。
User Name(ユーザ名)
ユーザ名を入力します。ここでは例として'alpha'と入力します。
Primary Group
(プライマリグルーアップ):ドロップダウンリストから'nogroup'を探して選択します。
Home Directory(ホームディレクトリ)
あなたがこのユーザに、SSHでコマンドラインにログインさせる、あるいは、Webの管理GUIにログインを許可する/nonexistent とします。

(訳注:ユーザIDとパスワードをWindowsのログインのものを合わせておくと、そのIDでログインされているWidnowsからはパスワードを入力せずに自動的に認証できるようになります)

[OK] をクリックします。

これを繰り返して、もう一つ「beta」と言う別のユーザを、もう一度'Primary Group(プライマリグループ)'を'nogroup'と選択して作ります。

この時、このユーザがSHを使用してコマンドラインにアクセスしたり、Web管理GUIにログインするようにする予定が無ければ、'Disble logins(ログインを無効にする)'のチェックを入れます。

(4)パーミッションを設定し、グループを追加する

ここで(訳中:SSHでログインした)コマンドラインから以下を実行します。

su (ここで管理者のパスワードを入力します)
chown alpha /mnt/storage/home/alpha
chown beta /mnt/storage/home/beta
chgrp commongrp /mnt/storage/home/alpha-beta
chmod 770 /mnt/storage/home/alpha-beta
chmod 700 /mnt/storage/home/alpha
chmod 700 /mnt/storage/home/beta

(最初の2行はオーナーを変更し、3行目は共有ディレクトリのグループを変更しています)

最後の3行は、読み取り/書き込み/実効のアクセス権限を、オーナーだけか、グループができる様にするか、それ以外かを設定しています。

これによってグループ'commongrp'に追加されているユーザーは共通のフォルダ'/mnt/storage/home/alpha-beta' にアクセス出来るようになります。

このグループに追加するには

(WebGuiから)

Account(アカウント) -> Users(ユーザ) -> View All Users(全てのユーザを表示)

と進み'Auxillary Groups(補助グループ'をクリックして、(訳注:左側の一覧の中から)'commongrp'を探して選択し、右側のリストに(訳注:真ん中の>>をを押して)右側のリスト追加してOKを押します。

ユーザ'beta'についてもこれを繰り返します。

これで、ユーザ alpha と beta は、一般グループ 'commongrp'に属するので、両方ともそのフォルダ(訳注:/mnt/storage/home/alpha-beta)内のファイルに何かをする事ができます。

グループ'commongrp' に2人のユーザを加えることで、そのフォルダのオーナーが'commongrp' (コマンド 'chgrp commongrp alpha-beta' )で所有されている場合、2人のユーザにフォルダーへ共通のアクセス権限を与える役割を果たします。これはグループアクセスが許可されているためです。(コマンド chmod 770 alpha-beta)

(5) CIFS/Samba(Windows共有)の設定をする。

あなたがCIFS / sambaのためにこれを設定している場合は、彼らが自分のファイルにアクセスできるように、共通フォルダ「alpha-beta」だけでなく、ステップ1で作った各ユーザのホームフォルダにも、以下の手順を繰り返してください。

(WebGUIの share(共有) -> CIFS Sheres -> Add CIFS sheresにて)

Name(名前)
ネットワーク共有で、Windows エクスプローラでフォルダをブラウズする時に表示される名前です。
Path(パス)
あなたのボリューム上で作成された共有フォルダの場所です。
例: /mnt/storage/alpha-beta , /mnt/storage/home/alpha
Browseable to Network Clients
ネットワーク共有の一覧トに表示されるかどうかを意味します。Directパスを知っているか、あらかじめドライブとして設定されている場合を除き、チェックを入れる必要があります。
Guest Account(ゲストアカウント)
'Allow Guest Access(ゲストアクセス許可)'を設定すると、アカウントがなくてもアクセスできるようになります。

(6)CIFSサービスを有効にする。

(訳注: Services(Service) -> Control Services(サービスの制御)の画面で)CIFSサービスを有効にします。

ここ(訳注:Services(Service) -> CIFS)に関連する2つのアクセス許可設定がります。

  • File Mask(ファイルマスク)
  • Directory Mask(ディレクトリマスク)

これらは両方とも、あなたが新しいファイルやディレクトリ、フォルダを作成する場合に割り当てられるデフォルトのパーミッションを指定するものです。

ファイルについては0600,フォルダーは0700を指定してもよい。

これを空のままにしておくと、デフォルトでそれぞれ0666、0777になります。

訳注というか

最後の手順(5)については、CIFSの設定「ホームディレクトリの有効化」なぞして、「ホームディレクトリ」を「/mnt/strage/home/」とするなどすれば、一つ一つCIFSの共有を設定しなくても便利にできる様な気がする。(これはRCで追加された項目だったと思うのでこの手順では触れられていないのだと思う)

ちょっと試したところ結構上手く出来そう…な気がする。

<後日追記:できました。どこかでまとめます>

というわけでそれらを追補して、時間があれば手順を作ってみます。

ページの一番上へ