FreeNASにディスクを追加する

Microserverで快調に動いているFreeNASにディスクを追加してみました。

目的は万が一空き巣にでも入られてHDDを持ち去られた場合に備えて、FreeNAS8.3.1で追加された暗号化を適用したいということです。全領域を暗号化するには一旦中身をバックアップしないといけないので、まずは外付けディスク以外に内蔵ディスクでもバックアップをとることにしました。

4本ある3.5インチベイのうち、すでに2TB×2でRAID1によるミラーリングで2本、初めからついてきた250GBの作業領域で1本使っていますので、残りの1本に新たに買ってきた2TBのHDDを取り付けて電源ONしました。

暗号化ボリュームの取扱いになれるのを兼ねて、バックアップ領域も暗号化を適用してみます。

1.ボリュームの作成

ボリュームマネージャでバックアップ領域としてボリュームを作成します。

Screenshot-3

ボリューム名に「BACKUP」、メンバディスクは今回追加した ada3(2.0TB) を選択、ファイルシステムはZFSを選択、ZFS選択後に出てくる「Enable full disk encryption」を選択して「ボリュームを追加」を押します。

Screenshot-4

この時点でシェルから今回のディスクにアクセスが可能になります。

/mnt # rsync -av /mnt/DATA/ /mnt/BACKUP/

として、データを丸ごとコピーします。

2.パスフレーズの設定等

※暗号化鍵やパスフレーズ、リカバリキーは厳重に保管する必要があります。

1)パスフレーズの設定

ストレージのレポートから追加したボリュームの右の方の鍵のマーク(鍵だけのマークで下記の画面コピーでは右から5番目のもの)をクリックして、パスフレーズを設定します。

Screenshot-6

2)リカバリ鍵の設定

Screenshot-7

上記アイコンのうち、「+」と「-」のついた右の二つをつかってリカバリ鍵の追加と削除ができます。追加したリカバリ鍵はパスフレーズを忘れてしまった際にパスフレーズの代わりに使うことができます。

3)暗号化鍵のダウンロード

Screenshot-7

上記アイコンのうち、左から2番目の「↓」がついたボタンを使うと、暗号化鍵のコピーをダウンロードできます。

4)暗号化鍵の変更

Screenshot-7

上記アイコンのうち、真ん中のものを使うと、暗号化鍵を再生成することができます。再生成には現状のパスフレーズが必要です。暗号化鍵が漏洩したと思われる場合に暗号化鍵を変更するために使用します。

3.あまりに遅い??

・・・ここまで終わったところで、rsyncの状況を確認したところ、30分で40GB程度の進捗。計算すると、20MB/s程度しか出ていません。これだと1.4TB=1400GBコピーし終わるのは18時間後になってしまいます。AESによる暗号化処理をハードウェアでサポートするAESーNIがCPUで持っていないと非常に遅くなる、とは書いてありましたが、20MB/sではあまりに遅すぎます。
一旦 rsync を中止しして、あらためて暗号化無しでボリュームを作成して転送してみると、20分で46GB程度の進捗ですので、暗号化を行うと半分強くらいまでスループットが落ちてしまうようです。

これだとrsyncが遅いだけかもしれませんので、簡単に速度の比較をしてみることにしました。

まず、FreeNAS上にWindows共有を2つ用意しました。片方は暗号化無しの250GBのHDD上のボリューム、もう片方は暗号化ありの2TBのHDD上のボリュームです。

ここにトータル600MB、3000個のファイル(大きなPDFからデジカメの写真など適当なファイルです)を書き込んでみました。先に暗号化無しの方に書き込むと141秒かかりましたので、4.25MB/sということになります。次に暗号化有りの方に書き込むと120秒で終わってしまいましたので、5.0MB/sということにないました。

次に各種Linuxディストリビューションファイルを3.85GB書き込んでみます。今度は先に暗号化有りの方から書き込んでみたところ108秒かかりましたので35.6MB/sということになります。次に暗号化無しの方に書き込んで見たところ73秒で終わりましたので52.7MB/sということになります。

この結果からすると、大きなファイル中心の書き込みは影響を受けてしまいそうですが、細かいファイル中心の場合にはディスクの性能の方が効いてきそうな感じです。

今日のところはここまでにして、とりあえず rsync でバックアップが取り終わるのを放置して待つことにします。

昨日の戦利品

昨日は帰りに時間があったので秋葉原に寄ってみました。
といっても、たいしたものは買ってないです。

IMG_6350s

まずはSanDiskのMicroSDHC 8GBを2個。RaspberryPi用にSDHCが欲しかったのですが、SDは色々ランク分けがあった上に、高かったのでMicroSDHCにしました。SanDiskにしたのは以前にベンチマークした際にSanDiskは実効で高い性能がでていたからです。やっぱり信頼のSanDiskですね。税別1個800円くらい。

IMG_6351s

こちらも以前ベンチマークで驚異的スピードを出したSanDisk製USB3.0メモリの16GB版。税別2093円。

6349s

最後はTranscendの無線LAN内蔵SDHCカード。スマートフォンからデジカメ内の画像にアクセスできる、というので衝動買いで購入したのですが、うちに帰って調べてみたらコイツを入れようと思っていたHX5Vには対応してないとのこと。税別4562円。

Onion-PiをRaspberry Piにセットアップ(失敗)

Hack a Dayで紹介されていたAdafruitsの記事に従ってOnion-Piをセットアップしてみようと思い試してみました。その際の備忘録です。結論から言うとTorにたどり着く前に失敗です。

ハードウェアは Raspberry Pi モデルBの256MB版とバッファロー WLI-UC-GNMの組み合わせです。RasPiの方は512MB版も持っているので256MB版はそろそろ何か専用機にしてしまおうかな・・・と思っていたところにOnion-Piの記事が出ていたので、試してみようと思った次第です。(別に怪しいことをするわけじゃないんですが・・・・どんな挙動をするのか見てみたかったんです^^;)

WLI-UC-GNMはRT3070チップ搭載の安価な11n対応のUSB無線LANアダプタです。今回は、改めてSDカードを作るところからスタートです。

※赤文字なのは失敗の原因だからです。

“Onion-PiをRaspberry Piにセットアップ(失敗)” の続きを読む

www.findchips.com

チップの検索をしていてたまたま見つけました。
www.findchips.com はどうもいろんな通販サイトのチップの値段を一括検索してくれるようです。
chip1stop、Farnell、element14、AVNET、MOUSER、Digi-Keyなど、名前を聞いたことがあるところが入っています。
「このチップっていくらくらいのものなんだ?」という時には便利かもしれません。

FT312D

Webを見てたら見つけたのですが、FTDI社よりFT312Dというチップが出ています。

いまいち資料をみてもピンとこない部分があるのですが、どうやらAndroid Open Accessoryとして動作するFT232Rみたいなチップのようです。

つまり、このチップを使うと Android 3.2(だったかな?)以降でAndroid機をホストにしてUART/RS232Cの端末エミュレータが簡単に実現できそうで、Google Playにはこのチップを使ったAndroid端末用のターミナルエミュレータ(FTDI AOA HyperTerm)がFTDI社によってアップロードされています。デバッグや状態表示用にUARTを用意することが多いですが、このチップがあればノートPCを持ち込まなくても適当なAndroid端末で代替できてしまう、ということですね。

・・・って、検索すると、専用のチップでなくても普通のFTDI社のチップやProlific社のチップを使ってターミナルエミュレータを実現するアプリ(Slick USB 2 Serial Terminal、無料。高機能&広告無しのPro判もあるようです)もあるようで、それをライブラリ化したSlick USB 2 Serial Libraryというのもあるようです。

話を戻して、FTDIのチップでFT311DというAndroid Open Accessory対応のホストチップもあるようで、こちらはシリアルだけではなく端子で「USB-UART」「USB-GPIO」「USB-4ch PWM」「USB-I2C(Master)」「USB-SPI(Slave)」「USB-SPI(Master)」から機能を選んで使えるチップのようです。簡単なものならデバイス側のプログラミング無しでAOAとして機能する周辺機器を作れる、ということになります。

時間が許せば触ってみたいところですが、難しそうです。

Xperiaを充電するのにD+/D-をショートしないといけない理由

Xperiaを適当なUSB-ACアダプタで充電するためにD+/D-をショートしたアダプタを作成したわけですが、なぜショートしないといけないかがわかりました。

そのためには、なぜ現在の携帯電話機がMicroUSBコネクタを充電用に採用しているか、というところまでさかのぼります。

発端は欧州委員会(欧州連合=EUと考えてもらって差し支えないでしょう)にて、メーカーごとにバラバラの携帯電話充電器が環境への影響を考えると好ましくない、ということで、携帯電話用充電器の共通化を図る活動を始めたところにあります。

最終的には2009年の6月に主要メーカー(このなかに当時のSonyEricssonも入っています)との間で覚書(MOU)が交わされたようで、その結果採用された充電器のプラグ形状がMicroUSBだったわけです。(参考
そして、その普及活動のためのページが「One charger for all」で、その中に技術資料に関するページがあります。
この冒頭に付属書2として、技術要件が記載されていて、その中の7章にACアダプタの検出方法として以下の記述があります

7. Adapter Detection 
As per: USB Battery Charging Specification, Revision 1.1 (BC 1.1), Section 4.1 
Charging Port. EPS shall meet the USB-IF Charging Port Test Requirements for a 
Dedicated Charging Port. Top level requirements listed below:
• The EPS shall short the D+ and D- lines with a resistance not greater 
than 200 ohms. 
• The resistance between the D+ or D- lines of the EPS and either Vbus 
or Gnd shall be greater than 2 MOhms. 
• The capacitance between the D+ or D- lines of the EPS and either 
Vbus or Gnd shall be less than 1nF.

大元はUSBの充電仕様(Revision 1.1)に基づくUSB-IFの充電ポート(端子)試験要件からくるようです。ここで列記されているものの1番目を読むと『EPS(外部電源装置=ACアダプタのこと)はD+とD-を200オーム以下でショートすること』が求められています。(USB-IFとはUSB Implimenters ForumのことでUSBの仕様を決めている会社の集まりです)

Xperiaはこの条件にそってACアダプタを検出しようとしていたので、PCと接続されれば相手はPCであるとして通信と充電をスタートし、D+/D-がショートされていれば相手はACアダプタであるとして充電をスタートし、どちらでもなければ相手不明として何もしなかったわけです。

つまり、規格通りに正しく実装されているわけです。ただ、いかにも日本メーカーっぽい対応、即ちマーケットの実状と合わなくても規格を厳格に満たさなければコンプライアンスやCSRの問題になりかねないとして出荷を認めないところが多い・・・ではありますが。
あ、ただ、SO-04Eの場合はNTT Docomoが販売ですね。おそらく規格適合が要求仕様にあるので、検査で不合格にならないためには、厳密に実装せざるをえないのかもしれません(これまたお役所っぽい対応ですが)。今後、ユーザーからの苦情が多ければDocomoから仕様変更の要求がでて、ソフトウェアのバージョンアップの際にD+/D-がショートされてなくても充電できるようになるかもしれません。

そういえば、手持ちのUSB-ACアダプタは新しいものでも2年くらい前のものかもしれません。ひょっとすると、現在売られているものはほとんど問題ない(対応済み)のでしょうか??

Xperia A用充電アダプタの製作

Xperia A(SO-04E)に機種変したXperiaですが、PCに接続すると充電できるのに適当なUSB-ACアダプタに接続しても充電できないという充電動作の謎の挙動に悩んでいました。しかしながら、ググっていたらその謎がわかりました。

どうやら、Xperiaを充電する場合にはUSBケーブルのD+とD-がショートしていないといけないようなのです。そのためのケーブルも市販されているようです。
(追記:ショートしていないといけない理由についてはこちら。一部では「自社の純正オプションを買わせたいからだ」などという陰謀論みたいなのも見かけますが、本当のところはUSB規格に厳格に従っているからだと思います。規格の方が後から決まってしまったという不運もありますが規格未適合はACアダプタ・充電器の方です。)

が、専用のケーブルを持ち歩くのは面倒ですし、管理も大変です。できれば汎用のUSBケーブルを使いたいものです。

なので、自分でアダプタを作ってみることにしました。

材料は以下の通りです。

DSC_0012s

材料はUSBのAプラグ、Aソケット、4x4x2のユニバーサル基板で、すべて秋月で調達できるものばかりです。後で、LEDと200Ωのチップ抵抗も追加しています。

こんな感じで組み立てました。もしも真似して作る場合には、コネクタの仕様に十分注意してください。
世の中には逆順に端子が配置される=USBの表裏が逆になるコネクタがあるかもしれません。そのようなコネクタを使って写真の通りに組み立てると+5VとGNDが逆になってしまいますので、おそらくスマートフォンが壊れてしまいます。

DSC_0014s

DSC_0013s

これで動作テストしたところ問題ありませんでしたが、せっかくなので通電中か否かを表示するLEDを追加して、強度アップのためエポキシ樹脂で固めました。

実際に使う場合はこんな感じになります。

DSC_0020s

DSC_0016s

実際に通電させると、青色LEDが点灯します。

DSC_0018s

これで特殊なケーブルを使わなくてもXperia Aが充電できるようになりました。
(写真に写っているモバイルバッテリーは何もしなくてもXperiaに充電できますが、撮影の都合上便利なので写真では利用しています)

改めて最小Arduinoを作ってみた

SPIを2台で動かしてみたいということがあり、手っ取り早いのはArduinoということで、最小構成のArduinoを2台仕立てる準備をしています。今回のホストの環境は lubuntu13.04で、Arduino IDEは1.0.5です。

昔の方法に沿って試してみます。マイコンボードは Arduino Pro or Pro Mini(3.3V,8MHz) w/ATmega328 を選択し、書き込み装置はAVR ISP mkII を選択して、ブートローダの書き込み操作をします。・・・が、一般ユーザーではブートローダの書き込みがうまくいかないようです。groupsコマンドで自分(ユーザー)がdialoutグループに所属しているか確認し、所属していなかったので追加、さらに、/etc/udev/rules.d/40-permissionsに以下の記述を実施。

SUBSYSTEM!="usb_device", ACTION!="add", GOTO="avrisp_end"

# Atmel Corp. JTAG ICE mkII
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2103", MODE="660", GROUP="dialout"
# Atmel Corp. AVRISP mkII
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2104", MODE="660", GROUP="dialout"
# Atmel Corp. Dragon
ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2107", MODE="660", GROUP="dialout"

LABEL="avrisp_end"

とした後、

$ sudo restart udev

としてもダメ。再起動してもダメ。面倒なので、ブートローダの書き込みの時だけarduinoの起動でsudoしてしまいました。

<おまけ>ブートローダを書き込むと、19ピンに接続したLEDが点滅するようです。

その後、セラロック無しで動作させるため、ヒューズビットを書き換えます。
具体的には「# sudo avrdude -c avrisp2 -p m328p -P usb -t」としてターミナルモードを起動し、「>>> w lfuse 0 0xe2」としてヒューズビットを書き込みます。書き込み後はセラロック無しで電源ONしなおしてもLEDは点滅しました。

DSC_0006

Xperiaを機種変更しました

いい加減、Xperia Acro(SO-02C)の内部ストレージの少なさとMicroSDに追い出しているAPLのアクセスの遅さ(たぶん)からくるノロノロに耐えられなくて、ついに機種変更してしまいました。
で、機種変先は Xperia A(SO-04E)。

いざ機種変すると、結構面倒。

  • 電話帳
    赤外線通信で全件送信→全件受信しました。
    送受信にあたってのパスワード設定に事前に初期設定がいるみたいで、ちょっと手間取りました。
  • SPモードメールの内容
    以前と同じ方法で既存のメールのうち、保管しておきたいものはGmailに移行しました。
  • 写真
    USBで接続して、丸ごとFreeNASサーバにアップロード。
  • 動画・音楽
    そもそも入れてない
  • アプリケーション
    基本的に無料のものばかりなので、再インストール。
    GmailはDocomoのSPモードメールのセットアップ後に移行。(2段階承認のため)

・・・・・・・・って、どうも、ドコモバックアップアプリというのを使うと、電話帳、SPモードメール、メディアファイル、ブックマーク、通話履歴などなどがMicroSDにバックアップできたらしい・・・。もう終わったのでどうでもいいけど・・・。

で、最後に困ったのが、充電。
これまでは適当なUSB-ACアダプタにUSB A-microBの適当なケーブルで接続すれば充電できたのですが、Xperia Aは充電できません。壊れているのかと思って焦ってしまったのですが、同じケーブルでPCに接続すると充電できたりします。まさかとは思うのですが、ホストと通信ができないと充電開始しない仕様なのか? ・・・が、モバイル充電器(電池内蔵しているタイプで、ELECOMのDE-U01L-4710というあきばお~で買った奴)からは充電できたりするので謎です・・・。
あと、防水のためにMicroBのところにカバーがついていて鬱陶しいです。気休め防水のためだったらそんなもんいらねー、と思うのは自分だけでしょうか・・・。

 

FreeNASを8.3.0から8.3.1-RELEASE-p2にアップデート

なんとなく、FreeNASを以前アップグレードした8.3.0から最新の8.3.1-RELEASE-p2にアップグレードしてみました。
・・・といっても、前回のような面倒な手順は必要ありません。

  1. まず、お約束のバックアップは当然取ります。
  2. www.freenas.orgにアクセスして、ダウンロードページで「GUI Upgrade 64-bit」をクリックします。
  3. 29c6・・・で始まるSHA256のHashが表示され、その下にダウンロードボタンが表示されるので、ダウンロードをポチッとクリックして、しばらく待ちます。ポチッとした直後にはFreeNASとは無関係な「Download」とかかれた広告バナーが待ち構えていますので、何も押さずに待ちます。(何とかならないんですかね?この地雷バナー・・・。多分マルウェア満載なんじゃないかと思うのですが・・・)
    ※8.0.xからのアップグレードのためのリンクは少し下にあります。今回は8.3.0からのアップグレードです。
  4. しばらく待つと「FREENAS-8.3.1-RELEASE-p2-x64.GUI_Upgrade.txz」という拡張子がtxzのファイルをどこに保存するか聞いてくるので、適当なローカルの場所を指定して保存します。
  5. FreeNASにWebGUIでログインして、「システム」→「設定」→「高度な設定」と進んでいくと、下の方に「ファームウェア更新」のボタンがあるので、ポチッと押します。
  6. ファームウェアファイルを一時保存する場所を聞かれるので、適当に場所を選択して、「更新を適用」をポチッと押します。
  7. 「New image to be installed」でファイルを選択するよう指示されますので、4で保管したtxzの拡張子のファイルを指定し、その下の「イメージのSHA256ハッシュ」には3の29c6・・・d84bのHASHの値をコピペして、「更新を適用」をクリックします。
  8. しばらく(数分くらい?)待つと、「System – Rebooting」に表示が変わります。
    コンソールにはブートの画面が表示されるようです。裏では2回リブートがかかるようです。
    かなり時間がかかるので、コンソールの画面でアップグレードの過程を確認する方がいいと思います。(コンソールでみていても、途中で長く止まることがあるので、気長に待つ必要があります。)
  9. 10分くらい放置後、ブラウザをリロードすると、再度WebGUIでのログインを促されますので、ログインすると、System Informationが表示され、バージョンアップしていることが確認できます。