Linuxでディスクのエラーや不良セクタのチェックと修正をする方法

提供: Ubuntu入門
移動: 案内検索
スポンサーリンク

Linuxのストレージのエラーや不良セクタのチェックと修正を行う方法を説明します。このまとめは、3分程度の時間で読むことができます。

読み方

fdisk
えふでぃすく
hdparm
えいちでぃーぱーむ
badblocks
ばっどぶろっくす
e2fsck
いーつーえふえすしーけー
fsck
えふえすしーけー

概要

このドキュメントでは、以下の項目を扱います。

  • ディスクの調査
  • 不良セクタの検査
  • 不良セクタを無視させる
  • 1コマンドですべてやる

ディスクを調べる

まず、パソコン・サーバに接続されているストレージを調べる必要があります。調べる方法は、いくらでもありますが、以下に示す通り fdisk -lで確認してみました。

$ sudo fdisk -l
 
Disk /dev/sda: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 2AC55118-1B27-461F-9B7A-27EFC54E5C45
 
Device     Start        End    Sectors  Size Type
/dev/sdb1   2048 3907029134 3907027087  1.8T Linux filesystem
 
Disk /dev/sdc: 37.3 GiB, 40020664320 bytes, 78165360 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0006588c
 
Device     Boot    Start      End  Sectors  Size Id Type
/dev/sdc1  *        2048 74260479 74258432 35.4G 83 Linux
/dev/sdc2       74262526 78163967  3901442  1.9G  5 Extended
/dev/sdc5       74262528 78163967  3901440  1.9G 82 Linux swap / Solaris

ストレージのモデルを調べる

hdparm コマンドで、ストレージのモデルを調べることができます。 モデル名を見て、調査の対象として正しいかどうか確認します。

$ sudo hdparm -i /dev/sdb1 |fgrep Model
 Model=Hitachi HDS5C3020ALA632, FwRev=ML6OA5C0, SerialNo=ZZZZZZZZZZZZZZ

不良セクタを調べる

ストレージに不良セクタがないか調べるには、badblocks コマンドを利用します。

$ sudo badblocks -v -s /dev/sdb1 | tee /tmp/badblocks.txt
Checking blocks 0 to 1953513542
Checking for bad blocks (read-only test):   3.96% done, 10:24 elapsed. (0/0/0 errors)

ディスクのサイズに比例して時間がかかります。 2TB なら4時間ぐらいか見ておいたほうが良いでしょう。

badblocks のコマンドラインオプションは、以下の通りです。

Usage: badblocks [-b block_size] [-i input_file] [-o output_file] [-svwnf]
       [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks]
       [-p num_passes] [-t test_pattern [-t test_pattern [...]]]
       device [last_block [first_block]]

不良セクタのマーキングを行う

もし、不良セクタが見つかったなら、マークをしておきます。マークされたブロックは、システムによって無視されます。

e2fsck -l /tmp/badblocks.txt /dev/sdb1

e2fsck のコマンドラインオプションは、以下の通りです。

Usage: e2fsck [-panyrcdfvtDFV] [-b superblock] [-B blocksize]
                [-I inode_buffer_blocks] [-P process_inode_size]
                [-l|-L bad_blocks_file] [-C fd] [-j external_journal]
                [-E extended-options] device
 
緊急時ヘルプ:
 -p                   自動修復 (no questions)
 -n                   ファイルシステムに変更を加えない
 -y                   質問にすべて"yes"と答える
 -c                   バッドブロックを調べリストに加える
 -f                   ファイルシステムが正常でも強制的に実行する
 -v                   Be verbose
 -b superblock        Use alternative superblock
 -B blocksize         Force blocksize when looking for superblock
 -j external_journal  Set location of the external journal
 -l bad_blocks_file   Add to badblocks list
 -L bad_blocks_file   Set badblocks list

1回のコマンドですべてのステップを実行する方法

sudo fsck -t -y -f -c /dev/sdb1

まとめ

  • fdisk でストレージのリストを表示できる
  • hdparm でストレージのモデルが調べられる
  • badblocks で不良セクタをチェックできる
  • e2fsck で不良セクタをマークし、無視できる
  • fsck でまとめて調査と修理ができる

関連項目



スポンサーリンク