Ubuntu Serverのシステムディスクを交換した話

2013-02-20(Wed) Server

SNS周りで騒いでいましたが

TwitterやFacebookでちらほら騒いでたサーバーが突如死んでしまう話の詳細です。

ちなみに以下からの話で解決していないので、その後に激安サーバーを頼んで本体ごと交換です。(orzですがwktkでもありますが)

事の顛末

数日前から朝起きてサーバーにアクセスするとつながらない現象が起きまして、具体的に言うとpingはいけるけどSSHやsambaにアクセス出来ない自体。httpdはいけたかな? 原因を調べるためにsyslogをあさってみるとこんなログが

Feb 14 04:15:13 snd-server kernel: [13435376.360155] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Feb 14 04:15:13 snd-server kernel: [13435376.362205] ata1.00: configured for UDMA/100
Feb 14 04:15:13 snd-server kernel: [13435376.362235] ata1: EH complete
Feb 14 04:15:13 snd-server kernel: [13435376.373667] ata1.00: exception Emask 0x50 SAct 0x1 SErr 0x280900 action 0x6 frozen
Feb 14 04:15:13 snd-server kernel: [13435376.377788] ata1.00: irq_stat 0x08000000, interface fatal error
Feb 14 04:15:13 snd-server kernel: [13435376.381824] ata1: SError: { UnrecovData HostInt 10B8B BadCRC }
Feb 14 04:15:13 snd-server kernel: [13435376.385850] ata1.00: failed command: READ FPDMA QUEUED
Feb 14 04:15:13 snd-server kernel: [13435376.389835] ata1.00: cmd 60/08:00:e0:75:b1/01:00:06:00:00/40 tag 0 ncq 135168 in
Feb 14 04:15:13 snd-server kernel: [13435376.389839]          res 40/00:00:e0:75:b1/00:00:06:00:00/40 Emask 0x50 (ATA bus error)
Feb 14 04:15:13 snd-server kernel: [13435376.397881] ata1.00: status: { DRDY }
Feb 14 04:15:13 snd-server kernel: [13435376.401894] ata1: hard resetting link

なにこれ怖い><

"ata.00: failed command: READ FPDMA QUEUED"や"ata: SError: { UnrecovData HostInt 10B8B BadCRC }"の部分でぐぐって見ると、

  • HDDが故障してるとか
  • SATAケーブルが不良じゃないの?とか
  • SATAコントローラーがやばいんじゃないのとか

で、ata1の対象がどうやらシステムディスクのことらしく、smatrctlをみてみると値はこんな感じ。

smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-37-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.9
Device Model:     ST3250624AS
Serial Number:    9ND0KGPT
Firmware Version: 3.AHH
User Capacity:    250,059,350,016 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Sun Feb 17 10:59:29 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   114   093   006    Pre-fail  Always       -       75940274
  3 Spin_Up_Time            0x0002   098   098   000    Old_age   Always       -       0
  4 Start_Stop_Count        0x0033   098   098   020    Pre-fail  Always       -       2545
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   086   060   030    Pre-fail  Always       -       408672563
  9 Power_On_Hours          0x0032   075   075   000    Old_age   Always       -       22305
10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
12 Power_Cycle_Count       0x0033   098   098   020    Pre-fail  Always       -       2461
187 Reported_Uncorrect      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   060   050   045    Old_age   Always       -       40 (Min/Max 31/40)
194 Temperature_Celsius     0x0022   040   050   000    Old_age   Always       -       40 (0 9 0 0)
195 Hardware_ECC_Recovered  0x001a   071   050   000    Old_age   Always       -       196972326
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   160   000    Old_age   Always       -       979
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 Data_Address_Mark_Errs  0x0032   100   253   000    Old_age   Always       -       0

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       Aborted by host               90%      9897         -
# 2  Short offline       Aborted by host               90%      9893         -
# 3  Short offline       Completed without error       00%        12         -
# 4  Short offline       Completed without error       00%         2         -
# 5  Short offline       Aborted by host               90%      9897         -

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.

正直見方がよくわかっていないので値が入ってる部分をみてみると、いろいろ飛び抜けてるようで(199 UDMA_CRC_Error_Count あたりかな)、エラー起こしすぎてアクセスできなくなるのかなと考えまして。HDD不良なんだろうと結論づけました。(この時までは・・・)

ちょうど忙しい時期になってるのもあり、サーバーにアクセス出来ないと開発しているソフトのコードも見るのが大変になるので急遽対策をすることにして、システムディスクを交換することにしました。以下作業ログ

用意したもの

  • 新品のHDD: 今回は元のシステムディスクが250GBで、新しいものを500GBにしました。
WD Green 3.5inch Intellipower 500GB 64MBキャッシュ SATA3.0WD5000AZRX
B007F8AN34

ASIN : B007F8AN34

Amazonで詳しく見る
Powered by Amazon Quick Affiliate(JP)
  • ディスクイメージを保存するHDD: 出来れば高速なインターフェースで繋げれるものがいいです。今回はNASに使ってるUSB3.0のHDDを利用。(もちろんディスクイメージを保存できるだけの要領も確保)
  • Ubuntu 12.10のLiveUSB: 厳密に言うとddなどできるならどういう環境でも良さそうです。今回はUbuntu12.10に入っている以下のソフトを利用
    • Gnome-Disks: GUIでディスクの情報を見たり、初期化、ディスクイメージの作成とリストアができるすぐれものです。できなかったらdd使えばいいやと思ってましたが問題なかったです。
    • Gparted: 250GB->500GBにサイズアップしたので、パーティションのサイズも変更しました。
  • 移行中に邪魔などされない時間: ディスククローンに3時間, パーティションサイズ変更に3時間ほど掛かりましたので、昼間からやったほうがいいかも。
  • 移行中にドラぶってもおれない心: パーティションサイズ変更でトラブったらどうしようと思っても気にしない!
  • 移行中の時間がもったいないので暇つぶしのもの: 別の作業してましたが気になって全然はかどらなかった(´・ω・`)

作業手順

写真などありません。途中に入る写真はSNSにアップした風景です・・・

物理的に新HDDなどつないでおきます

サーバーらしくしたかったので念願のマウンターをゲットしてみました。

[pe2-image src="http://lh6.ggpht.com/-V6k7hlnLhYI/USRvUE7J1EI/AAAAAAAADlI/ug0CzeYx_yQ/s144-c/2013-02-17%25252014.19.45.jpg" href="https://picasaweb.google.com/100906785915765419544/HrSanoNetBlog#5846920606943663170" caption="2013-02-17 14.19.45.jpg" type="image" alt="2013-02-17 14.19.45.jpg" ]

MARSHAL DOOS ブラックMAL-1535B/S
B002TOJZ1U

ASIN : B002TOJZ1U

Amazonで詳しく見る
Powered by Amazon Quick Affiliate(JP)

Ubuntu 12.10のLiveUSBからLive起動します

Biosなどでブート手順を変える必要が有る場合は注意しましょう。

新品HDD、ディスクイメージを一時保存するHDDをつないでマウントなどしておきます

GUIなのでmountなどは必要ないはずです。GUIからやるのが嫌な場合は(以下略

Gnome-Disksを管理者権限で立ち上げます

端末で以下のように立ち上げました。

sudo gnome-disks

権限を持ってないとコピーできなかったのでやってみましたが、正しい手順かは知りません。

Gnome-Disksから旧HDDのディスクイメージを作成します

この時に、swap領域がマウントされている場合は作成できないため、マウントを解除しておきましょう。

Gnome-Disksから新HDDへ旧HDDのディスクイメージのリストアを行います

Gpartedから、パーティションのサイズ変更を行います

[pe2-image src="http://lh4.ggpht.com/-Yvnu2H2tGsw/USRvUIb3eeI/AAAAAAAADlM/5DQkuUKpjMA/s144-c/2013-02-19%25252017.42.27.jpg" href="https://picasaweb.google.com/100906785915765419544/HrSanoNetBlog#5846920607886178786" caption="2013-02-19 17.42.27.jpg" type="image" alt="2013-02-19 17.42.27.jpg" ]

GUIでできるので比較的に簡単に行えます。サイズ変更に伴う問題はもちろんありますが祈るように行いましょう。

250GBで運用していたときは /を12GB, swapを12GB, 残りを/homeに当てていましたが、500GBにしたので、/を30GB, swapは12GBのまま, 残りを/homeに当てました。

この時にUUIDの変更はありませんでしたので、/etc/fstabの編集は行なっていません。

起動するか確認

BiosなどでブートするHDDを選択して起動させましょう。無事にログイン画面など出て来ましたらお疲れ様でした。

お疲れ様でした

これで終わらず

今回のケースはこれで解決したとはいえなくて、その後システムディスクのバックアップを行ってる最中に電源が落ちる現象が出てしました。HDDの問題ではなかった模様です。

システムディスクに負荷のかかる時に起きるのと、USBのHDDを対象としたバックアップは特に問題なく、どうやらM/BのSATAコントローラーがまずい状況なのではと考えましてM/B周りをごっそり変えることになりそうなので結局本体ごと交換することにしました。

というわけで続きます。激安サーバー買ってみた話です。