Raspberry Pi 4は、再起動後にRAID10ドライブの半分をマウント解除します。

Raspberry Pi 4は、再起動後にRAID10ドライブの半分をマウント解除します。

現状はこんな感じです。私は自分のコンピュータでDebian 10を実行していて、自分のコンピュータのポートに接続されている4つのUSBドライブのRAID10設定を組み合わせたいと思います。コマンドを使用して構成を設定しました。

sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 --verbose

これはうまく設定されています。その後、/etc/fstabと/etc/mdadm/mdadm.confが正しく作成されたことを確認しました。 initramfsも更新したことを確認しました。ただし、再起動後に設定が正しく設定されていることを確認し、次の出力を見て衝撃を受けました。

:/# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Mon Jun  8 18:36:15 2020
        Raid Level : raid10
        Array Size : 120762368 (115.17 GiB 123.66 GB)
     Used Dev Size : 60381184 (57.58 GiB 61.83 GB)
      Raid Devices : 4
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Wed Jun 10 16:38:00 2020
             State : clean, degraded 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : DietPi:0  (local to host DietPi)
              UUID : 9d59030f:f7d48652:ffdd4067:ae45a372
            Events : 95

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync set-A   /dev/sda1
       -       0        0        1      removed
       2       8       33        2      active sync set-A   /dev/sdc1
       -       0        0        3      removed

出力は次のとおりですdmesg | grep md

root@DietPi:/home/dietpi# dmesg | grep md
[    0.177100] unimac-mdio unimac-mdio.-19: DMA mask not set
[    0.233442] unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus at 0x(ptrval)
[    0.787409] systemd[1]: System time before build time, advancing clock.
[    0.878411] systemd[1]: systemd 241 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
[    0.878665] systemd[1]: Detected architecture arm.
[    0.881996] systemd[1]: Set hostname to <DietPi>.
[    1.114070] random: systemd: uninitialized urandom read (16 bytes read)
[    1.199454] random: systemd: uninitialized urandom read (16 bytes read)
[    1.199616] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    1.199700] random: systemd: uninitialized urandom read (16 bytes read)
[    1.199797] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    1.200074] systemd[1]: Listening on Journal Socket (/dev/log).
[    1.200195] systemd[1]: Listening on initctl Compatibility Named Pipe.
[    1.200238] systemd[1]: Reached target Paths.
[    1.202088] systemd[1]: Created slice system-getty.slice.
[    1.202474] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    1.697530] systemd-journald[118]: Received request to flush runtime journal from PID 1
[    4.541769] md/raid10:md0: active with 2 out of 4 devices
[    4.541809] md0: detected capacity change from 0 to 123660664832
[    4.719675] EXT4-fs (md0): warning: mounting fs with errors, running e2fsck is recommended
[    4.767908] EXT4-fs (md0): mounted filesystem with ordered data mode. Opts: (null)
[   35.595357] md/raid10:md127: not clean -- starting background reconstruction
[   35.595363] md/raid10:md127: active with 2 out of 4 devices
[   35.595403] md127: detected capacity change from 0 to 123662761984
[  305.123227] EXT4-fs (md0): error count since last fsck: 102
[  305.123239] EXT4-fs (md0): initial error at time 1591721842: htree_dirblock_to_tree:995: inode 1311120
[  305.123255] EXT4-fs (md0): last error at time 1591721842: ext4_empty_dir:2724: inode 1311118
[ 1539.368517] md127: detected capacity change from 123662761984 to 0
[ 1539.368531] md: md127 stopped.

マウント解除されたドライブの半分と同じです。私はこれがスーパーブロックの問題かもしれないと思いますが、わかりません。ここで何か抜けましたか?それとも一歩も逃したのですか?または、再起動するたびに問題が解決しないように、この問題を解決するコマンドを入力できますか?

答え1

Raspbianを使用している人の多くは、起動時にハードウェアドライバを初期化するLinuxカーネルと、組み立てるドライブを検索するmdadm-raidの間に競合状態があるようです。これは、1行を含む/boot/cmdline.txtファイルにカーネル遅延パラメータを追加することで偽造できます。同じ行に「rootdelay = 3」を追加してください。

関連情報