SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2011-02-25(Fri) VPSまでトンネルを掘る

  先日より「さくらのVPS」を契約している……いや、先日、というか……先月、というか……実は、契約したのはかなり前(10月17日)だったりするのだが、その後、仕事が忙しくなったので、金だけ払って放置、という状態が続いていたのだった。

  まぁ、980円/月だし、ちょっとカジってみようか、という動機だったのだが、されど、980円/月である。使わなければもったいない話だ。とりあえず、20Gもあることだし、iSCSIターゲットの設定をして「外付けハードディスク」にでも仕立ててみようか、などと、変なことを考えてみた。

  ところが、iSCSIは暗号化をしない。よって、暗号化トンネルを確保してやる必要があるだろう。そんな時、OpenVPNがリングに上がるのである。あ、別に、iSCSIに限らずとも、nfsやsambaなどを利用するにしても、通信経路の暗号化はしておいた方がいいと思うので、今回の手順は有用なはずである。

  OpenVPNには、サーバとクライアントの概念がある。もちろん、通信経路としては双方向に利用できるが、関係としては一方向というわけである。クライアントが提出するデジタル証明書を、サーバが検証、接続を許すというカラクリだ。

  ここで少し迷うのは、自宅サーバとVPSのどちらをサーバ側とするか、であるが、まぁ、どっちも似たようなものだ。今回は、自宅サーバをサーバ側、VPSをクライアント側としてみた。

  まず、自宅側、つまり、サーバ側の設定である。ほぼそのまんま、だーっといく。

sheonite.itline.jp:/root # yum install openvpn
sheonite.itline.jp:/root # cd /etc/openvpn/
sheonite.itline.jp:/etc/openvpn # cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf .
sheonite.itline.jp:/etc/openvpn # cp -a /usr/share/openvpn/easy-rsa/ .
sheonite.itline.jp:/etc/openvpn # cd easy-rsa/2.0/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # vi vars
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # diff vars.org vars
64,68c64,68
< export KEY_COUNTRY="US"
< export KEY_PROVINCE="CA"
< export KEY_CITY="SanFrancisco"
< export KEY_ORG="Fort-Funston"
< export KEY_EMAIL="me@myhost.mydomain"
---
> export KEY_COUNTRY="JP"
> export KEY_PROVINCE="Aichi"
> export KEY_CITY="Nagoya" ★自宅は名古屋
> export KEY_ORG="ITLine, Inc."
> export KEY_EMAIL="hoge@fuga.jp"
★認証局/サーバの証明書への登録内容を入力
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # . ./vars
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # ./clean-all 
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # ./build-ca 
★Returnキー連打で、認証局の証明書と秘密鍵を作る
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # ./build-key-server itline.jp
★Returnキー連打で、サーバの証明書と秘密鍵を作り、認証局の証明書で署名する
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # ./build-dh 
★共通鍵交換用のパラメータを作る
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp keys/ca.crt /etc/openvpn/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp keys/itline.jp.crt /etc/openvpn/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp keys/itline.jp.key /etc/openvpn/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp keys/dh1024.pem /etc/openvpn/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cd /etc/openvpn/
sheonite.itline.jp:/etc/openvpn # vi server.conf
sheonite.itline.jp:/etc/openvpn # diff server.conf.org server.conf
79,80c79,80
< cert server.crt
< key server.key  # This file should be kept secret
---
> cert itline.jp.crt
> key itline.jp.key  # This file should be kept secret
★サーバの証明書と秘密鍵を指定する
162c162
< ;client-config-dir ccd
---
> client-config-dir ccd
★常に同じIPアドレスでトンネルを掘るための設定
sheonite.itline.jp:/etc/openvpn # mkdir ccd
sheonite.itline.jp:/etc/openvpn # vi ccd/darius.ddo.jp
sheonite.itline.jp:/etc/openvpn # cat ccd/darius.ddo.jp
ifconfig-push 10.8.0.101 10.8.0.102
★VPSクライアントホスト「darius.ddo.jp」は、常に10.8.0.101/10.8.0.102でトンネルを掘る
sheonite.itline.jp:/etc/openvpn # service openvpn start
★openvpnのサーバ側の待ち受け開始!
sheonite.itline.jp:/etc/openvpn # ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
★トンネルI/Fが出現、サーバ側の出入口は10.8.0.1
sheonite.itline.jp:/etc/openvpn # chkconfig openvpn on

  つぎに、VPS側、つまり、クライアント側の設定である。こっちも、ほぼそのまんま、だーっといく。

[root@www1234x ~]# yum install openvpn
[root@www1234x ~]# cd /etc/openvpn/
[root@www1234x openvpn]# cp /usr/share/doc/openvpn-2.1.1/sample-config-files/client.conf .
[root@www1234x openvpn]# cp -a /usr/share/openvpn/easy-rsa/ .
[root@www1234x openvpn]# cd easy-rsa/2.0/
[root@www1234x 2.0]# vi vars
[root@www1234x 2.0]# diff vars.org vars
64,68c64,68
< export KEY_COUNTRY="US"
< export KEY_PROVINCE="CA"
< export KEY_CITY="SanFrancisco"
< export KEY_ORG="Fort-Funston"
< export KEY_EMAIL="me@myhost.mydomain"
---
> export KEY_COUNTRY="JP"
> export KEY_PROVINCE="Tokyo"
> export KEY_CITY="Shinjyuku" ★VPSはたぶん新宿
> export KEY_ORG="ITLine, Inc."
> export KEY_EMAIL="hoge@fuga.jp"
★クライアントの証明書への登録内容を入力
[root@www1234x 2.0]# . ./vars
[root@www1234x 2.0]# ./clean-all 
[root@www1234x 2.0]# ./build-req darius.ddo.jp
★Returnキー連打で、クライアントの証明書(未署名)と秘密鍵を作る

  ここで、いったん自宅側に戻る。クライアントの証明書(未署名)に、認証局として署名をしてやらないといけないからだ。巷のサイトでは、このようにクライアント側ではなく、サーバ側でクライアントの証明書を作ってしまう手順を紹介している事例が多いが、そういうコトを書いてしまうということは「非対称鍵のなんたるかは全く理解できてません」と公表しているようなモンである。

  正しい手順では、ここで作った未署名のクライアントの証明書である、darius.ddo.jp.csrをサーバまで持ってくる。

sheonite.itline.jp:/etc/openvpn # cd easy-rsa/2.0/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp ~user/darius.ddo.jp.csr keys/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # ./sign-req darius.ddo.jp
★クライアントの証明書に認証局の証明書で署名する
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp keys/ca.crt ~user/
sheonite.itline.jp:/etc/openvpn/easy-rsa/2.0 # cp keys/darius.ddo.jp.crt ~user/

  再び、VPS側へ。認証局の証明書と、クライアントの証明書(署名済)をクライアント側にセットするためだ。ca.crtとdarius.ddo.jp.crtをクライアント側へ持っていく。

[root@www1234x 2.0]# mv ca.crt keys/
[root@www1234x 2.0]# mv darius.ddo.jp.crt keys/
[root@www1234x 2.0]# cp keys/ca.crt /etc/openvpn/
[root@www1234x 2.0]# cp keys/darius.ddo.jp.crt /etc/openvpn/
[root@www1234x 2.0]# cp keys/darius.ddo.jp.key /etc/openvpn/
[root@www1234x 2.0]# cd /etc/openvpn/
[root@www1234x openvpn]# vi client.conf
[root@www1234x openvpn]# diff client.conf.org client.conf
42c42
< remote my-server-1 1194
---
> remote itline.jp 1194
★接続先であるOpenVPNサーバを指定する
89,90c89,90
< cert client.crt
< key client.key
---
> cert darius.ddo.jp.crt
> key darius.ddo.jp.key
★クライアントの証明書と秘密鍵を指定する
[root@www1234x openvpn]# service openvpn start
★openvpnのクライアント側の接続開始!
[root@www1234x sysconfig]# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.101  P-t-P:10.8.0.102  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:86 errors:0 dropped:0 overruns:0 frame:0
          TX packets:88 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:15903 (15.5 KiB)  TX bytes:10959 (10.7 KiB)
★トンネルI/Fが出現、クライアント側の出入口は10.8.0.101
[root@www1234x sysconfig]# chkconfig openvpn on

  なお、以上の手順で証明書ファイルをやりとりする限り、暗号化された通信経路でやる必要はない。もちろんフロッピーやUSBメモリで運ぶ必要もない(無理だし)。ファイルどこかに置き忘れても構わない。なぜなら、証明書に対応する秘密鍵を各々のホストの上から「移動していない」からだ。

  これに関しては著名なITサイトですらアフォなことを書いている。まさに「非対称鍵のなんたるかは全く理解できてません」と公表している。要するに、以前に書いたこの記事と同じことなのだが、今回はクライアント側もLinuxであるだけに、サーバ側でクライアントの証明書を作らなければならない理由は皆無である。

  さて、あとはOpenVPSのポート番号である1194番について、双方のファイアウォールに穴を空けてから、10.8.0.101に向けてpingを打ってみよう。

# openvpn
-A INPUT -m udp -p udp --dport 1194 -j ACCEPT
sheonite.itline.jp:/root # ping 10.8.0.101
PING 10.8.0.101 (10.8.0.101) 56(84) bytes of data.
64 bytes from 10.8.0.101: icmp_seq=1 ttl=64 time=9.82 ms
64 bytes from 10.8.0.101: icmp_seq=2 ttl=64 time=9.10 ms
64 bytes from 10.8.0.101: icmp_seq=3 ttl=64 time=9.86 ms
64 bytes from 10.8.0.101: icmp_seq=4 ttl=64 time=9.59 ms
★pingを打つと……
 
sheonite.itline.jp:/root # tcpdump -i tun0
tcpdump: WARNING: arptype 65534 not supported by libpcap - falling back to cooked socket
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
23:12:56.979174 IP 10.8.0.1 > 10.8.0.101: ICMP echo request, id 63070, seq 1, length 64
23:12:56.988956 IP 10.8.0.101 > 10.8.0.1: ICMP echo reply, id 63070, seq 1, length 64
23:12:57.980163 IP 10.8.0.1 > 10.8.0.101: ICMP echo request, id 63070, seq 2, length 64
23:12:57.989201 IP 10.8.0.101 > 10.8.0.1: ICMP echo reply, id 63070, seq 2, length 64
23:12:58.980788 IP 10.8.0.1 > 10.8.0.101: ICMP echo request, id 63070, seq 3, length 64
23:12:58.990588 IP 10.8.0.101 > 10.8.0.1: ICMP echo reply, id 63070, seq 3, length 64
23:12:59.981796 IP 10.8.0.1 > 10.8.0.101: ICMP echo request, id 63070, seq 4, length 64
23:12:59.991334 IP 10.8.0.101 > 10.8.0.1: ICMP echo reply, id 63070, seq 4, length 64
★トンネルI/F上ではICMPパケットに見えるが……
 
sheonite.itline.jp:/root # tcpdump -i ppp0 port openvpn
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
23:12:56.979393 IP CEPci-12p34-567.ppp89.odn.ad.jp.openvpn > www1234x.sakura.ne.jp.46126: UDP, length 125
23:12:56.988794 IP www1234x.sakura.ne.jp.46126 > CEPci-12p34-567.ppp89.odn.ad.jp.openvpn: UDP, length 125
23:12:57.980387 IP CEPci-12p34-567.ppp89.odn.ad.jp.openvpn > www1234x.sakura.ne.jp.46126: UDP, length 125
23:12:57.989083 IP www1234x.sakura.ne.jp.46126 > CEPci-12p34-567.ppp89.odn.ad.jp.openvpn: UDP, length 125
23:12:58.981005 IP CEPci-12p34-567.ppp89.odn.ad.jp.openvpn > www1234x.sakura.ne.jp.46126: UDP, length 125
23:12:58.990467 IP www1234x.sakura.ne.jp.46126 > CEPci-12p34-567.ppp89.odn.ad.jp.openvpn: UDP, length 125
23:12:59.982007 IP CEPci-12p34-567.ppp89.odn.ad.jp.openvpn > www1234x.sakura.ne.jp.46126: UDP, length 125
23:12:59.991210 IP www1234x.sakura.ne.jp.46126 > CEPci-12p34-567.ppp89.odn.ad.jp.openvpn: UDP, length 125
★PPP接続上では暗号化されている、ということがわかる

  これにて一件落着!


2011-02-26(Sat) デグRAIDする

  気がつくと、ソフトRAIDがデグレードしていた。あまりにヒドイSMART情報が出たので、記念に貼っておく。こういうの、出そうと思って出せるものではないので、参考になるはず。

  そういえば、このHDDはファームウェア問題を持っていたっけ。24時間稼働で使っているので、発現確率は低いと見積もり、対処してなかった。フツーに壊れた今となってはどうでもイイ話だけど。

  とりあえず、替えのHDDもないので、無理矢理、再アレイしてみる。

smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
 
=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.11
Device Model:     ST3500320AS
Serial Number:    9QM6THGV
Firmware Version: SD15
User Capacity:    500,107,862,016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Sat Feb 26 22:11:11 2011 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.
 
General SMART Values:
Offline data collection status:  (0x82)	Offline data collection activity
					was completed without error.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		 ( 650) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   1) minutes.
Extended self-test routine
recommended polling time: 	 ( 120) minutes.
Conveyance self-test routine
recommended polling time: 	 (   2) minutes.
SCT capabilities: 	       (0x103b)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.
 
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   084   084   006    Pre-fail  Always       -       9800766
  3 Spin_Up_Time            0x0003   095   094   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       65
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       2045
  7 Seek_Error_Rate         0x000f   077   060   030    Pre-fail  Always       -       8698539546
  9 Power_On_Hours          0x0032   079   079   000    Old_age   Always       -       19213
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       65
184 Unknown_Attribute       0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   001   001   000    Old_age   Always       -       204
188 Unknown_Attribute       0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   061   039   045    Old_age   Always   In_the_past 39 (31 161 39 38)
194 Temperature_Celsius     0x0022   039   061   000    Old_age   Always       -       39 (0 14 0 0)
195 Hardware_ECC_Recovered  0x001a   040   021   000    Old_age   Always       -       9800766
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       2
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
 
SMART Error Log Version: 1
ATA Error Count: 235 (device log contains only the most recent five errors)
	CR = Command Register [HEX]
	FR = Features Register [HEX]
	SC = Sector Count Register [HEX]
	SN = Sector Number Register [HEX]
	CL = Cylinder Low Register [HEX]
	CH = Cylinder High Register [HEX]
	DH = Device/Head Register [HEX]
	DC = Device Command Register [HEX]
	ER = Error register [HEX]
	ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
 
Error 235 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 e0  Device Fault; Error: ABRT
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  a1 00 00 00 00 00 e0 00  20d+21:02:03.382  IDENTIFY PACKET DEVICE
  ec 00 00 00 00 00 e0 00  20d+21:02:03.361  IDENTIFY DEVICE
  e5 00 55 9d 00 32 e0 00  20d+21:02:03.359  CHECK POWER MODE
  a1 00 00 00 00 00 e0 00  20d+21:02:01.283  IDENTIFY PACKET DEVICE
  ec 00 00 00 00 00 e0 00  20d+21:02:01.261  IDENTIFY DEVICE
 
Error 234 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 e0
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ec 00 00 00 00 00 e0 00  20d+21:02:03.361  IDENTIFY DEVICE
  e5 00 55 9d 00 32 e0 00  20d+21:02:03.359  CHECK POWER MODE
  a1 00 00 00 00 00 e0 00  20d+21:02:01.283  IDENTIFY PACKET DEVICE
  ec 00 00 00 00 00 e0 00  20d+21:02:01.261  IDENTIFY DEVICE
  e5 00 55 01 00 00 e0 00  20d+21:02:01.259  CHECK POWER MODE
 
Error 233 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 e0
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  e5 00 55 9d 00 32 e0 00  20d+21:02:03.359  CHECK POWER MODE
  a1 00 00 00 00 00 e0 00  20d+21:02:01.283  IDENTIFY PACKET DEVICE
  ec 00 00 00 00 00 e0 00  20d+21:02:01.261  IDENTIFY DEVICE
  e5 00 55 01 00 00 e0 00  20d+21:02:01.259  CHECK POWER MODE
  00 00 00 00 00 00 00 ff  20d+21:01:56.167  NOP [Abort queued commands]
 
Error 232 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 e0  Device Fault; Error: ABRT
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  a1 00 00 00 00 00 e0 00  20d+21:02:01.283  IDENTIFY PACKET DEVICE
  ec 00 00 00 00 00 e0 00  20d+21:02:01.261  IDENTIFY DEVICE
  e5 00 55 01 00 00 e0 00  20d+21:02:01.259  CHECK POWER MODE
  00 00 00 00 00 00 00 ff  20d+21:01:56.167  NOP [Abort queued commands]
  a1 00 00 00 00 00 e0 00  20d+21:01:24.676  IDENTIFY PACKET DEVICE
 
Error 231 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
  When the command that caused the error occurred, the device was active or idle.
 
  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  04 71 04 9d 00 32 e0
 
  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ec 00 00 00 00 00 e0 00  20d+21:02:01.261  IDENTIFY DEVICE
  e5 00 55 01 00 00 e0 00  20d+21:02:01.259  CHECK POWER MODE
  00 00 00 00 00 00 00 ff  20d+21:01:56.167  NOP [Abort queued commands]
  a1 00 00 00 00 00 e0 00  20d+21:01:24.676  IDENTIFY PACKET DEVICE
  ec 00 00 00 00 00 e0 00  20d+21:01:24.651  IDENTIFY DEVICE
 
SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]
 
SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

  いかん、再アレイも失敗する。

# cat /proc/mdstat 
Personalities : [raid1] [raid6] [raid5] [raid4] 
md8 : active raid1 sdb8[2](F) sda8[0]
      244189056 blocks [2/1] [U_]
      
md7 : active raid1 sdb7[2](F) sda7[0]
      145893248 blocks [2/1] [U_]
      
md0 : active raid1 sdb1[2](F) sda1[1]
      16383872 blocks [2/1] [_U]
      
unused devices: <none>
md: bind<sdb1>
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:1, o:1, dev:sdb1
 disk 1, wo:0, o:1, dev:sda1
md: recovery of RAID array md0
md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
md: using 128k window, over a total of 16383872 blocks.
md: bind<sdb7>
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda7
 disk 1, wo:1, o:1, dev:sdb7
md: delaying recovery of md7 until md0 has finished (they share one or more physical units)
md: bind<sdb8>
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda8
 disk 1, wo:1, o:1, dev:sdb8
md: delaying recovery of md8 until md7 has finished (they share one or more physical units)
md: delaying recovery of md7 until md0 has finished (they share one or more physical units)
usb 5-2: reset low speed USB device using uhci_hcd and address 3
usb 5-2: reset low speed USB device using uhci_hcd and address 3
md: md0: recovery done.
md: delaying recovery of md8 until md7 has finished (they share one or more physical units)
md: recovery of RAID array md7
md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
md: using 128k window, over a total of 145893248 blocks.
RAID1 conf printout:
 --- wd:2 rd:2
 disk 0, wo:0, o:1, dev:sdb1
 disk 1, wo:0, o:1, dev:sda1
ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata4.00: BMDMA stat 0x25
ata4.00: cmd c8/00:10:d0:c9:96/00:00:00:00:00/e0 tag 0 dma 8192 in
         res 71/04:04:9d:00:32/00:00:00:00:00/e0 Emask 0x1 (device error)
ata4.00: status: { DRDY DF ERR }
ata4.00: error: { ABRT }
ata4.00: both IDENTIFYs aborted, assuming NODEV
ata4.00: revalidation failed (errno=-2)
ata4: soft resetting link
ata4.00: both IDENTIFYs aborted, assuming NODEV
ata4.00: revalidation failed (errno=-2)
usb 5-2: reset low speed USB device using uhci_hcd and address 3
ata4: soft resetting link
ata4.00: both IDENTIFYs aborted, assuming NODEV
ata4.00: revalidation failed (errno=-2)
ata4.00: disabled
ata4: EH complete
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 9882064
raid1: sdb1: rescheduling sector 9882032
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 9882080
raid1: sdb1: rescheduling sector 9882048
raid1: sdb1: rescheduling sector 9882056
raid1: sdb1: rescheduling sector 9882064
raid1: sdb1: rescheduling sector 9882072
raid1: sdb1: rescheduling sector 9882080
raid1: sdb1: rescheduling sector 9882088
raid1: sdb1: rescheduling sector 9882096
raid1: sdb1: rescheduling sector 9882104
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200956448
raid1: Disk failure on sdb7, disabling device.
raid1: Operation continuing on 1 devices.
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200957472
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200958496
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200959520
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 32767776
end_request: I/O error, dev sdb, sector 32767776
md: super_written gets error=-5, uptodate=0
raid1: Disk failure on sdb1, disabling device.
raid1: Operation continuing on 1 devices.
md: md7: recovery done.
md: recovery of RAID array md8
md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
md: using 128k window, over a total of 244189056 blocks.
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:1, o:0, dev:sdb1
 disk 1, wo:0, o:1, dev:sda1
RAID1 conf printout:
 --- wd:1 rd:2
 disk 1, wo:0, o:1, dev:sda1
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488394784
raid1: Disk failure on sdb8, disabling device.
raid1: Operation continuing on 1 devices.
md: md8: recovery done.
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488395808
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488396832
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488397856
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda7
 disk 1, wo:1, o:0, dev:sdb7
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda7
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda8
 disk 1, wo:1, o:0, dev:sdb8
RAID1 conf printout:
 --- wd:1 rd:2
 disk 0, wo:0, o:1, dev:sda8

  あかん……HDD注文しよ。以下は、マトモな側のSMART。

smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
 
=== START OF INFORMATION SECTION ===
Device Model:     WDC WD10EADS-00L5B1
Serial Number:    WD-WCAU45330156
Firmware Version: 01.01A01
User Capacity:    1,000,204,886,016 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Sat Feb 26 22:10:41 2011 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
 
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
 
General SMART Values:
Offline data collection status:  (0x84)	Offline data collection activity
					was suspended by an interrupting command from host.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		 (23400) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 ( 255) minutes.
Conveyance self-test routine
recommended polling time: 	 (   5) minutes.
SCT capabilities: 	       (0x303f)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.
 
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   200   200   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   169   166   021    Pre-fail  Always       -       6533
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       28
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   200   200   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   075   075   000    Old_age   Always       -       18784
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       26
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       7
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       28
194 Temperature_Celsius     0x0022   118   094   000    Old_age   Always       -       32
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   200   200   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   200   200   000    Old_age   Offline      -       0
 
SMART Error Log Version: 1
No Errors Logged
 
SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]
 
 
SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

2011-02-28(Mon) 世界中の誰よりきっと……

  ……この瞬間に「ドルアーガの塔」に熱中しているのはオイラだろう。

  1月23日にPSPの「ナムコミュージアムVol.2」をダウンロード購入してからというもの、マジになってワンコインクリアを目指している。別にドルアーガ目当てで購入したんじゃなく、どっちかってーとドラバス&ドラスピ&ロリサン目当てだったのだが、気がつくと、一番ドルアーガに熱中していた。

  今まで、宝箱の出し方を見ながら、無理無理クリアしたことは何度かあった。X1版に至っては買ったような気もする。しかし、ワンコインクリアを目指すとなると、遊び方が変わるのね。ゲームの本質が「戦略と確率と運とのせめぎ合い」に化けるのだ。宝箱の出し方なんて、攻略以前の問題としてサクッと暗記だ。このゲーム、こんなに奥が深かったのか……ぜんぜん、気づかんかったなぁ。

  いま、電車の中でPSPを出している99%の目的はモンスタ狩りだろうが、オイラの目的は悪魔狩りである。つーか、PSPの購入目的が「テグザー」で、ゲームアーカイブばかりいくつも購入して、ようやくPSP用ソフトを購入したかと思ったら、それが「ナムコミュージアム」って、どうなんだろう……。

  画像の説明

  今日は、久々に仕事が早く終わったので、仕事帰りにゲーセンに向かった。そこには、なんと気まぐれなことにドルアーガの塔があるのだ。エミュでなくちゃんとオリジナルで。しかし、まさかの先客。なんと、連コインで59階まで登っている。よしッ!! キミを、この瞬間に「ドルアーガの塔」に熱中している世界で2番目と認定しよう。

  さて、オイラの番。今回は、5機設定で24面まで。明らかに、ドルアーガにおいては4方向レバーが必須なのだ、ということに気づいたアラフォーのオイラであった。

  そういえば、以前にこんなことを書いたが、この調子だとかなりの確率で、将来、実際にやってそうだなぁ……。