Here is the exact sequence of commands and outputs that put the array back "online" in degraded mode with 3 out of 4 drives. Please skim this thread to see if your failure is the same corrupt superblock journal data type of failure that I had before proceeding. And use these commands at your own risk. I am not an expert. This worked for me. I am not responsible for and data loss that may occur because of the improper (or proper) use of these commands.
Stopped the array:
Then created new. It is my understanding that the --assume-clean tag is critical to keep your data intact. And you'll need to type your array in the exact sequence that the mdadm --detail /dev/md127 output showed, including where the "missing drive" is supposed to be in the array.
root@Bern:~# mdadm --create /dev/md0 --assume-clean --level=5 --verbose --raid-devices=4 missing /dev/sdb /dev/sdd /dev/sde
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: /dev/sdb appears to be part of a raid array:
level=raid5 devices=4 ctime=Wed Mar 16 19:00:56 2022
mdadm: /dev/sdd appears to be part of a raid array:
level=raid5 devices=4 ctime=Wed Mar 16 19:00:56 2022
mdadm: /dev/sde appears to be part of a raid array:
level=raid5 devices=4 ctime=Wed Mar 16 19:00:56 2022
mdadm: size set to 5860390400K
mdadm: automatically enabling write-intent bitmap on large array
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Display More
Then we run the fsck -v /dev/md0 command. You could include a -y after the -verbose(-v) to automatically say yes to all, but I was paranoid at this point so I hit enter for each repair instead.
root@Bern:~# fsck -v /dev/md0
fsck from util-linux 2.36.1
e2fsck 1.46.6 (1-Feb-2023)
Storage: recovering journal
Storage contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry '.recycle' in /TimeMachine (193986561) is a link to directory /lost+found/#193986563 (193986563).
Clear<y>? yes
Entry 'LucasM-b▒M-^Ys iMac.sparsebundle' in /TimeMachine (193986561) is a link to directory /lost+found/#193986567 (193986567).
Clear<y>? yes
Entry '650A7B67-28EC-5652-BB53-DC8F69CCF873_2024-01-11-200103.sparsebundle' in /lost+found/#193986563/lucas (193986564) is a link to directory /lost+found/#193986580 (193986580).
Clear<y>? yes
Entry 'LucasM-b▒M-^Ys iMac.sparsebundle' in /lost+found/#193986563/lucas (193986564) is a link to directory /lost+found/#193986595 (193986595).
Clear<y>? yes
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Inode 193986562 ref count is 1, should be 2. Fix<y>? yes
Inode 193986565 ref count is 1, should be 2. Fix<y>? yes
Inode 193986566 ref count is 1, should be 2. Fix<y>? yes
Inode 193986601 ref count is 1, should be 2. Fix<y>? yes
Inode 193986602 ref count is 1, should be 2. Fix<y>? yes
Inode 193986615 ref count is 1, should be 2. Fix<y>? yes
Inode 193986621 ref count is 1, should be 2. Fix<y>? yes
Inode 193986627 ref count is 1, should be 2. Fix<y>? yes
Inode 193986633 ref count is 1, should be 2. Fix<y>? yes
Inode 193986639 ref count is 1, should be 2. Fix<y>? yes
Inode 193986645 ref count is 1, should be 2. Fix<y>? yes
Inode 193986651 ref count is 1, should be 2. Fix<y>? yes
Inode 193986657 ref count is 1, should be 2. Fix<y>? yes
Inode 193986663 ref count is 1, should be 2. Fix<y>? yes
Inode 193986669 ref count is 1, should be 2. Fix<y>? yes
Inode 193986675 ref count is 1, should be 2. Fix<y>? yes
Inode 193986681 ref count is 1, should be 2. Fix<y>? yes
Inode 193986687 ref count is 1, should be 2. Fix<y>? yes
Inode 193986693 ref count is 1, should be 2. Fix<y>? yes
Inode 193986699 ref count is 1, should be 2. Fix<y>? yes
Inode 193986705 ref count is 1, should be 2. Fix<y>? yes
Inode 193986711 ref count is 1, should be 2. Fix<y>? yes
Inode 193986717 ref count is 1, should be 2. Fix<y>? yes
Inode 193986723 ref count is 1, should be 2. Fix<y>? yes
Inode 193986729 ref count is 1, should be 2. Fix<y>? yes
Inode 193986735 ref count is 1, should be 2. Fix<y>? yes
Inode 193986741 ref count is 1, should be 2. Fix<y>? yes
Inode 193986747 ref count is 1, should be 2. Fix<y>? yes
Inode 193986753 ref count is 1, should be 2. Fix<y>? yes
Inode 193986759 ref count is 1, should be 2. Fix<y>? yes
Inode 193986767 ref count is 1, should be 2. Fix<y>? yes
Pass 5: Checking group summary information
Free blocks count wrong (1870595508, counted=1870294285).
Fix<y>? yes
Free inodes count wrong (273481934, counted=273481919).
Fix<y>? yes
Storage: ***** FILE SYSTEM WAS MODIFIED *****
1224513 inodes used (0.45%, out of 274706432)
8222 non-contiguous files (0.7%)
160 non-contiguous directories (0.0%)
# of inodes with ind/dind/tind blocks: 0/0/0
Extent depth histogram: 1219489/5006/10
2524998515 blocks used (57.45%, out of 4395292800)
0 bad blocks
704 large files
1159481 regular files
65023 directories
0 character device files
0 block device files
0 fifos
31 links
0 symbolic links (0 fast symbolic links)
0 sockets
------------
1224535 files
root@Bern:~#
root@Bern:~# fsck -v /dev/md0
fsck from util-linux 2.36.1
e2fsck 1.46.6 (1-Feb-2023)
Storage: clean, 1224513/274706432 files, 2524998515/4395292800 blocks
Display More
Then we mount the file system with the mount -a
Thanks very much to geaves Krisbee and votdev ! Hopes this helps someone in the future!