web-dev-qa-db-ja.com

マウントされたパーティションにbadblockを追加する

いくつかのファイルを自分のNAS(ShareCenter DNS-320)に移動しようとしましたが、ファイルマネージャーを使用すると何かが表示されます。

Input/Output error

またはマウントされたcifs/smb共有でrsyncを使用する場合

rsync: close failed on "/mnt/nas1/_am-unordered/.long-file-name.mkv.PI2rPM": Input/output error (5)
rsync error: error in file IO (code 11) at receiver.c(856) [receiver=3.1.0]

# mount | grep mnt/nas1

//192.168.x.y/backup on /mnt/nas1 type cifs (rw,relatime,vers=1.0,cache=strict,username=admin,domain=BACKUP,uid=1000,forceuid,gid=0,noforcegid,addr=192.168.x.y,file_mode=0755,dir_mode=0755,nounix,serverino,rsize=61440,wsize=65536,actimeo=1)

NAS内に不良セクタがあると想定しているので、fsckを実行して、RAID-0NAS内に破損したディスクがあるかどうかを確認する必要があります。

これを使用してfun_plugをインストールしました チュートリアル 、これでNASに正常にSSH接続できます。通常はfsck -yvckfC -E fragcheck /dev/sdXを使用して不良セクタをチェックしますマウントされていない単一のディスク。

問題は、badblockを実行して、マウントされたRAID0パーティションの不良ブロックリストに挿入する方法です。 sshサービスはNASのマウントされたパーティションで実行されているため:

# umount /mnt/HD/HD_a2/
  umount: /mnt/HD/HD_a2: device is busy.
    (In some cases useful info about processes that use
     the device is found by lsof(8) or fuser(1))

# lsof /mnt/HD/HD_a2/
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
sh        1963 root    1w   REG    9,1     5191        12 /mnt/HD/HD_a2/ffp.log
sh        1963 root    2w   REG    9,1     5191        12 /mnt/HD/HD_a2/ffp.log
sh        1963 root   10r   REG    9,1     1942 246939802 /mnt/HD/HD_a2/fun_plug
rc        1986 root  txt    REG    9,1   587316 141426950 /mnt/HD/HD_a2/ffp/bin/bash
rc        1986 root  mem    REG    9,1    28892 139854377 /mnt/HD/HD_a2/ffp/lib/ld-uClibc-0.9.33-git.so
rc        1986 root  mem    REG    9,1   260898 139853932 /mnt/HD/HD_a2/ffp/lib/libreadline.so.6.2
 **snip**
sshd      5519 root  mem    REG    9,1    60546 139854375 /mnt/HD/HD_a2/ffp/lib/libgcc_s.so.1
sshd      5519 root  mem    REG    9,1   359940 139854378 /mnt/HD/HD_a2/ffp/lib/libuClibc-0.9.33-git.so

現在のNASのRAID構成は次のとおりです。

# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] 
md1 : active raid0 sda2[0] sdb2[1]
      7808789888 blocks 64k chunks

md0 : active raid1 sdb1[1] sda1[0]
      524224 blocks [2/2] [UU]

unused devices: <none>
2
Kokizzu

badblocksが最初に問題を解決できるということで、あなたは不安定な前提から作業しています。

badblocksが信頼できない修復方法である理由

あなたがハードドライブを使うとき、それは危険なものと新しいセクターを交換することによってあなたから問題を隠すために絶えず最善を尽くします。ハードディスクは、まさにこの目的のためにスペアセクターのプールとともに工場から出荷されます。新しい不良セクタの数がゆっくりと増加する限り、スペアセクタプールは十分にゆっくりと縮小し、ハードドライブが問題なく動作しているように見えます

badblocksが不良セクタを検出できる唯一の方法は、スペアセクタプールが枯渇したときです。これは、しばらくの間劣化していることを意味します。言い換えると、目に見える不良セクタは、ハードディスクがラグの下で非常に多くの問題を一掃したため、ラグがゴツゴツしたように見え始めていることを意味します。

私の知る限り、ハードドライブはこの種のサイレント修正を何十年もの間行ってきました。おそらく初期の頃から [〜#〜] ide [〜#〜] です。私が使用した最後のシステムは、最初から不良セクタの初期セットを公開していました [〜#〜] esdi [〜#〜] および [〜#〜] mfm [〜#〜 ] 1980年代後半にさかのぼるハードディスク。

これは、最新のハードドライブに不良セクタの初期セットが付属しなくなったということではありません。彼らはそうします。不良セクタは工場でマッピングされるため、新しいハードディスクでのbadblocksテストで不良セクタがゼロになります。 (スペアセクタープールのセクターは、不良セクターの代わりにマップされます。)

badblocksスキャンで、新しいドライブまたは保証期間内の不良セクタが見つかった場合は、すぐに交換するのに十分な理由です。

badblocksは、ファイルシステムの不良セクタリストが役立つのに十分な期間にわたって一貫した結果を返す可能性があります。これにより、ドライブ自体の自己修復機能が機能しなくなった時点を超えて、保証対象外または交換不可能なハードドライブを引き続き使用できるようになります。

ただし、badblocksが間隔の狭いテスト間で異なる結果を返す可能性もあります。 (たとえば、2つのテストが1日または1週間間隔で実行されます。)ハードディスクがこのような不良状態になると、ファイルシステムの不良セクタリストは無意味になります。ハードディスクが死にかけています。ファイルシステムの不良セクタリストは、リストが長期間安定している場合にのみ利点を提供します。

結論:まだ読み取り可能な状態で、ハードディスクを交換します。はい、これはおそらくNAS全体を再構築することを意味することを理解していますが、それはRAID-0、別名「 怖いRAID 」のコストです。

より良い解決策:監視

[〜#〜] smart [〜#〜] を介して、スペアセクタープールのサイズを経時的に追跡する以外に、セクタースワップが発生したことはわかりません。一部のハードドライブは、追跡したい場合でもこれを報告しません。また、それを提供するハードドライブは、文字通りの真実ではなく、 真実の修正バージョン のみを報告する場合があります。

そうは言っても、このコマンドはあなたが知る必要があることを教えてくれるかもしれません:

# smartctl -x /dev/sda | grep Realloc
  5 Reallocated_Sector_Ct   PO--CK   200   200   140    -    0
196 Reallocated_Event_Count -O--CK   200   200   000    -    0

smartctl が報告する生の正規化された値は正確に正しくない可能性がありますが、ここでの増加、特に短期間の大幅な増加は常に悪い結果です。

そのコマンドを実行したマシンでは、最後の列がゼロであることに注意してください。これは、レポートが完全に信頼できるとは限らないと私が言うときの意味です。これが「生の」値であり、「200」列は「正規化された」値です。このドライブは、これまで再割り当てがなかったと主張していますが、これはほぼ間違いなく真実ではありません。 「200」は、ハードドライブメーカーが独自に思いついた価値であり、独自の意味を持っています。ハードドライブのブランド間で比較することはできません。また、同じメーカーの他のハードドライブと比較することさえできない場合があります。

しかし、もう一度:これらの値を監視し、それらが突然増加し始めた場合、それは実際には 酸化物レベル で何が起こっているかを教えていないにもかかわらず、悪い兆候です。

smartctlは、RAIDデバイスではなく、個々のハードドライブに関する情報を報告します。ドライブごとの情報を抽出するためにいくつかのタイプのハードウェアRAIDコントローラーと通信する方法を知っていますが、基盤となるデバイスが直接利用可能であるため、ソフトウェアRAIDを特別にサポートする必要はありません。したがって、/dev/sdaではなく、/dev/sdb/dev/md1の両方を個別に監視する必要があります。

smartdsmartctlのコンパニオンツール—この種のバックグラウンド継続監視を実行します。

10
Warren Young