14ディスクのZFSraidz2プールでUbuntuサーバーをセットアップしています。
約80%の時間、再起動すると、プールが劣化し、2つのディスクが障害としてマークされます。障害が発生したドライブは常に同じであるとは限りませんが、常に正確に2つのドライブです。例えば:
$ Sudo zpool status
pool: tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: resilvered 4K in 0h0m with 0 errors on Sun Sep 30 23:08:51 2018
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz2-0 DEGRADED 0 0 0
sde ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sda ONLINE 0 0 0
sdh ONLINE 0 0 0
11521322863231878081 FAULTED 0 0 0 was /dev/sdf1
15273938560620494453 FAULTED 0 0 0 was /dev/sdg1
sdb ONLINE 0 0 0
sdi ONLINE 0 0 0
sdj ONLINE 0 0 0
sdk ONLINE 0 0 0
sdl ONLINE 0 0 0
sdm ONLINE 0 0 0
sdn ONLINE 0 0 0
errors: No known data errors
プールをエクスポートおよび再インポートでき、ディスクに障害が発生しなくなりました。例えば:
$ Sudo zpool export tank
$ Sudo zpool import tank
$ Sudo zpool status
pool: tank
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: resilvered 4K in 0h0m with 0 errors on Sun Sep 30 23:08:51 2018
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sde ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sda ONLINE 0 0 0
sdh ONLINE 0 0 0
sdg ONLINE 0 0 1
sdf ONLINE 0 0 0
sdb ONLINE 0 0 0
sdi ONLINE 0 0 0
sdj ONLINE 0 0 0
sdk ONLINE 0 0 0
sdl ONLINE 0 0 0
sdm ONLINE 0 0 0
sdn ONLINE 0 0 0
errors: No known data errors
使用されているHBAは別のサーバーで正常に動作しています。
再起動時にこれらの障害のあるドライブを回避するために他にできることはありますか?スワップインできる別のHBAがあります。
プール構成には/ dev/sdX名を使用しないでください。
CDROMまたはUSBドライブの挿入など、SCSI列挙を変更すると、デバイス名が変更され、エラーが発生する可能性があります。
/ dev/disk/by-id名を使用するオプションがあります。
zpool export tank
とzpool import -d /dev/disk/by-id tank
でこれを行います