マシントラブルからのHDD救出


2022年 06月 30日

自分のマシンがZoomミーティング中に突然動かなくなった。ミーティングの方は、他のマシンに切り替えて行い、ミーティング後に自分のマシンを再起動したら起動できなかった。日常の作業の殆どを行っているマシンなので、作業が止まってしまう。ヤバイ。

マシンのケースには、2011年に使用開始とあり、そろそろヤバイかと思っていた頃でもあり、やはりヤバかった。BIOSに入って色々調べたが、動きがおかしいので復旧は早々と諦めることにした。なお、OSにはUbuntu/Linuxが入っていた。

トラブルになったとき、ハードのことを気にしてはいけない。ハードは買えばなんとかなるのだが、それまでに溜めたファイル、ソフトが取り出せるかどうかが非常に重要だ。これがなくなってしまうと、損害が大きく、立ち直れなくなる。

ということで、マシンの蓋を開けて、HDDを取り出したり付け替えなどするためにドライバーを用意した。普通は長いドライバーで良いのだが、狭い場所もあるのでコンパクトなラチェットドライバーが便利である。

ハードディスクの内容を確認した。ただし、壊れたマシンを使っての確認はできないので、自由に使えそうなマシンを見つけて、そちらにファイルを移動する。そして、古い古いマシンは廃棄しかないだろうから部品取りをした。

新しいマシンは、新規購入ではなく、部屋で最近計算サーバ的に利用していたメニーコアCPUであるThreadRipperの載ったやや富豪なマシンである。購入時はWindowsマシンだったが、アスクルの倉庫在庫最適化の検証を行うマシン(計算サーバ)として利用するにあたって、OSをUbuntu/Linuxに入替えていたものである。それもあって、とりあえず、このマシンを自分のマシンにしてしまった訳である。

新マシン、赤が追加メモリ、その間にCPU(AMD ThreadRipper)

そうと決めたら、旧マシンのメモリが、新マシンでも使用できると分かったので、旧マシンから32GB(8GBx4枚、赤色)を抜き、新しいマシンに挿し、64GBのマシンにした。AI関連でちょっとヘビーな計算をやらせようと思うと、16コア/32スレッド/64GB程度が欲しくなる。実際、そのくらいないと、AIの有名なサンプルデータの前処理さえできなかったりする。

メモリカード1枚で8GBで、メモリのタイプなどがカードに印刷されているので、今までのメモリと同タイプか確認してから挿入する。メモリの挿入には、かなりの力が必要になる。きちんと入っていないと、認識されず使われないので、BIOSを起動してメモリを確認する。

BIOS起動キーは、電源投入直後に画面に表示される。多くの場合「F2」であるが「Del」だったりすることもある。無事BIOSに入れると以下の画面が出てきた。BIOSは、昔はCUIだったが、今はGUIになっている。

その他にも色々なページがあるが、温度や電圧の確認が重要だ。

今回は単なるHDDの追加なので、その他はあまり気にする必要がなく、ブート設定は現状のままで、追加したHDDからの起動はしないようにした。

その他に、旧マシンにはGeForce GTX 1050というGPUがついていたので、それを新マシンに移した。最新のGPUに比較すると性能は1/10以下であるが、AIといっても進化計算が多いので、CPUのコア数やメモリはできるだけ欲しいが、GPUは殆ど使用しない。このあたりは、将棋の藤井竜王や渡辺名人が使っている将棋AIマシンと同じ感じである。

あとは、旧マシンのHDDを新マシンに取り付けて、中身が大丈夫か確認した。旧マシンでは2台のHDDを使っていたが、ちゃんと認識するので、とりあえず手動でmountして内容が大丈夫そうなことも確認した。

旧HDDは2012年と2016年の製造だったので、このまま使い続けるのは怖いので、新マシンに新たに内蔵HDDを追加し、中身を全部移すことにした。新規に2TのHDDを入手した。新旧どのHDDもSEAGATEのBarraCudaだった。古いのはタイ製だったが、新しいのは簡体字で中国産品と書かれていた。

SEAGATE BARRACUDA (左)2012年製500GB (右)2022年製2TB
左側の黒フラットケーブル(芋づる)が電源、
右側がATAのシリアルケーブル

新しい2TのHDDはパーティションを切らずに使うようにフォーマットした。そしてマシンにどのように認識されているかを確認し、起動時に自動マウントされるようにした。なお、新マシンにはSSDが最初からついていて、そこには手を付けない。

フォーマットが済んだら、コマンドで新ハードディスクの状況を確認した。
まずfdiskで−lだけで全デバイスの状況が表示される。以下は、/dev/sda* と指定した場合の表示である。デバイスを省略すると、全部を表示してくれる。

$ sudo fdisk -l /dev/sda*
ディスク /dev/sda: 1.84 TiB, 2000398934016 バイト, 3907029168 セクタ
Disk model: ST2000DM008-2FR1
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 3B1DF5C6-FFB1-4698-B187-744A3DAEC40E

デバイス   開始位置   最後から     セクタ サイズ タイプ
/dev/sda1      2048 3907028991 3907026944   1.8T Linux ファイルシステム

ディスクは/dev/sdaであり、セクタはのデバイスは/dev/sda1となっている。

fstabの記述のために、今ではデバイスのID(UUID)が必要なので、blkidコマンドで確認する。

$ sudo blkid /dev/sda*
/dev/sda: PTUUID="3b1df5c6-ffb1-4698-b187-744a3daec40e" PTTYPE="gpt"
/dev/sda1: LABEL="HDD2T2022" UUID="ec3d50de-00d2-40ad-a01f-c2a55533d98d" TYPE="ext4" PARTUUID="a878ccef-a0f5-49e9-aac9-9e6a2260a559"

以上の情報から、/etc/fstabにマウント情報を記述しておくと、起動時に自動的にマウントしてくれる。一時的にマウントするもの、たとえば旧HDDは、手動でマウントした。

fstabの記述の第1フィールドにデバイス名を書き、それが指定したマウントポイントにマウントされるのであったが、第1フィールドがUUIDに変わっていた.。UUID(Universally Unique Identifier)とは、デバイスを一意に識別するもので、デバイスを別の場所に付け替えても変わらない、デバイス固有の識別子である。確かにこれで柔軟性が格段に向上するが、この書き方をしたのは初めてである。ときどきトラブルが起きると勉強になる。

マウントポイントは/mntの下にfujiとして作った。それ以外に、2つの旧HDD用にbk1, bk2も作った。旧HDDにはブート用のパーティションもあったが、それは無視した。
他にも、ブロックデバイス関連のコマンドが用意されているが省略。

ここまでできれば、cpコマンドで一気に新しいHDDにコピーするだけ。なお、タイムスタンプやオーナーが変わらないように注意されたい。

といことで、無事HDDのファイル移行が完了した。

旧HDDは、万一のためにしばらくは保管し、そのうち廃棄処分の予定。
マシンが壊れた時、ソフト・ファイルを死守しよう。間違っても、HDDのフォーマットをしてはいけない。
なお、このような作業は、自己責任で行うこと。