30 November 2018

Clonezillaを用いてAFTハードディスクをクローン複製して換装

2013年1月に使い始めたハードディスクの通電時間が「1万時間」(2013年1月に使用開始してから5年10ヶ月)に達したので、新しいハードディスクにクローン複製して換装した。

故障が増えてくる目安が、通電時間 1万時間 または 利用期間5年、だそうだ。(都市伝説…)

交換前・後のハードディスクは、物理セクタが4096BytesのAFTディスク

ハードディスク全体のコピー(クローン複製)には

・Linuxのddコマンドコピーする
・Clonezillaでコピーする

の2つの方法が考えられる。

ddコマンドは、データが格納されていない部分も含め「全ての領域」をコピーするため、時間がかかる。

Clonezillaを用いれば、このソフトで認識できるフォーマット(NTFSやext4など)であれば、パーティション内の「書込されていないセクター(領域)」のコピーは省略されるため、大幅に時間短縮できるはずだ。

今回、Clonezillaを用いてコピーすることにする。心配されるのは、各パーティションの物理ディスク内での位置が変更されずに忠実にコピーしてくれるか。AFTディスクはアライメントがずれたら使い物にならない。

結果として、この記事に書いたように問題なくコピーされた。

新・旧ハードディスクの仕様

20181130-hdd-st1000dm010-003.jpg

(旧) ST1000DM003(新) ST1000DM010
インターフェースSATA 6 GBytes/secSATA 6 GBytes/sec
読み書き速度Read 210, Write 156 MBytes/secRead 210, Write 156 MBytes/sec
回転数7200 rpm7200 rpm
プラッタ1 枚1 枚
Bytes/セクター4,096 (AFT)4,096 (AFT)
起動電流2.0 A2.0 A
動作時の消費電力5.9 W5.3 W
アイドル時の消費電力3.36 W4.6 W
スリープ時の消費電力0.63 W0.94 W
寿命 ロード/アンロード回数300,000 回300,000 回
筐体寸法101.6 x 146.99 x 20.17101.6 x 146.99 x 19.99

購入価格は、ST1000DM003が5,880円、ST1000DM010が5,180円。どちらも、Amazon.co.jpで購入した。

新・旧ハードディスクの smartデータ

複写先(新しい)ハードディスクの容量が、複写元(旧)ハードディスクより大きいか同量なので、単純コピー可能だ。

(新) ST1000DM010
# smartctl -a /dev/sdb
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-139-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF INFORMATION SECTION ===
Device Model:     ST1000DM010-2EP102
Serial Number:    ZN109DGY
LU WWN Device Id: 5 000c50 0b3855e63
Firmware Version: CC43
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Form Factor:      3.5 inches
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Nov 30 18:10:53 2018 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:  (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: 		(    0) 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: 	 ( 111) minutes.
Conveyance self-test routine
recommended polling time: 	 (   2) minutes.
SCT capabilities: 	       (0x1085)	SCT Status 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   100   100   006    Pre-fail  Always       -       4302
  3 Spin_Up_Time            0x0003   100   100   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       1
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   100   253   045    Pre-fail  Always       -       29
  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       -       1
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   253   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   077   077   040    Old_age   Always       -       23 (Min/Max 18/23)
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       1
194 Temperature_Celsius     0x0022   023   018   000    Old_age   Always       -       23 (0 18 0 0 0)
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       4302
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   253   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       0 (16 203 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       0
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       4302
 
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.
(旧) ST1000DM003
# smartctl -a /dev/sda
smartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-139-generic] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.14 (AF)
Device Model:     ST1000DM003-9YN162
Serial Number:    Z1D2QDFL
LU WWN Device Id: 5 000c50 04ebe26a1
Firmware Version: CC4H
User Capacity:    1,000,204,886,016 bytes [1.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Fri Nov 30 18:10:12 2018 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:  (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: 		(  584) 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: 	 ( 115) minutes.
Conveyance self-test routine
recommended polling time: 	 (   2) minutes.
SCT capabilities: 	       (0x3085)	SCT Status 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   117   099   006    Pre-fail  Always       -       122324984
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   091   091   020    Old_age   Always       -       9463
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   083   060   030    Pre-fail  Always       -       206269022
  9 Power_On_Hours          0x0032   089   089   000    Old_age   Always       -       9933
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   091   091   020    Old_age   Always       -       9453
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   099   000    Old_age   Always       -       1 1 1
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   076   058   045    Old_age   Always       -       24 (Min/Max 23/24)
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       -       105
193 Load_Cycle_Count        0x0032   095   095   000    Old_age   Always       -       10407
194 Temperature_Celsius     0x0022   024   042   000    Old_age   Always       -       24 (0 8 0 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      -       10244h+52m+20.642s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       144036910332771
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       95583838809770
 
SMART Error Log Version: 1
No Errors Logged
 
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      6987         -
# 2  Short offline       Completed without error       00%      5606         -
# 3  Short offline       Completed without error       00%      4467         -
# 4  Short offline       Completed without error       00%      4463         -
# 5  Short offline       Completed without error       00%      3354         -
# 6  Short offline       Completed without error       00%      2212         -
# 7  Short offline       Completed without error       00%      1901         -
# 8  Short offline       Completed without error       00%      1682         -
# 9  Short offline       Completed without error       00%      1621         -
#10  Short offline       Completed without error       00%      1153         -
#11  Short offline       Completed without error       00%       693         -
#12  Short offline       Completed without error       00%       504         -
#13  Short offline       Completed without error       00%        67         -
#14  Short offline       Completed without error       00%         5         -
#15  Short offline       Completed without error       00%         0         -
#16  Short captive       Completed without error       00%         0         -
 
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.

パーティション情報

旧ディスクのパーティション情報。クローン複製後、同様になればAFTディスクとして問題なくコピーできたことになる。 (アライメントがずれていないことになる)

旧・新ディスクのfdiskでの情報
# fdisk -l
Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x1641f37c
 
デバイス   起動      Start 最後から  セクタ   Size Id タイプ
/dev/sda1  *          2048     206847     204800   100M  7 HPFS/NTFS/exFAT
/dev/sda2           206848   84092927   83886080    40G  7 HPFS/NTFS/exFAT
/dev/sda3         84092928  167979007   83886080    40G  7 HPFS/NTFS/exFAT
/dev/sda4        167981054 1953523711 1785542658 851.4G  5 拡張領域
/dev/sda5        167981056  209924095   41943040    20G  7 HPFS/NTFS/exFAT
/dev/sda6        209926144  272840206   62914063    30G 83 Linux
/dev/sda7        272842752  335757311   62914560    30G 83 Linux
/dev/sda8        335759360  398673919   62914560    30G 83 Linux
/dev/sda9        398675968  461590527   62914560    30G 83 Linux
/dev/sda10       461592576  465786879    4194304     2G 82 Linux スワップ / Solaris
/dev/sda11       465788928  528703487   62914560    30G  7 HPFS/NTFS/exFAT
/dev/sda12       528705536  591620095   62914560    30G  7 HPFS/NTFS/exFAT
/dev/sda13       591620328 1011051179  419430852   200G  7 HPFS/NTFS/exFAT
/dev/sda14      1011053232 1430484083  419430852   200G  7 HPFS/NTFS/exFAT
/dev/sda15      1430487040 1953523711  523036672 249.4G 83 Linux
 
Partition 4 does not start on physical sector boundary.
 
 
Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

新ディスクは、未フォーマットのためパーティションが何も表示されない。旧ディスクのパーティション4のアライメントがずれているのは、Gpartedが自動修正したため。データの入っている論理パーティションのアライメントがずれていないので、特に問題なし。

旧ディスクのpartedでの情報
# parted /dev/sda
GNU Parted 3.2
/dev/sda を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(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    167981054s   1953523711s  1785542658s  extended
 5    167981056s   209924095s   41943040s    logical   ntfs
 6    209926144s   272840206s   62914063s    logical   ext4
 7    272842752s   335757311s   62914560s    logical   ext4
 8    335759360s   398673919s   62914560s    logical   ext4
 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

ST1000DM010のベンチマーク

ディスクをフォーマットしない状態で、Ubuntu 16.04でベンチマークを実行

1プラッタなので、内周から外周に転送速度がいちように下がるタイプのグラフとなる。

20181130-st1000dm010-bench-linux100mb.jpg
サンプルサイズを100MBytesに設定したベンチマーク結果

20181130-st1000dm010-bench-linux20mb.jpg
サンプルサイズを20MBytesに設定したベンチマーク結果

このベンチマークソフトのサンプルサイズは、標準で10MBytesだが、安定して測定するためには100MBytes程度に増やしたほうが良い。

次に、Windows 10でディスクをフォーマットした上でベンチマークを実行

このベンチマークは、論理ディスクの先頭付近でしか測定できていないようだ。

20181130-st1000dm010-bench-win.jpg
CrystalDiskmark, Windows 10

20181130-st1000dm010-smart-win.jpg
CrystalDiskinfo, Windows 10

参考として、ST1000DM003のディスク情報

20181130-st1000dm003-smart-win.jpg
CrystalDiskinfo, Windows 10

Windows 10ライセンス認証のための準備

マイクロソフトの公式文書は『ハードウェア構成の変更後に Windows 10 のライセンス認証をもう一度行う』に掲載されているが、ハードディスクの換装はどうなのか、全くわからない。

一部のパーツを交換しても、ライセンス認証は自動的に行われると「噂されている」。

しかし、CPUやシステムがインストールされたハードディスクなどを交換した場合は、ライセンス認証が失効してしまうという「噂もある」。 失効した場合は、マイクロソフトに電話して復旧してもらう必要があるともいう。

ただし、Windows 10の管理者ログインを「マイクロソフト・アカウント」を用いて行っている場合は、ハードウエアの情報がマイクロソフト側に保存されるので、「もう少し広くパーツの交換が自動認識されるという噂」もある。

旧ディスクで起動している時に、新ディスクを未フォーマットで接続し、ベンチマークを実行することで新ディスクの情報が自動登録されないものか… と期待もかけておく。(もちろん、マイクロソフト・アカウントでログオンするのは言うまでもない)

Clonezillaでディスク全体のクローン複製

日本語で書かれた詳細なディスク・クローンの方法は『Clonezilla その17 - ローカルディスクを他のPCのディスクにコピーする』に詳しい。

ClonezillaをUSBデバイスから起動。

disk_to_local_disk モードを選択。

旧ディスクが /dev/sda に、新ディスクが /dev/sdb に認識され、どちらを複写元にするかの選択画面が出る。

20181130-clonezilla01.jpg
新旧ディスクのコピー元選択画面

その後、複写先のディスク選択画面が出るが、残り1つのため選択肢は事実上無い。

さらに、複写元のディスクチェック(fsck)を行うか確認が行われる。

そして、クローン作業のコマンド文が表示され、最終確認を求められる。

20181130-clonezilla02.jpg
複写前の最終確認プロンプト

/usr/bin/ocs-onthefly -g auto -e1 auto -e2 -r -j2 -f sda -t sdb

コマンド引数の説明は『DRBL command reference』に載っている。

-f 複写元デバイス
-t 複写先デバイス

-g auto で GRUBを自動構成

というあたりが重要なので、よく確認しておいて「ENTER」を押す。

さらに、再確認、再々確認のプロンプトがしつこいように表示される。

20181130-clonezilla03.jpg
再確認画面

いよいよコピーが始まる。ddのように単調にコピーし続けるのではなく、パーティションごとにデータ領域を認識しながらコピーされているのがよくわかる。
この画面は、普段のバックアップで見慣れている画面と同じだ。

20181130-clonezilla04.jpg
パーティション複写中画面

約2時間ちょっとで複写完了。

1テラバイトのハードディスクを、読み書き平均速度180MBytes/secで忠実に(完全に)コピーした場合

1 * 1024 * 1024 * 1024 * 1024 / ( 180 * 1024 * 1024 ) / 60 = 97 分
これだけかけて読み込みが行われ、書き込みも 97分掛かるので、合計194分掛かるはず。

2時間ちょっと(120分程度)ということは、3分の2に時間短縮できたわけだ。

複写後、Clonezillaでコマンドプロンプトを表示して、partedで忠実にアライメントを維持した状態でコピーされているか見てみる。

20181130-clonezilla05.jpg
コピー後にパーティションの物理セクタ位置を確認

成功。

ハードディスクを換装し、起動、アクセス確認

UbuntuやWindowsの起動は問題なし。データパーティション内のデータも、ざっと確認した程度内では問題なし。

Windowsのライセンス認証も問題なかった。

20181130-windows-license.jpg