Quantcast
Channel: mura日記 (halfrack)
Viewing all 50 articles
Browse latest View live

雑な LVS/TUN の解説図

$
0
0

LVS で IPIP と DR(DSR) を用いる場合のパケット解釈フローについて、雑に図を起こしたので Web へ放流しておきます。

リンク先にオリジナルサイズもあります。

ホワイトボードを写真に撮ったレベルでツッコミどころもありますが、新人に聞かれて説明するときのお供に便利かもしれません。

f:id:halfrack:20160202204212p:image

keepalived + ipvs + tunl0 + lo0 の構成は文章で説明するにはややこしすぎるので、解説するためにこういう図を何度もホワイトボードに書いた覚えがあります。


Debian で NIC offload を無効にする方法

$
0
0

rc.local に書くみたいな雑な手法ではない王道はなにか?

結論から言うと interfaces に offload-lro off とか書ける。

# grep -A3 eth2 /etc/network/interfaces
auto eth2
iface eth2 inet manual
  offload-lro off
  bond-master bond0

#

Debian のお作法として、 rc まわりの情報は /usr/share/doc/${該当機能を操作するコマンド名}/README.Debian に置いておくものらしい。

例えば /usr/share/doc/ifenslave/README.Debian.gz には、 bonding をやりたいとき interfaces にどう書けば良いかドキュメンテーションされている。

検証環境は Debian 8 Jessie です。他ディストロから来て *NIX お作法の範囲で探すんでは気づきようがなかったので、せめてポインタぐらいは man interfaces に書いといてくれとは思いました。

なお今回は、別のアプローチでググっている時に、たまたま下記が引っかかったからヒントになって発見できた。

ethtool for Debian
------------------

Most settings that can be controlled through ethtool can be specified
in /etc/network/interfaces.  They will then be applied to interfaces
that are brought up automatically at boot time or using the 'ifup'
command.  The following settings are supported:

Link mode (--change):
link-speed <speed>
link-duplex half|full

Ethernet settings (--change):
ethernet-autoneg on|off|<mask>
ethernet-port <port>
ethernet-wol <mode> [<pass-key>]

Driver control (--change):
driver-message-level <level>

Ethernet flow control (--pause):
ethernet-pause-rx on|off
ethernet-pause-tx on|off
ethernet-pause-autoneg on|off

Protocol offload (--offload):
offload-rx on|off
offload-tx on|off
offload-sg on|off
offload-tso on|off
offload-ufo on|off
offload-gso on|off
offload-lro on|off
(etc.)

Hardware tuning (--coalesce, --ring):
hardware-irq-coalesce-adaptive-rx on|off
hardware-irq-coalesce-adaptive-tx on|off
hardware-irq-coalesce-rx-usecs <n>
hardware-irq-coalesce-rx-frames <n>
(etc.)
hardware-dma-ring-rx <size>
hardware-dma-ring-rx-mini <size>
hardware-dma-ring-rx-jumbo <size>
hardware-dma-ring-tx <size>

Example:

iface eth0 inet dhcp
link-speed 100
link-duplex full
ethernet-autoneg off
ethernet-wol s 46:65:62:69:61:6e

 -- Ben Hutchings <ben@decadent.org.uk>, Sat,  4 Jun 2011 20:37:08 +0100
http://metadata.ftp-master.debian.org/changelogs/main/e/ethtool/stable_README.Debian

些細な内容だけど、ググってロクにドキュメント出てこなかったのでここに記す。

Amazon Dash 2nd Generation を分解

$
0
0

Amazon Dash ボタンが日本上陸! TELEC 201-160049

amazon.com を見たところ AWS IoT Button 2nd Generation なるものが。これはきっと日本で販売されているボタンは TELEC 通した 2nd Gen に違いない!

ってことで買って分解してみました。

f:id:halfrack:20161206115452j:image


もろもろシールを剥がしてみましたが、 1st Gen にはあったネジが見当たらず。

f:id:halfrack:20161206120302j:image

超音波溶着と判断して強引に剥がします。

f:id:halfrack:20161206120642j:image

f:id:halfrack:20161206120739j:image

パカッ。

f:id:halfrack:20161206120856j:image

2nd Gen では電池ボックスになっています。

また、付属の電池がリチウムからアルカリ電池へ変更になっています。

f:id:halfrack:20161206121002j:image

続いてネジ(T5)を外して基板を外します。

f:id:halfrack:20161206121044j:image

パカッ。

f:id:halfrack:20161206121320j:image

以上で分解は終了です。丹念に眺めていきましょう。

バッテリー面は 25Q032 13E40 というシリアル接続フラッシュメモリがあります。

もいっこのチップは不明。電源用と思われるコイルとマイクが気になります。マイクはなんで付いてるんでしょう?

J2 というコネクタが付きそうなランドも気になります。

f:id:halfrack:20161206121652j:image

裏面はこのようになっています。

目立つ部品は MCU (後述)と WiFi コンパニオンチップです。 ATWINC1500B - "single chip IEEE802.11 b/g/n Radio/Baseband/MAC network controller optimized for low-power mobile applications" でした。

中央の黒いチップにはマーキングがあるのですが、マイクロスコープの手持ちがなく裸眼では読み取り不能でした。 WL-CSP のチップが 4つほどあるのですがこちらも判別不能です。

また、同軸コネクタもありますね。

f:id:halfrack:20161206121640j:image

大きな黒いパッケージはスポンジが両面テープでついているだけなので剥がせます。

ATSAMG55J19 SMART SAM G55 - "a series of Flash microcontrollers based on the high-performance 32-bit ARM Cortex-M4 RISC processor with FPU (Floating Point Unit)." が出てきました。これが主役でしょう。

f:id:halfrack:20161206121828j:image

以上、楽しいボタングラビアでございました。リチウム電池からアルカリ電池に変わったのに 2000回持つようになったのが面白いところですかね?

ケース構造だけでなく、基板構成もだいぶ変わっているようです。 WiFi コンパニオンのシールドがなくなったのも目立つところだけど、 STMicroelectronics, Broadcom の組み合わせから両方とも Atmel になったってのも興味深い。

カメラ忘れてスマフォにてお粗末様でした。

YAMAHA ルータと Splatoon 2

$
0
0

結論から言うと、ヤマハルータの Rev.14.01.09 以降ではデフォルトだと Splatoon 2 が動かないが、 nat descriptor backward-compatibility 1 を叩くと動くようになる。

背景

RTX1210 で動いている WiFi に Nintendo Switch を繋いで遊ぼうとしたら、まったく動かない。マッチを始めるとエラーコード 2618-0513 で「相手のゲーム機と通信できませんでした」と表示され失敗するし、 10回に 1回ぐらいはマッチングが始まるが 8人揃わず制限時間を迎える。(制限時間がちょくちょく伸びるので対戦者を追加しようとして失敗してる様子)

調査

マッチングのときに出る問題であることと、NAPT箱が異なる別のネットワークでは正常に動くので、まあ NAPT越え(NAT traversal)まわりやろと当たりをつけた。

Switch の接続テストでは「NATタイプ B」と表示される。

比較的インターネット経由での対戦・協力プレイが行いやすい環境です。

https://support.nintendo.co.jp/app/answers/detail/a_id/34273?a_id=34278

大雑把に RFC 3489 の分類ではどれなの?ということで、What is My IP & NAT - STUNner - Google Play の Android アプリを動かしてみたところ、 "Network Type: Symmetric cone" とのこと。

Symmetric NAT は UDP hole punching が効かないのでダメそう。

Symmetric NAT になる実装はあんまり多くなく*1、知ってる範囲だと OpenBSD pf(4) のデフォルト(static-port オプション無し)ぐらいなので、不思議に思って RTX のドキュメントを探したところ、そのものずばりのものがあった。*2

NAT動作タイプの違いについて

曰く、ポートセービングIPマスカレードなる機能が Rev.14.01.08 で追加され、これは Symmetric NAT 相当の振る舞いでありデフォルトで有効となっている。

対策

マニュアルどおり nat descriptor backward-compatibility 1 を叩く。

# nat descriptor backward-compatibility 1
NAT backward-compatibility setting has been configured. Please save config and
restart router to enable new setting.
# save
Saving ... CONFIG0 Done .
# restart

STUNner を動かしたところ "Network Type: Port restricted cone" に変化し、 Splatoon 2 も速やかにマッチが終わり問題なく遊べるようになった。やったー!!

未解決の疑問点

2つある。

まず、 Symmetric NAT にもかからず、なんで "NATタイプ B" になるんだろうか? Nintendo Switch の NATタイプ判定に考慮漏れがありそうだが、そもそも rfc3489 が廃止になっちゃうぐらい NAT traversal は複雑奇っ怪なので、しょうがない気はする。

次に、 NAT動作タイプの違いについて によると Rev.14.01 系以降でも TCP 以外のすべてのプロトコルでは従来の(ポートセービングIPマスカレードではない) NAPT になるとあり、 Splatoon 2 は UDP なので、本来はデフォルトのまま動くはずである。が、動かなかった。

もっと言うと nat descriptor backward-compatibility を変更しても変化が無いはずだが、改善した。これはなぜか?実は UDP の挙動も変わってしまっている?

Nintendo Switch の挙動

Nintendo Switch は UPnP に対応していない模様。 UDP 1900 をまったく投げない。 CGN で二重 NAPT になっていることが多いからやめちゃったのだろうか?

また、 Splatoon 2 は UDP フルメッシュで通信し、マッチ中に UDP が届くか相互にパケットを投げて確認しています。サーバが選出されるようなアーキテクチャではないようで、 8台がすべて相互に通信できる必要があります。

Symmetric NAT

今回はトラブルに遭遇してしまったけれども、ポートセービングIPマスカレード自体は良い機能だと思う。 * cone NAT だと振る舞い上、変換後の送信元ポート数(16bit)でセッション数が制限されてしまうので、グローバル IPアドレスあたりの集約率に限界がある。

しかし、 Symmetric NAT なら宛先 IPアドレスが異なれば送信元ポートを共有できるので大幅に集約率を向上できる。例えば Webクローラーを含む数千台のサーバを 1 IPアドレスに収容するといった芸当も可能で、事例も知っている。

しかし、 CGN で導入すると今回のように NAT traversal でクレームが上がりそうだし、 abuse 問い合わせで src port だけでなく dest ip まで必要になるので、(Webサービスなどで)サーバ側のグローバル IPアドレスを含むログを取得しているのかといった問題がでてくるので、ちょっと難しそうであった。

RTX1210 の用途を考えると良い機能だな、と思います。

結論

NAPT むづかしい

STUNner

STUNner はこんな感じで大変便利なツールでした。

RTX1210 ポートセービングIPマスカレード

f:id:halfrack:20170726154254p:image

RTX1210 nat descriptor backward-compatibility 1

f:id:halfrack:20170726154249p:image

*1:正確にはセッション数が数千程度という条件があり、例えば iptables MASQUERADE はセッション数 2^16 以上いけるのでポートが足りなくなると Symmetric NAT になるはず。

*2:話は逸れるけど、こういうの調べる度に YAMAHA はドキュメント良くていいなぁと思います。

Amazonベーシックの激安 Type-C Ethernet Adapter

$
0
0

345円だったので迅速にポチり速やかに手元の Linux 端末に刺し dmesg を採取しました。

Realtek RTL8153 である模様です。

[715761.336406] usb 2-3: new SuperSpeed USB device number 2 using xhci_hcd
[715761.357259] usb 2-3: New USB device found, idVendor=0bda, idProduct=8153
[715761.357264] usb 2-3: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[715761.357267] usb 2-3: Product: USB 10/100/1000 LAN
[715761.357269] usb 2-3: Manufacturer: Realtek
[715761.357271] usb 2-3: SerialNumber: xxxxxx000000
[715761.400477] usbcore: registered new interface driver r8152
[715761.406816] usbcore: registered new interface driver cdc_ether
[715761.524592] usb 2-3: reset SuperSpeed USB device number 2 using xhci_hcd
[715761.601809] r8152 2-3:1.0 eth0: v1.08.8
[715761.630520] r8152 2-3:1.0 enx3c18a0xxxxxx: renamed from eth0
[715761.670409] IPv6: ADDRCONF(NETDEV_UP): enx3c18a0xxxxxx: link is not ready
[715761.698715] IPv6: ADDRCONF(NETDEV_UP): enx3c18a0xxxxxx: link is not ready

USB Type-C が刺さる端末をお使いであれば、 345円なら買いましょう。

追記

Nintendo Switch で認識し無さそうでございました

川崎駅

$
0
0

久しぶりに川崎に来たら、アゼリア入り口がたいへん綺麗になっていてびっくり仰天ですよ。

でも変わらないところもある。

梶が谷駅

$
0
0

始発まで酒飲んだ帰り道、朝焼けの梶が谷駅

夜景は、人間の目玉よりデジカメの方が、綺麗に写せると思う。
しっかし、いざ写真を撮ってみると、もっとダイナミックレンジ欲しいとか RAW 使いたいとか色々欲求が出てくるなぁ。だがお手軽さも諦めたくないでござる。

$
0
0

同一 URL でスマートフォンと PC を出し分けたい vs (キャッシュ出来なくなるので URL 分けるべき or 同一コンテンツで表示変わるようすべき)
みたいな議論を聞いていると、 HTTP レイヤでのキャッシュに用いる key を見直すべき時期に来ているのかなぁ、と思ったりする。


NEX-5R で遊ぶ

$
0
0

お手軽コンデジよりあきらかにムズい。デジカメの性能を試そうなので構図が酷いのはご愛嬌。
まずオートフォーカス時々効かなくて、手ブレよりピンボケ写真を量産したので、 DMF か MF で合わせた方が良い。

気合があればシャッタースピード 1.3秒でもブレないので ISO400 ぐらいは使える。むしろピント合わない。

上の ISO400 と比較すると ISO3200 やっぱノイジー。空とか。

高感度撮影するなら連射合成したほうがノイズは少ない。

しかし、下の ISO400 と連射合成で、遠景部分を見てると、彩度が落ちるのか、やっぱり連射合成しないほうが好みな写り方をする。フォトライフの画像縮小がちょっと微妙なので拡大して見た方が良い。




ちなみに、各写真とも連射合成の場合ホワイトバランスが正しい感じになっているのは、多分カメラが勝手に AWB ではなく適当なホワイトバランスに固定しているから。ナトリウムランプなのでオレンジ色に写るのが正しいので、 AWB から蛍光灯あたりに固定するのが良さげ。
なんというか、一番気に入った子の写真が手持ち夜景モードである辺り、素直にカメラに任せた方が一番綺麗なのではないかという疑惑はある。今度は手持ちじゃない方の夜景モードであるとか、レタッチ前提の撮り方も試してみよう。

ホワイトバランスを蛍光灯に、 ISO400 ぐらいで撮影、 DMF でピント合わせる、ぐらいが得られた知見だった。
それなりにちゃんとしたカメラを使うと、 NIKON P300 のお手軽っぷりを再認識出来る…。テキトーに撮ってもソコソコ綺麗に撮れる。

SSD に関する雑感

$
0
0
  • SSDは block erase やら wear levelingで作業領域としての DRAMに大きく頼らざるを得ない。
  • 電源断により DRAMの dirty な領域が消失することを考慮しながらメタデータの破損を防ごうとすると、 DRAM -> NAND の書き込み順序に強い制約が生じ、高速化に支障を来す。(ファイルシステムにおけるそれと同じように)
  • DRAM with BBU を仮定すると、ファームウェアが書き込みの順序をイジる自由度が大幅に増す。
  • HDD と違い、 NAND は短時間ならキャパシタの電力で書き込みを行うことが出来るので、 SSD内部での DRAM with BBU が容易であり広く普及するだろう。
    • コンデンサ二次電池と違い、はめ殺しに出来る程度に寿命が長い。
    • 定期的な交換を必要とせずメンテナンスが楽なので、コンシューマ向けにも普及するだろう。
  • 安価な SSDであっても、コントローラは数十チャンネルの NAND インターフェイスを持ち、それぞれを並列に動作させることが出来る。
  • ケミカルコンデンサも電気二重層コンデンサも経年劣化で容量が減るので、バックアップされてるはずだったが実は容量が足りなくて消えた!という事故が今後 10年ぐらいで起きるだろう。
    • しかし RAIDカードの BBU で同様の事が起きるリスクと大して変わらないと思っている。
    • 将来的に SSDにも「定期的にバックアップキャパシタの容量をチェックする」みたいな機能が入るだろう。
  • コンシューマ向けのくだりで定期的な交換は不要と言っているが、全体の製品寿命に対しては十分な寿命があり問題ない、と考えている。(マザーボード上のキャパシタ同様)
  • 電源断についてあーだこーだ書いたが、私が欲しいのは「電源断でも壊れない堅牢なストレージ」ではなく、「電源断を恐れずに高度に性能を追求したストレージ」である。
    • もちろん電源断でも壊れない方が良いです。
  • 電源断まで厳密に保証したミッションクリティカルなストレージを選んで使うより、ノード冗長を取る方が低コストである。
    • ノード冗長の副次的な作用としてオペミスに強くなるというのも、個人的に重視している。
    • 他にも色々ありますが、大体こういう思想です。 http://nippondanji.blogspot.jp/2009/03/ssd.html
  • 商用 UNIXでカチカチに固めた環境じゃないし、一度電源断したホストの DB を使いつづけたりしないでしょ。
  • Linuxなんてファイルシステム・ブロックデバイスレベルでテキトーなので、 kernel panic したら一巻の終わり。

つらつら書きましたが、上のようなことを考えながら日々 SSDを使っています。
私は SSDを作る人ではないし、最新の Linux kernel について深い知見があるわけではないので、 Linux kernel hacker からすれば最近の kernel なら問題ないという意見が出てくるでしょうし、 NAND ストレージベンダーからすればツッコミどころ満載かと思いますが、あくまでこういう考えの奴も居るということで。

Comet 的な HTTP トラフィックのベンチマークを weighttp でやってみる

$
0
0

HTTP コネクションは張ったままだけど大して通信しないという、いわゆる Comet のような負荷をベンチマークするのは意外と難しい。
以下の patch を当てた weighttp でベンチマークすると良い感じだった。 weighttp はいわゆるベンチマークツールだが、軽量かつイベントドリブンなのでコネクション数について良くスケールする。

** worker.c.orig       2013-04-01 16:59:12.000000000 +0900
--- worker.c    2013-04-01 17:06:02.000000000 +0900****************** 17,22 ****--- 17,23 ----
        worker = W_MALLOC(Worker, 1);
        worker->id = id;
        worker->loop = ev_loop_new(0);
+       ev_set_io_collect_interval(worker->loop, 3);
        ev_ref(worker->loop);
        worker->config = config;
        worker->num_clients = num_clients;

上記パッチを当てると、トラフィックは 3秒に 1回ぐらいしか流れなくなりぬるくなる。コネクション数以外の部分では当たらなくなるので好都合。
こいつを使ってクライアント 10台ぐらいで nginx をイジメると簡単に C10K を突破する。ソースポートの数とか色々当たってくるので、(頑張ればもっと張れるのは知っているが)クライアント 1台あたり数千〜数万コネクションに抑えた方が面倒は無い。

参考

weighttp 自体は以下を見て知ったので、詳細は直接見た方が早い。 ulimit まわりの話もあります。
http://www.iij.ad.jp/company/development/tech/activities/weighttp/

サーバ用途でコンシューマ SSD へ調子に乗って書き込みすぎると壊れるという話

$
0
0

Crucial M500 の write endurance が 75TB しか無いというのが話題になっていて、同じく 75TB である m4 をわざと虐待していたホストはどうなったのか気になって調べて見たところ、面白い結果が観測されたという話。

石橋を叩いて壊し障害時の挙動を見るべく「自社全サービスのアクセスログを受け止める syslog サーバ」という、どう見ても書き込み中心で SSDにやさしくないホストをあえて動かしていた。具体的には下記のようなノリのホストである。 iostat の一行目なので uptime数百日における平均値であることに注意。

[root@touge ~]# iostat -k -x -d sda | sed -n '3,4p'
Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda              27.36   414.31 47.72 82.46  2902.21  3431.04    97.30     0.39    2.96   0.62   8.04
[root@touge ~]# 

平均で 3431KB/s 出ている。上記は HV 上での値なので、 VMの block device layer における write merge 前では write 900IOPS ぐらい。
SMART Attribute を確認して見たところ、 14ヵ月でだいぶ磨り減ったことが観測された。*1 202 Perc_Rated_Life_Used は保証期間に関する値で、書き込みまくって VALUEが 0 になるとメーカ保証の範囲外となる。 Percは Percentage の略で、 RAW VALUEは「何パーセント使ったか」であろう。

[root@touge smartmontools-6.1]# ./smartctl -i /dev/sda | egrep '(Model|Firm|Capa)'
Model Family:     Crucial/Micron RealSSD m4/C400
Device Model:     M4-CT512M4SSD2
Firmware Version: 0309
User Capacity:    512,110,190,592 bytes [512 GB]
[root@touge smartmontools-6.1]# ./smartctl -A /dev/sda | egrep '^(ID|  5|  9|173|195|202)'
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   100   100   001    Old_age   Always       -       13748
173 Wear_Leveling_Count     0x0033   033   033   010    Pre-fail  Always       -       2018
195 Hardware_ECC_Recovered  0x003a   100   100   001    Old_age   Always       -       106
202 Perc_Rated_Life_Used    0x0018   034   034   001    Old_age   Offline      -       66
[root@touge smartmontools-6.1]#

m4 の保証値である 75 TB を 3431KB/s で焼きつづければ単純計算で 271日なので、そら当たり前だろうという話ではあり、設計段階から分かっててわざとやった結果である。むしろ 3.4MB/s で 426日ほど*2焼きつづけたのにまだ 1/3 残ってることが驚きである。 2.35倍ぐらい持っている。
173 Wear_Leveling_Count の RAW VALUEも興味深い。 25nm 世代 NAND の書き換え回数が 3000回なので、これがページの平均書き換え回数だと色々しっくりくる。
14ヵ月で 1/3 まで減っているので、単純計算すると上記の使い方でこいつは 2年弱しか持たない。実環境の最悪値かつ保証が切れるだけだが「容量が手狭になるまで持てばいい!」で済ますには微妙なラインである。

結論

最近の*3コンシューマ向け SSDは書き込みまくる用途だと壊れうる。
常日頃から「SSDは壊れない」とか言っていますが、これは「お前が言ってる書き込み量はバーストの値*4でライフサイクル平均でそんな書いてる訳じゃないだろ」ないしは「DB 用途でヘビーに使っていても実は書き込みは*5そんなに多くない」という側面が強く*6、裏を返せばライフサイクル平均で書き込み量が重くのしかかる用途だと寿命を気にする必要がある。
気にする必要がある、なので、たとえば「同じぐらいの平均書き込み量で 10台ストライプするから 4000日=11年ぐらい保証の範囲で使えるので大丈夫だろう」なり、「書き込み 3倍あって同じく単体で使う予定だから 4ヵ月でいつ壊れてもおかしくない」という話ではある。
コンシューマ向け SSDも登場から年月が経ち、各ベンダーとも読みが正確になってきたのかマージンが削られる傾向にある。*7エンタープライズ向け SSDを選択肢に入れるなど、きちんと書き込み量のキャパシティプランニングを行う必要がある時期に達しつつあるのではないだろうか。

備考

以下は、生の smartctl 出力と備考。

  • TRIM を使っていないので消耗が激しくなっている可能性がある
  • VM側のアライメントは合わせてある(はず)
  • 容量の 80% ぐらいをファイルで埋めている
  • これは極端な例なので他の多数の m4 は 8割 9割残っている
  • 202 Perc_Rated_Life_Used の RAW VALUEは 100% を越えて動く模様
  • この手の値をグラフにしようってのいい加減手をつけろ >self
  • サーバにおいて「ピーク MB/s」みたいな微分やピークには敏感だが「積算 MB」のような単位は未経験で勘が鈍いのではないか
    • 積算で効くのは稼働時間ぐらいしか思いつかないが時間の流れる速さは大体一定である
[root@touge smartmontools-6.1]# ./smartctl -iA /dev/sda
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-2.6.18-238.19.1.el5xen] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron RealSSD m4/C400
Device Model:     M4-CT512M4SSD2
Serial Number:    00000000111403056xxx
LU WWN Device Id: 5 00a075 103056783
Firmware Version: 0309
User Capacity:    512,110,190,592 bytes [512 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2, ATA8-ACS T13/1699-D revision 6
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Tue Apr 16 19:54:36 2013 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   100   050    Pre-fail  Always       -       0
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   100   100   001    Old_age   Always       -       13747
 12 Power_Cycle_Count       0x0032   100   100   001    Old_age   Always       -       7
170 Grown_Failing_Block_Ct  0x0033   100   100   010    Pre-fail  Always       -       0
171 Program_Fail_Count      0x0032   100   100   001    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   001    Old_age   Always       -       0
173 Wear_Leveling_Count     0x0033   033   033   010    Pre-fail  Always       -       2018
174 Unexpect_Power_Loss_Ct  0x0032   100   100   001    Old_age   Always       -       1
181 Non4k_Aligned_Access    0x0022   100   100   001    Old_age   Always       -       65535 44819 28690
183 SATA_Iface_Downshift    0x0032   100   100   001    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   050    Pre-fail  Always       -       0
187 Reported_Uncorrect      0x0032   100   100   001    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   001    Old_age   Always       -       0
189 Factory_Bad_Block_Ct    0x000e   100   100   001    Old_age   Always       -       323
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       0
195 Hardware_ECC_Recovered  0x003a   100   100   001    Old_age   Always       -       106
196 Reallocated_Event_Count 0x0032   100   100   001    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   001    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   001    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   100   100   001    Old_age   Always       -       0
202 Perc_Rated_Life_Used    0x0018   034   034   001    Old_age   Offline      -       66
206 Write_Error_Rate        0x000e   100   100   001    Old_age   Always       -       0

[root@touge smartmontools-6.1]#

m4 の話ばっかりしてるけど、 Intel, Samsungも同等以上にバンバン使っているので、そいつらも取り上げていきたい。

*1:SMART Database が最新じゃないと unknown ばかりで読みづらいので最新版の smartmontools を使っている。

*2:Power On Hours と合わないが電源入れてから直ぐに使ってる訳ではない

*3:具体的には 25nm 世代以降のものを指している

*4:サーバ捨てるまでの4年間を考えれば日単位もバーストである

*5:Web アプリケーションは九割方参照である則

*6:メーカが安全側へ盛大に倒してるのでマージンを美味しくしゃぶりましょうという意図ももちろんある

*7:d:id:halfrack:20130417:1366197019

昔の SSD はタフだった

$
0
0

d:id:halfrack:20130417:1366193468を見た同僚が教えてくれた X25-M G2 のホストについて、古い SSDはマージンたっぷりだったという話。

このホストは DB サーバだが、メッセージングサービス的なものに使われているので、更新ヘビーで辛い DB になる。

[root@nantokagoe smartmontools-6.1]# uptime
 19:29:02 up 1028 days,  2:49,  2 users,  load average: 0.00, 0.05, 0.04
[root@nantokagoe smartmontools-6.1]# iostat -k -x -d sda | sed -n '3,4p'
Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.12   246.21 114.24 260.99  1434.11  6111.88    40.22     0.02    0.19   0.11   4.19
[root@nantokagoe smartmontools-6.1]#

書き込み量は前エントリの倍近いレートの 6.1MB/s である。
しかし、 SMART Attribute を確認すると、この書き込み量で 36ヵ月以上虐待し続けたにも関わらず、 233 Media_Wearout_Indicator は 39% 残っている。*1

[root@nantokagoe smartmontools-6.1]# ./smartctl -i /dev/sda | egrep '(Model|Firm|Capa)'
Model Family:     Intel X18-M/X25-M/X25-V G2 SSDs
Device Model:     INTEL SSDSA2M080G2GN
Firmware Version: 2CV102G9
User Capacity:    80,026,361,856 bytes [80.0 GB]
[root@nantokagoe smartmontools-6.1]# ./smartctl -A /dev/sda | egrep '^(ID|  5|  9|225|233)'
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       164
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       26935
225 Host_Writes_32MiB       0x0030   200   200   000    Old_age   Offline      -       16741249
233 Media_Wearout_Indicator 0x0032   039   039   000    Old_age   Always       -       0
[root@nantokagoe smartmontools-6.1]#

225 Host_Writes_32MiB に至っては RAW VALUEカンストしてしまっていて、メーカー想定外の酷い使い方である雰囲気を感じる。また、この値を信じるなら最低でも 535TB は書き込んでいることとなり、 X25-M G2 公称値の 15TB を 35回ほどブッちぎっている。ほんと良く壊れてないなこいつ。

結論

危険側に倒さなそうなメーカの初期製品は、マージンもりもりで美味しい。*2
初期の製品だったので、ありとあらゆるところを安全側に倒してこの SSDIntelは設計・開発したのだろう。また、 X25-M G2 の NAND は 34nm のものであり 5000回の書き換えに耐え、最近の微細化が進んだ NAND より書き込み量の面で大きな余裕がある。

備考

以下備考と全ログ。

[root@nantokagoe smartmontools-6.1]# ./smartctl -iA /dev/sda
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-2.6.18-164.11.1.el5xen] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Intel X18-M/X25-M/X25-V G2 SSDs
Device Model:     INTEL SSDSA2M080G2GN
Serial Number:    CVPO942000660xxxxx
LU WWN Device Id: 5 001517 9590b6814
Firmware Version: 2CV102G9
User Capacity:    80,026,361,856 bytes [80.0 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA/ATAPI-7 T13/1532D revision 1
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Wed Apr 17 19:58:37 2013 JST

==> WARNING: This drive may require a firmware update to
fix possible drive hangs when reading SMART self-test log:
http://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=18363

SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 5
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  3 Spin_Up_Time            0x0020   100   100   000    Old_age   Offline      -       0
  4 Start_Stop_Count        0x0030   100   100   000    Old_age   Offline      -       0
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       164
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       26935
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       31
192 Unsafe_Shutdown_Count   0x0032   100   100   000    Old_age   Always       -       18
225 Host_Writes_32MiB       0x0030   200   200   000    Old_age   Offline      -       16741652
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       65535
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       65535
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       65535
232 Available_Reservd_Space 0x0033   098   098   010    Pre-fail  Always       -       0
233 Media_Wearout_Indicator 0x0032   039   039   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   099    Pre-fail  Always       -       0

[root@nantokagoe smartmontools-6.1]#

Intelばかり立てて Micron 落としてる感じだが、 Intelも 25nm 製品の初期ロットで何回か初期不良に遭遇したりとかあるので、どっこいどっこいかと思います。

*1:最初 100 でした。

*2:という場合もある

警察庁の有識者は torrc.sample も読んでいないのではないだろうか

$
0
0

念のため強調しておきますが、個人の見解なので誤りなど多分に含まれうるものです。ご注意を。

発信元の特定を困難にする匿名化システム「Tor(トーア)」を悪用した犯罪対策を検討していた警察庁有識者会議は18日、サイト管理者の判断で通信を遮断することが抑止に効果があるとする報告書をまとめた。警察庁は提言を踏まえ、インターネット接続事業者の業界などに自主的な取り組みを促す。
(中略)
具体策として、同システムが経由地に使うパソコンのうち、最後の3台目に割り当てられたIPアドレスの一覧が公開されている点に着目。このIPアドレスからアクセスがあった場合、通信を遮断するようにすれば犯罪抑止に一定の効果があると提言した。

http://mainichi.jp/select/news/20130418k0000e040232000c.html

コンテンツサービスプロバイダ(CSP)側で Tor によるアクセスの遮断を警察が要請するそうで。ここでは原文に当たった上で CSP サイドでのフィルタと判断し議論します。*1
CSP 側によるフィルタリングも Tor は考慮している*2んですが、有識者の皆様におきましては torrc.sample ぐらいはお読みになられたのでしょうか。

177 ## Bridge relays (or "bridges") are Tor relays that aren't listed in the
178 ## main directory. Since there is no complete public list of them, even an
179 ## ISP that filters connections to all the known Tor relays probably
180 ## won't be able to block all the bridges. Also, websites won't treat you
181 ## differently because they won't know you're running Tor. If you can
182 ## be a real relay, please do; but if not, be a bridge!
183 #BridgeRelay 1

https://gitweb.torproject.org/tor.git/blob/release-0.2.4:/src/config/torrc.sample.in

ISPサイドでのフィルタリングについては、凄いコストを ISPに強いることになるわ、通信の秘密とは何だったのかとなるわ、挙句の果てに Tor の仕組みから全然効果が無いので言語道断だと思います。
CSP サイドでのフィルタリングも上記の仕組みにより面倒くさくする程度の効果しかなく、例えば Socks Proxy たる Tor の先に国外の野良 HTTP Proxy を挟むという手法で突破出来、*3効果が無いでしょう。
多段プロキシによるTorのExitノードの隠蔽についてが追試せんでも見りゃ分かる良い資料*4ですね。

雑感

  • 「我が国に Tor は不要」*5という内容の発言をしちゃうような人が警察側に居る事実より、匿名であることを技術的に担保出来る仕組みの存在は非常に重要であると認識を新たにしました。
  • 某市政とか見てると日本においても「政府の弾圧」が無いとは言いきれないと思うので、遮断するんであれば日本を中国と同等の国にする覚悟が必要かと思います。(それが良いことかどうかはお読みの方にお任せします。)
  • というか、前述の仕組みもあり某検閲先進国の金盾でも Tor を止められないのですが、日本なら出来ると考えてるんですかね?
  • 便所の落書き程度の追跡性しか無い代物に過剰な反応してるのがそもそもの間違いだと思います。
  • 便所の落書きを書いた奴が発覚した場合の対応を考えるに、犯行予告は呼び出して事情聞いて要注意人物として様子見るぐらいが正しいんではないか、というのが個人的見解です。*6
  • Tor 自体の研究すべきだが民間じゃ利益が出ないのでうんぬんとあるけど、お前どの口でそれを言っているのかと(ry
    • その受け皿たる国立研究機関をドンドン追い出したツケですねアホー
    • 匿名化システムを作り動かす研究とそれを突破する研究は表裏一体
  • Tor より先に、スパマーなりアタッカーなりを通報しても、踏み台の中に海外 IP アドレスが出てくるだけで諦めちゃうのをどうにかした方がよっぽど有益じゃないでしょうかね。
    • Tor を解析出来たとしても、接続先ノードが海外だったらどうするの?
    • 黒子のバスケ事件はどうなったんだろう?

あ、武雄市とか中国が嫌いな人たちはお呼びでないです。武雄市とか中国が嫌いな人たちはお呼びでないです。大事なことなので二回言いました。

結論

「Tor ノードをブロックしても効果無いでしょ」という指摘が 2013/4/23 の時点で存在していることが重要だと思うので、ここに記す。
ちなみに私は、商取引など匿名や追跡可能性の欠如が問題となるサービスについては、デジタル署名出来る IC カードやワンタイムパスワードトークン等の下層の安全性に左右されない認証方法を用いるか、フレッツ網や携帯電話網みたいな管理された閉域網でやれ、という立場でございます。
そもそも Tor を悪用されて困るような使い方を、有象無象が繋がるインターネットの上でしてはいけない。

*1:誤読してる人も多いので、新聞記者各位には「インターネット接続事業者(ISP)」の狭義の意味と、その文脈における「コンテンツ(サービス)プロバイダ(CP/CSP)」という用語の意味を理解して記事とか書いてほしく思います。

*2:なお、 ISP側によるフィルタリングに対してはさらに効果がない。

*3:多段プロキシとかガキでも思いつく

*4:悪用するものには常識であり利益が無く、悪用しないものにはリスクを犯さず概要が理解出来る。

*5:原文当たらずに批判する人は躓いて転べば良いと思っているのでワザと表現変えました。「サイバー犯罪捜査の課題と対策」部会 第3回 7ページを参照。

*6:正しいリスクマネジメントの出来ない人は嫌いです。

chown -R による壊滅的な状況を切り抜ける方法

$
0
0

ある日、ぼーっと DB のコピーをした後に、コピー元と uid が違っていたので以下のようなコマンドを叩いた。ぼーっと。

chown -R mysql:mysql ../

これを叩いたときのカレントディレクトリは /var/lib/mysqlである。ドットが一個多いので /var/lib 以下が全部 mysqlになって大惨事。
こういうとき FreeBSDだったらmtreeを使うんですが、 GNU/Linuxだと無いようなのでどうするねん。と困っていたところ、 satoh_fumiyasu@ さんに getfacl/setfacl というポインタを教えてもらいました。
同一構成の適当なホストからパチってきて合わせる。

-bash-3.2# hostname
rokuchotouge
-bash-3.2# pwd
/var
-bash-3.2# getfacl -R lib | nc tochugoe.localdomain 30000
-bash-3.2# 
-bash-3.2# hostname
tochugoe.localdomain
-bash-3.2# pwd
/var
-bash-3.2# nc -l 30000 | setfacl --restore=-
setfacl: lib/hoge: No such file or directory
(snip)
-bash-3.2# 

残りは ls -Rl | grepmysqlとかで探してよきに計らう。
10年に一度ぐらいしか作らないようなホストを作る最後の方でヘマやらかして、作り直しに心折れていたところなので大変役に立ちました。


六丁峠

$
0
0

始めて通ったときに見た、雲がかかった山並みの眺望が綺麗で、強く印象に残っている。
雰囲気も好き。 WUXGA縦ぐらいでお楽しみください。

なお、後方は離合不能な道が数百メートル、前方は最小旋回半径が気になるレベルのつづら折れなので覚悟して突っ込みましょう。

今年こそ Android で IPv6 元年

$
0
0

日本国内で Androidにて 3G/LTEIPv6が使えるようになった、という話。

の 3つについて、 Nexus 7 2013 での設定方法もメモしておきます。

DoCoMo Xi

DoCoMo純正の Xi SIM で IPv6接続する場合について。 Xperia SP か何かと一緒に契約した気がします。

  1. My docomoにて mopera Uを追加で契約
  2. http://www.mopera.net/customize/にて「IPv6アドレスを利用する」に設定
  3. APN 設定画面にて APN プロトコルIPv4/IPv6を選択

www.mopera.net で設定をいじる必要があるのがミソ。下記 PDF の序盤とかを参考にすればいいと思います。
http://www.mopera.net/manual/option/ipv6_l02c_win.pdf
実際の設定画面はこんな感じ。

DoCoMo純正端末だと殺されている選択項目が Nexus 7 2013 ではまともに使える。

NTT DOCOMOで…

IPv6です。

auiPhone 5 SIM

auLTEの SIM で IPv6接続する場合。 iPhone 5から引っこ抜いた SIM ですが、 Androidと同じ SIM だと思われます。

  1. auお客さまサポートにて LTE NET for DATA を追加で契約
  2. 一晩待つ
  3. APN を下記に設定
  4. 安定しない場合はキャリアサーチで KDDIに固定

なお、 auはどっかのキャリアと違って素晴らしいので、 au販売の端末でも LTE NET for DATA を契約し上記 APN に変更すれば、 IPv6が使えるものと推測しています。未確認なので誰か試して!
なお、 uno.au-net.ne.jp では IPv6が使えなかったので、 LTE NET for DATA の契約は必須である模様。
Nano SIM なのでこういうことをします。

APN はこんな感じ。


WCDMA 端末でも LTE Band 1 対応なら繋がり…

IPv6アドレスが付く。

IIJmio高速モバイル/D

IIJmio SIM も例によって IPv6に対応している。

  1. APN 設定画面にて APN プロトコルIPv4/IPv6を選択

極めて簡単。契約とか網側設定とかを Web 経由で設定したりする必要は無い。本来こうあるべき。
ASUS Shop で IIJmioプリペイドパックなるキャンペーン商品を購入している人はかなり居るはずなので、設定の容易さも相まってモバイル環境での IPv6普及率を押し上げてくれるんじゃないかと期待している。

特に IIJmioとか出ないんですが…

アドレスはこうなる。

Nexus 7 2013 のプリセットで入ってる APN もデフォルトで IPv4/IPv6にしないのかなぁ?

背景

日本では、割と前からモバイルネットワーク側は IPv6に対応していた。

が、スマートフォン側は下記のような状況で、なかなか IPv6を試すことが出来ないで居た。

  • mopera UIPv6LTE端末専用
    • PGW のみ IPv6対応であるためと推測*4
  • auLTE端末は私が持っていなかった
  • 国内の DoCoMoLTE端末はわざわざ IPv6を殺してある
  • 海外端末
    • 国内の Band 1 LTEに対応する端末が最近まで存在し無かった
    • 外国人旅行者の知人に手伝ってもらわないと電波法的にホワイトで無い

そこに颯爽と Nexus 7 (2013) なる端末が現れた。

  • 国内 Band を含む LTE Band 1,2,3,4,5,7,20 対応
  • キャリアによる IPv6を殺す余計なカスタマイズが無い
  • 技術適合取得済み

これらの条件により、日本で心置きなくモバイルで IPv6を楽しむ環境が整った。
なお、 auユーザはもうちょっと前から IPv6を楽しむことが出来ていた模様。俺、 WiMAXが使えるんで愛用している Motorola Photon が 2年経ったら auLTE端末をゲットするんだ…。

その他 Nexus 7 2013 雑感

OTA を適用した後、右上の「初期設定にリセット」するとプリセットでこれだけ出てくる。

この亀の躍動感をお伝えすることが出来ないのが残念です。

キャリアサーチするとこんな感じ。

さあ皆も Nexus 7 2013 で IPv6だ!

Intel SSD のファームウェアを USB メモリで更新する

$
0
0

IntelSSDFirmware Update Tool は ISO イメージを dd で直接 USB メモリに書き込むと、その USB メモリから boot して使える。
具体的にはこう。

dd if=issdfut_2.0.6.iso of=/dev/da0 bs=1M

この da0 の USB メモリから起動すると、暫く ISOLINUX とか表示され動かなくなるが、放っとくと起動する。
前の issdfut は ISO イメージからファイル引っこ抜いて FreeDOSでほにゃららみたいなことをする必要があり面倒だったが、久しぶりに同じことをしようと mount_cd9660 したら、 vmlinz とか見えたので試したら上手くいった。 2系から変わったんかな?
たぶん isolinux さん辺りがよきに計らってくれてるぽいが、 CD boot 用の bootloader なのに USB メモリからも起動するのは面白い。

質感まで表現できるカメラが欲しい

$
0
0

手に入れた気がする。
このぐらいになってくると、画像の縮小アルゴリズムとかも雰囲気に影響するようになってくる。その点、はてなフォトライフはいまいちである。オリジナルサイズの画像をアップロードした方と比較するとなんか違う。

iG50 は良いタイヤでした。バンパーでラッセルする深雪でも再発進出来るし、深夜の凍結路でも一度のトラブルも無くこの冬を越せました。
シャーベット状の雪を漫然と走っていたときはヒヤッとしたけど、これは私が悪い。

Android GoogleMap でレーン表示が出るようになった

$
0
0

8.0.0 からだと思うけど、 AndroidGoogle Mapsのカーナビ機能で、交差点でのレーン表示が出るようになった。
合わせて、マップに別経路が提案されるようにもなった。多少はずれても選んだ経路へ戻るルートを提案し続ける傾向になった気もするが、これはよく分からん。

レーン表示はアプライアンスなカーナビの優位点だと思っていたので、これはカーナビメーカー危うしという感じがする。
まだ優位性は残っていると思うけど、数がものを言う通信機能なんかは Google Mapsに先を行かれているので、普及価格帯の製品にも付けるとかして頑張ってほしい。
とはいえ、 20万円も取るような商売はもう出来ないだろうなぁ。 PC/AT互換機の登場に近い雰囲気を感じる。

Viewing all 50 articles
Browse latest View live