メッセージ

2008年08月30日の記事

2008/08/30(土)USBフラッシュメモリの速度測定

2008/08/30 10:46 PC(全般)
USBメモリを買い足したので、既存のものと比較調査。

USBメモリはなんか、メモリチップそのものと基盤の両方に関わってくるのでけっこう速度に差がつくみたい。

元々もってた奴が相当遅いってのもあるし、今回は速度優先で調べて買ったので興味があった次第。

ハギワラシスコム HUD-4GLD-BK 4GB(SLCという噂)

 --------------------------------------------------
CrystalDiskMark 2.1 (C) 2007-2008 hiyohiyo
      Crystal Dew World : http://crystalmark.info/
 --------------------------------------------------

   Sequential Read :   34.790 MB/s
  Sequential Write :   19.647 MB/s
 Random Read 512KB :   34.744 MB/s
Random Write 512KB :    8.754 MB/s
   Random Read 4KB :    8.115 MB/s
  Random Write 4KB :    0.124 MB/s

         Test Size : 100 MB
              Date : 2008/08/28 22:46:23

GENOオリジナル 1GB

 --------------------------------------------------
CrystalDiskMark 2.1 (C) 2007-2008 hiyohiyo
      Crystal Dew World : http://crystalmark.info/
 --------------------------------------------------

   Sequential Read :   10.065 MB/s
  Sequential Write :    2.624 MB/s
 Random Read 512KB :   10.055 MB/s
Random Write 512KB :    1.478 MB/s
   Random Read 4KB :    4.609 MB/s
  Random Write 4KB :    0.028 MB/s

         Test Size : 100 MB
              Date : 2008/08/28 23:47:17
思ってたよりは既存品(1GB)が遅くなかった。ただ、やっぱり不満を感じていたWrite性能は酷いねえ。

とりあえず用途で併用ということで。実際は使う機会は余り多くないのだけど。

ハギワラの4GBの方、最近のUSBメモリには珍しくなんも機能ついてないのね……

2008/08/30(土)USBメモリの暗号化

2008/08/30 12:00 PC(全般)
USBメモリ紛失への伝統的な対策として、ファイル一個一個を暗号化する方法がある。それはまあ手段としては心得てるけども、いちいちファイルごとにやるのが面倒くさい。大事なファイルをフォルダごとあるいは一定領域でまとめて暗号化しておけないだろうか。

そんなニーズでちょっと調査。

できれば、
  • 出先ではインストール不要
  • 暗号化による速度低下が最小限
  • 同一USBメモリ内に、非暗号化領域と暗号化領域を分けて作れる
  • ある程度頑強(データの損失とかに)
を希望したい。

結論だけど、結局多くの場所でいわれてるようにTrueCryptを使う(使える範囲では)のが一番いいみたい。

余りたくさん試したわけではないのだけれど、以下試してみたものを書いてみる。

TrueCrypt

仮想暗号化ドライブを作ってマウントするイメージ。シンプルな回答やね。USBドライブの中に見える領域を作る必要があるが、トラベラーモードを用いれば、出先でのインストールする必要がない。ただ、ドライブをマウントするというシステムの都合上、閲覧するシステムにTrueCryptがインストールされているか、管理者権限を持っていないと使えない。速度はAESなら十分に高速。

folder encryption → folder protection → folder protector

こいつはフォルダ単位で暗号化できるソフト。一見便利に見えたのだけど、どっかの段階以前はいわゆるWindowsのHackで「ファイルの存在が見えないようにしていただけ」らしく、また、どっかの段階以降で暗号化に対応しつつも有償化してるみたい。最初は良さげに見えたのだけど、調べていくうちに萎えてしまい使う前にあきらめた。

UsbDriveSecureTool

コンセプトは同上でフォルダ・ディレクトリ単位で暗号化できる。ただこのソフト発想はいいんだけど、実装が今ひとつ。暗号化したファイルをUSBメモリ上にキープしておいて、使うときになったらフォルダ内のファイルを一斉にUSBメモリの展開ディレクトリに復号っていう形なんだけど、もうこの説明の時点でなんかすでに吐きそうだよね。
  • 容量を倍使う
  • そこまで早くないUSBメモリへの書き込みを抜き差しごとに大量に行う
  • ファイルの復号単位がフォルダごとでそれ以下にならない
で、使ってみたんだけど、やっぱり実態として、
  • 大変重い(暗号化・復号化とも)。大容量は厳しい
  • ファイル単位でいちいち処理(オーバーヘッドを考えよう)
  • 暗号化・復号化途中でこけるとファイルを喪失する
  • 実際こけた。どうもメモリを使いきってこけたようだ(512MB+WinXP)
  • 一部のファイルが壊れた際に、壊れた暗号化ファイルを見つけて消さないとフォルダごと復号化できない状態になる
ちっちゃいファイルを20個とかそういう世界なら全く問題ないんだろうけど、用途を選ぶのは間違いない。80MBで1万ファイルあるHTMLマニュアルとか、200MBあるアーカイブとかそういうのは全くだめ。

試した範囲では暗号化にも復号化にも30分から見なきゃいけない感じだった。

ということで没。

結論

結果TrueCryptに落ち着いた。問題としてはやっぱり気になるのが管理者モードでないと出先で使えない点。管理者モードをもらえてないマシンで、暗号化ファイルを見るというケースの危険度というか怖さを考えれば、問題ない気もするんだけど……

なので、そういう場面に出くわしたら考えることにして、今回はこれで良しとする。

もしファイル単位でかけるならEDとか極論ZIP、RARパスワードでもそこそこ固いよね。

2008/08/30(土)【解決】ファイル共有での遅延問題

2008/08/30 13:13 PC(全般)
以前coLinux+samba > Windows+ファイル共有?で書いた問題がようやく解決した。

この問題はいったい何だったかというと、
・ファイルサーバ側(WinXP SP1)、クライアント側(WinXP SP1)
・クライアント側からNBTでサーバ側のディレクトリにアクセスしたときに発生
・サーバ側のファイル数は600程度で日本語を含む
・ファイルの列挙(要はdir/ls)にかかる時間は4秒程度
・ファイルの列挙に時間がかかるだけで、転送速度そのものが遅くなっているわけではない
・パケットをキャプチャしてみたが余計なパケットは飛んでいないように見える
・dirで確認すると一定の転送量ごとに何かがつっかえている感じ
・サーバー側・クライアント側入れ替えても発生
・クライアント側からLinux+sambaの自宅サーバにアクセスするとこの現象は発生しない
ということだった。

さて、なんでこの問題に再び手をつけようと思ったかというと外部からLinuxサーバを介してWindows機をいじり倒すでsmbfsでlinuxからマウントした際に、この現象が発生しなかったためである。つまりこれはサーバとしてのWindowsの仕様ではなく、なにかしらネットワークやその他の設定が関わっている可能性が高い。あるいは、クライエント側の設定次第で回避する方法があるということだ。

さて、いつも通りパケットキャプチャから始める。使うソフトは定番WireShark(EtheralはWireSharkと名前を変えた)。
前回結論は、
・パケットをキャプチャしてみたが余計なパケットは飛んでいないように見える
だったが何か見落としがあるだろうか。

クライアント側

サーバ側

読み方としては、requestが飛んで、Responseを3分割で返してACKが2回……
確かに余計なパケットは飛んでないように見える。だけどなんだろう、この0.2秒のラグは。これが定期的に発生してるから遅くなっているように見える。ACKの1回目で連結させて、2回目までにラグ? この2回目のACKは余計なものなんじゃないだろうか。

で、調べてみたらそのものずばりな情報が公式にあった。
今回ばかりは私の探し方が悪い。MS悪くない。

リモート ディレクトリの表示はローカル ディレクトリの表示より時間がかかる

この情報整理するとこういうことらしい。
  • 分割応答の際は偶数回目だけACKを送ります
  • もしくは他の接続がくるか0.2秒タイムアウトすると送ります
  • 従ってブロックが奇数個に分割される応答ではブロック応答ごとに0.2mmの遅延が発生します
  • ブロックのデフォルト値は4356byteです
  • TCP/IPのデフォルトMTUは1500byteです
  • ブロックは3つに分割されますので、ブロックごとに0.2mmの遅延が発生する結果こうなります
ワオ、ずばり。

ていうか情報は良いんだけど、これデフォルト値の設定に色々文句があるというか。
いや違うな。この偶数回目だけ返すっていう仕様がなんかだなあ。確かにネットワークの無駄ACKパケットが最大半分に減るけど、それは対処療法的チューニングというか、せめて設定でいじらせてくださいよ。
要約すると、通常、確認応答は、遅延確認応答のタイマ (200 ミリ秒) がタイムアウトしない限り、1 つの接続で受信した TCP セグメントに対して 1 つおきに送信されます。遅延確認応答を構成する、または無効にするレジストリ パラメータはありません。
……。

で、対処方法に挙げられているとおり、
1.[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]に[値の追加]で、
値の名前 : SizReqBuf
データ型 : REG_DWORD
データ : 14596

(データは10 進数)

2.Server サービスを再開(もしくは再起動)
>net stop server
>net start server

で、全く問題が無くなりました! やりい。一応パケットも見てみたけど、想定通りブロックを10個分割で送って5回ACK返しで、すぐに次の通信に推移してるね。

ただね、これ抜本的な解決じゃなくて、多分ジャンボフレームの設定とかいじると、また奇数個分割にマッチしちゃうことがあると思うんだよねえ。ディレクトリのリストが1回で返る場合や、応答の尻尾というか最後でも0.2secつっかえる可能性があるわけだし、なんかクソ仕様な気がしてならないぞ。まあ解決方法が分かったので、その都度対処は出来るけども。

Vistaが対象一覧に含まれていないので、Vistaでは改善したのかしら。

多分Windows Serverを日常的に扱っている人にとっては当たり前の知識(もしくはバッドノウハウ)なんだろうな。
OK キャンセル 確認 その他