24 January 2013

非AFTのシステム ハードディスクをAFTハードディスクに交換

500GBytes HDD Seagate ST3500320AS(非AFT)を1000GB HDD ST1000DM003(AFT)に交換した。次回交換を行うときのために役立つようメモを残しておく

20130126-hddphoto1.jpg

20130126-hddphoto2.jpg
ハードディスクの高さ比較

1プラッタ(内部のディスクが1枚)のST1000DM003は高さが低い。

■ 新旧HDDのSMARTデータ

新HDD: ST1000DM003
=== START OF INFORMATION SECTION === Device Model: ST1000DM003-9YN162 Serial Number: Z1D2QDFL LU WWN Device Id: 5 000c50 04ebe26a1 Firmware Version: CC4B User Capacity: 1,000,204,886,016 bytes [1.00 TB] Sector Sizes: 512 bytes logical, 4096 bytes physical Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 4 Local Time is: Thu Jan 24 18:14:07 2013 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled 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 105 100 006 Pre-fail Always - 10264800 3 Spin_Up_Time 0x0003 099 099 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 5 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 100 253 030 Pre-fail Always - 2518 9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 0 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 5 183 Runtime_Bad_Block 0x0032 100 100 000 Old_age Always - 0 184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 188 Command_Timeout 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 077 074 045 Old_age Always - 23 (Min/Max 14/23) 191 G-Sense_Error_Rate 0x0032 100 100 000 Old_age Always - 0 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 4 193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 7 194 Temperature_Celsius 0x0022 023 040 000 Old_age Always - 23 (0 14 0 0) 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 225335459184640 241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 34643980677 242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 4294723835

赤で着色した部分、論理セクタ長が512バイト、物理セクタ長が4096バイトと表示されAFT方式のハードディスクだと分かる。

旧HDD: ST3500320AS
Model Family: Seagate Barracuda 7200.11 Device Model: ST3500320AS Serial Number: 9QM7KY7J LU WWN Device Id: 5 000c50 0105722fb Firmware Version: SD1A User Capacity: 500,107,862,016 bytes [500 GB] Sector Size: 512 bytes logical/physical 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: Thu Jan 24 18:16:08 2013 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled 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 117 099 006 Pre-fail Always - 142704393 3 Spin_Up_Time 0x0003 094 094 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 096 096 020 Old_age Always - 4252 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 081 060 030 Pre-fail Always - 124543916 9 Power_On_Hours 0x0032 095 095 000 Old_age Always - 5139 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 2 12 Power_Cycle_Count 0x0032 096 096 020 Old_age Always - 4240 184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 188 Command_Timeout 0x0032 100 099 000 Old_age Always - 21475164166 189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0 190 Airflow_Temperature_Cel 0x0022 079 059 045 Old_age Always - 21 (Min/Max 12/21) 194 Temperature_Celsius 0x0022 021 041 000 Old_age Always - 21 (0 4 0 0) 195 Hardware_ECC_Recovered 0x001a 032 020 000 Old_age Always - 142704393 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0

旧ハードディスクは緑で着色した部分のデータから、使用時間は5139時間(=214日)、起動回数4252回のようだ。2010年5月末にHP s5350を購入直後に換装したハードディスクなので、利用期間は2年8ヶ月。1日あたり4から5回の起動(再起動)、1日に5.5時間程度の利用だったようだ。

突然死(ロックが起こってアクセス不能になる)不具合を対策するためのファームウエア更新が行われたSeagate ST3500320ASだが、ファームウエアを更新してここまでよく頑張ってくれたものだ。

■ ハードディスク ファームウエアのアップデート

Seagateウエブページの「Firmware Updates for Seagate Products (http://knowledge.seagate.com/articles/en_US/FAQ/207931en)」より、「Barracuda (1TB/disk platform) Firmware Update」を選択すると、”Previous versions of firmware with these models and part numbers are CC46, CC47, CC49, CC4C, or CC4G.”をCC4Hにアップデートするファイルが配布されている。

購入したハードディスクのファームウエアはSMART情報よりCC4Bだ。アップデート対象には入っていないが、より新しいファームウエアに書き換えることとする。

Windows版アップデート ソフトウエア ”CC4H in .exe format”をダウンロードして、Windows 7で実行。自動機に再起動が掛かり、アップデートはすんなりと終了。

■ パーティションコピー (GPartedを用いる)

20130127-fig-copy.png

パーティションの作成、コピーにはKnoppix 6.4.4(産業技術総合研究所が日本語化して配布しているUSB起動のLinux)のGPartedを用いた。

Windows 7やXPは、パーティションが変更されると起動時にディスクチェックが自動的に掛かり、システムが最設定される。この自動修正はパーティションのコピーとリサイズが同時に行われると”迷い”が生じる場合があり、コピーとリサイズは同時に行わないほうがよいと思う。LinuxはUbuntu 12.04や10.04、CentOS 5で試したところ、コピーと同時にサイズ変更を行なっても特に問題は起こらなかった。

また、Windows XPにはRAIDディスクドライバが標準で用意されていないので、2台のハードディスクを接続した状態で起動するとRAIDドライバが見つからないことにより、起動できない。必ず1台だけハードディスクを接続した状態で起動する。(この状態で起動してしまうとディスクにエラーが発生するので、パーティションを再度コピーしないといけなくなる)

■ パーティションの作成

Knoppix 6.4.4のGPartedやWindows 7のディスク管理で新規作成したパーティションはアライメントが整合している。しかし、Windows XPのディスク管理で作成したパーティションはアライメントにずれが生じてしまう。

なお、Linuxのpartedコマンドのパーティションサイズの変更では、ntfsをセクタ番号を指定してリサイズ出来ない(ntfsresize -P --force /dev/sdb2 -s 31457279999のように、サイズしか指定できない)ため、パーティション作成時にアライメント整合のなるパーティションを作成しておくほうが楽だ。

■ AFTに対応するアライメントのチェック

20130127-fig-align.png

セクタの開始は8で割り切れる値でなければ、アライメントが不整合を起こす。データの読み書きの正確性には問題は起こらないが、アライメントがずれたパーティションを読み書きする時は、条件によっては2回物理セクタに対して読み書きを行う必要が出るので、速度が遅くなると言われている。

パーティションの作成やコピーを行った時には、都度、アライメントの整合性(開始セクタが8で割り切れるか)をチェックする。Linux(Knoppix)で作業をしている場合は、次のようにpartedをセクタ表示モード(unit s)にして、開始セクタ(赤で着色した部分)が8で割り切れるか、必ずチェックする。

$ sudo parted /dev/sda GNU Parted 2.3 /dev/sda を使用 (parted) unit s (parted) print モデル: ATA ST1000DM003-9YN1 (scsi) ディスク /dev/sda: 1953525168s セクタサイズ (論理/物理): 512B/4096B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 2048s 206847s 204800s primary ntfs boot 2 206848s 84092927s 83886080s primary ntfs 3 84092928s 167979007s 83886080s primary ntfs 4 167979008s 1953523711s 1785544704s extended 5 167981056s 209924095s 41943040s logical ntfs 6 209926144s 272840703s 62914560s logical ext3 7 272842752s 335757311s 62914560s logical ext4 8 335759360s 398673919s 62914560s logical ext3 9 398675968s 461590527s 62914560s logical ext4 10 461592576s 465786879s 4194304s logical linux-swap(v1) 11 465788928s 528703487s 62914560s logical ntfs 12 528705536s 591620095s 62914560s logical ntfs 13 591620328s 1011051179s 419430852s logical ntfs 14 1011053232s 1430484083s 419430852s logical ntfs 15 1430487040s 1953523711s 523036672s logical ext4

ちなみに、非AFTの旧ハードディスクは次のようなもので、もちろんアライメントの整合性は全く考えられていない

番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 63s 2104514s 2104452s primary ntfs boot 2 2104515s 65015054s 62910540s primary ntfs 3 65015055s 127925594s 62910540s primary ntfs 4 127925656s 976768064s 848842409s extended 5 127925658s 159380864s 31455207s logical fat32 6 159380928s 190836134s 31455207s logical ext3 7 190836198s 222291404s 31455207s logical ext4 8 222291468s 253746674s 31455207s logical ext3 9 253746738s 257939639s 4192902s logical linux-swap(v1) 10 257939703s 289394909s 31455207s logical ntfs 11 289394973s 320850179s 31455207s logical ntfs 12 320850243s 478142594s 157292352s logical ntfs 13 478142658s 635435009s 157292352s logical ntfs 14 635435073s 903865094s 268430022s logical ntfs 15 903865158s 976768064s 72902907s logical ext3

20130126-wd-align.jpg
WD Alignによるチェック


■ ベンチマーク

20130124-st1000dm003-bench-linux.jpg
Linuxディスク管理のベンチマーク

20130126-cristaldiskmark.jpg
Windows7のCrystalDiskMarkベンチマーク

20120127-cdm-xp-3.jpg
Windows XPのCrystalDiskMarkベンチマーク

20120127-cdm-xp-2.jpg
Windows XPのCrystalDiskMarkベンチマーク(外周付近)

外周のほうが少しアクセス速度が速くなっているようだ

■ Windows起動条件のための準備

Windowsはセットアップ時のパーティション構成でドライブ番号が固定されており、システムドライブのドライブ番号(C:やD:など)が変わってしまうと起動できない。(レジストリハイブを起動前に修正する必要性が出てくる)

20130127-fig-windrive.png

この例では、コピー元のWindows(オレンジで着色したパーティション)が上のようなドライブ構成でインストールされていた場合、コピー先で下のような条件で初めて起動した場合、システムのドライブ名がF:と振られてしまいH:を前提として設定されているOSは起動することができない。

■ Linux起動条件のための準備

GrubとfstabがUUIDでパーティション指定を行なっている場合、新しいUUIDに変更しておく必要がある。(コピーしたパーティションのUUIDは同じだが、新規に作成したswapパーティションや、起動時にマウントするデータパーティションは新しいUUIDが振られているはず)

grub.cfgはupdate-grubコマンドで自動的に構築されるので、このファイルを書き換える必要性はないが、Linuxをブートする場合はGrub起動ディスク(CD)などでこれらの正しい値を入力してやる必要があるため、メモ用紙にでも書き留めておく。

/boot/grub/grub.cfg
insmod gzio insmod part_msdos insmod ext2 set root='(hd0,msdos7)' search --no-floppy --fs-uuid --set=root ac585df1-abb9-4a17-b40a-702079e02079e84eae linux /boot/vmlinuz-3.2.0-36-generic-pae root=UUID=ac585df1-abb9-4a17-b40a-702079e84eae ro quiet splash $vt_handoff initrd /boot/initrd.img-3.2.0-36-generic-pae
/etc/fstab
# >file system< >mount point< >type< >options< >dump< >pass< proc /proc proc nodev,noexec,nosuid 0 0 # / was on /dev/sda7 during installation UUID=ac585df1-abb9-4a17-b40a-702079e84eae / ext4 errors=remount-ro 0 1 # swap was on /dev/sda9 during installation UUID=5eb77ab6-6cfa-4768-a613-c3ea390c8ac2 none swap sw 0 0 # temp drive UUID=6C0CB17E0CB1443C /mnt/temp ntfs-3g defaults,locale=ja_JP.UTF-8,umask=0 0 0

UUID値はblkidコマンドで表示できる。

$ sudo blkid /dev/sda1: LABEL="SYSTEM" UUID="2C5EE33B5EE2FD08" TYPE="ntfs" /dev/sda2: LABEL="WIN7" UUID="BE8C26048C25B7B3" TYPE="ntfs" /dev/sda3: LABEL="WINXP" UUID="524888DD4888C0E9" TYPE="ntfs" /dev/sda5: LABEL="TEMP" UUID="6C0CB17E0CB1443C" TYPE="ntfs" /dev/sda6: LABEL="ubuntu10.04" UUID="22b78e8a-b2f1-47a5-85d1-9040d0aa2e87" SEC_TYPE="ext2" TYPE="ext3" /dev/sda7: LABEL="ubuntu12.04" UUID="ac585df1-abb9-4a17-b40a-702079e84eae" TYPE="ext4" /dev/sda8: LABEL="CentOS5" UUID="12f1f4df-3ed2-4609-a581-c8687b51ad85" SEC_TYPE="ext2" TYPE="ext3" /dev/sda9: LABEL="ext4-free" UUID="d4492802-7265-4f59-b8ea-5050d9d6f07c" TYPE="ext4" /dev/sda10: UUID="5eb77ab6-6cfa-4768-a613-c3ea390c8ac2" TYPE="swap" /dev/sda11: LABEL="PROG" UUID="A49ABE5D9ABE2BA4" TYPE="ntfs" /dev/sda12: LABEL="DATA" UUID="FE18C91B18C8D3B5" TYPE="ntfs" /dev/sda13: LABEL="MEDIA" UUID="D6A8B117A8B0F759" TYPE="ntfs" /dev/sda14: LABEL="vm-ntfs" UUID="4226F77326F765F7" TYPE="ntfs" /dev/sda15: LABEL="vm-ext4" UUID="5531ce0b-6f32-41a1-840a-387a7da182cf" TYPE="ext4"

■ Windows 7でWindows Updateが出来ない問題

新しいハードディスクにシステム パーティションをクローン コピーして起動したところ、Windows Updateができなくなっていた。(コントロールパネルのWindows Updateを開くと、「現在サービスが実行されていないため、Windows Updateで更新プログラムを確認できません」というメッセージが表示される)

Microsoft公式のコミュニティー掲示板に「[Win7] Windows Update ができない。(エラーコード 0xc80003f3)」という記事があり、c:\windows\system32\catroot2フォルダの再構築をする必要があるというようなことが書かれているが、この方法ではうまくいかなかった。

c:\windows\WindowsUpdate.log ファイルに「FATAL: Failed to initialize datastore, error = 0xC8000247」というエラーが記録されていたため、Googleで検索したところ、「東芝dynabookで、WindowsUpdateが出来ない」という記事を発見。ここに書かれているように、intel RAIDドライバが障害となっていたようだ。

c:\windows\WindowsUpdate.log 抜粋
2013-01-26 20:17:24:436 1304 b08 AU ########### AU: Uninitializing Automatic Updates ########### 2013-01-26 20:17:24:436 1304 b08 AU WARNING: InitAUComponents Failed, will restart AU in 30 mins, error = 0xC8000247 2013-01-26 20:17:24:436 1304 b08 AU AU Restart required.... 2013-01-26 20:17:24:436 1304 5c0 AU ########### AU: Initializing Automatic Updates ########### 2013-01-26 20:17:24:436 1304 5c0 AU AU setting next detection timeout to 2013-01-26 11:17:24 2013-01-26 20:17:24:436 1304 5c0 AU AU setting next sqm report timeout to 2013-01-26 11:17:24 2013-01-26 20:17:24:436 1304 5c0 DtaStor FATAL: Failed to initialize datastore, error = 0xC8000247 2013-01-26 20:17:24:436 1304 5c0 Agent WARNING: GetServiceList failed with error 0xc8000247. 2013-01-26 20:17:24:436 1304 5c0 AU WARNING: QueryRegisteredProvider failed with error 0xc8000247 2013-01-26 20:17:24:436 1304 5c0 AU # Approval type: Pre-download notify (User preference) 2013-01-26 20:17:24:436 1304 5c0 AU # Will interact with non-admins (Non-admins are elevated (User preference)) 2013-01-26 20:17:24:436 1304 5c0 AU # Will display featured software notifications (User preference) 2013-01-26 20:17:24:436 1304 5c0 AU # Power management is turned off through policy 2013-01-26 20:17:24:436 1304 5c0 DtaStor FATAL: Failed to initialize datastore, error = 0xC8000247 2013-01-26 20:17:24:436 1304 5c0 AU FATAL: Failed to get session from datastore, error = 0xC8000247 2013-01-26 20:17:24:436 1304 5c0 AU FATAL: Failed to Unserialize from data store, error = 0xC8000247 2013-01-26 20:17:24:436 1304 5c0 AU # WARNING: Exit code = 0xC8000247

なお、コントロールパネルのイベント ビューアで、アプリケーション イベントを確認すると次のようなエラーが大量に発生している。

CAPI2 暗号化サービスで、カタログ データベースを初期化できませんでした。ESENT エラー: -583

具体的な解決方法は次のとおり

インテル ドライバー・アップデート・ユーティリティー http://www.intel.com/p/ja_JP/support/detectページを開き、インテル製ドライバのアップデートをチェック。

「インテル・チップセット・ソフトウェア・インストール・ユーティリティー (チップセット INF Intel 6, 5, 4, 3, 900 Series Chipsets)が現在インストールされていないのでインストール可能」というメッセージと、「Intel(R) ICH8R/ICH9R/ICH10R/DO/5/3400/6 Series SATA RAID Controllerのドライバがアップデート可能」という2つのメッセージが表示される。

後者のSATA RAIDコントローラ(Intel Rapid Storage Technology)用ドライバをダウンロードし、インストール。