Data integrity concerns TRAID
Posted: 27 Apr 2024, 22:11
I just purchased a F4-423 and I have been testing with TOS 5, TOS 6, and Unraid.
Overall, I think TOS 6 best fits my desired usage. I like the fact pretty much all the drive maintenance can be done on a live system. And I really don''t have need of the extensive pool of docker containers available for unraid.
But I did couple of drive recovery tests with TRAID. For this I used a 8TB, 4TB, 1TB and 500GB. All by the 8TB drive are old drives. Because I want to test what happens when my drives are getting old. Before testing I went through a huge stack of old drives, testing them in TOS 5. I had one more 750 GB drive that tested as good, but I knew that one in particular would fail a long SMART test.
Test 1. I started loading data into the volume as quickly as possible via an NFS connection. It was from an older network across 1 Gbps hardware, so the upload maxed out at 80 MB/s and most of the time ran slower because of the read time of the data on my laptop. Still while it was hitting a maximum speed I opened up in the NAS web interface Jellyfish 120 Mbps. That played very smoothly, allowed me to seek back and forth. I have no idea of it was reading it from disk or memory cache, but it was quite good performance. At that point I opened the bay drive and removed the 4TB drive. Everything continued to function normally, and the NAS started beeping to let me know there had been a drive failure. After I got tired of the beeping, I reinsert the drive and began the repair.
Test 2. Next morning, everything is recovered. I decided I didn't need to stress test it again for this test. I opened the bay door and removed the 500 GB drive. Again the beeping starts. This time I swap in the 750 GB drive. As I am curious will it detect the drive is bad? How will the process for increasing size work if it doesn't? I click the button for repair but after a short period the dialog finishes, no errors and the volume remains in degraded state. I try again, this time watching closely on the screen. I notice it complaining about a missing raid 1.2 super block on a drive I didn't just replace... I try again, same error. I swap back in the 500 GB drive. Now it complains about a missing raid 1.2 super block on the 500 GB drive. Keep in mind these messages only appear on the console. There is no logging in the UI to tell me anything is going wrong.
I tried upgrading to TOS 6, to see if that could recover the volume. No luck. At this point my only option would be to recreate the volume and restore the full array from backup.
Now, I think I know what is going wrong. TNAS is essentially building a RAID0 volume with the 4TB, 1TB, and 500GB drive, and then it uses that RAID0 volume for a RAID1 volume with the 8TB. Now the order it assembles those drives in the RAID0 is probably potluck. So when it test for the superblock whichever volume comes first in that RAID0 is the one that generates the error. Now either the superblock was never restored on the 4TB, or it was auto erased by the failure. And the superblock is also missing from the 500 GB and 750 GB. In theory I could probably restore these super blocks manually, with a little research on the correct procedure. But I am highly concerned this doesn't just work. I'm even more concerned the error seems to be completely missed by the TRAID logging.
If I can make TOS 6 pass my recovery tests consistently, it will will be my preferred choice. But if TRAID doesn't work reliably, for drive recovery, what is the point?
Overall, I think TOS 6 best fits my desired usage. I like the fact pretty much all the drive maintenance can be done on a live system. And I really don''t have need of the extensive pool of docker containers available for unraid.
But I did couple of drive recovery tests with TRAID. For this I used a 8TB, 4TB, 1TB and 500GB. All by the 8TB drive are old drives. Because I want to test what happens when my drives are getting old. Before testing I went through a huge stack of old drives, testing them in TOS 5. I had one more 750 GB drive that tested as good, but I knew that one in particular would fail a long SMART test.
Test 1. I started loading data into the volume as quickly as possible via an NFS connection. It was from an older network across 1 Gbps hardware, so the upload maxed out at 80 MB/s and most of the time ran slower because of the read time of the data on my laptop. Still while it was hitting a maximum speed I opened up in the NAS web interface Jellyfish 120 Mbps. That played very smoothly, allowed me to seek back and forth. I have no idea of it was reading it from disk or memory cache, but it was quite good performance. At that point I opened the bay drive and removed the 4TB drive. Everything continued to function normally, and the NAS started beeping to let me know there had been a drive failure. After I got tired of the beeping, I reinsert the drive and began the repair.
Test 2. Next morning, everything is recovered. I decided I didn't need to stress test it again for this test. I opened the bay door and removed the 500 GB drive. Again the beeping starts. This time I swap in the 750 GB drive. As I am curious will it detect the drive is bad? How will the process for increasing size work if it doesn't? I click the button for repair but after a short period the dialog finishes, no errors and the volume remains in degraded state. I try again, this time watching closely on the screen. I notice it complaining about a missing raid 1.2 super block on a drive I didn't just replace... I try again, same error. I swap back in the 500 GB drive. Now it complains about a missing raid 1.2 super block on the 500 GB drive. Keep in mind these messages only appear on the console. There is no logging in the UI to tell me anything is going wrong.
I tried upgrading to TOS 6, to see if that could recover the volume. No luck. At this point my only option would be to recreate the volume and restore the full array from backup.
Now, I think I know what is going wrong. TNAS is essentially building a RAID0 volume with the 4TB, 1TB, and 500GB drive, and then it uses that RAID0 volume for a RAID1 volume with the 8TB. Now the order it assembles those drives in the RAID0 is probably potluck. So when it test for the superblock whichever volume comes first in that RAID0 is the one that generates the error. Now either the superblock was never restored on the 4TB, or it was auto erased by the failure. And the superblock is also missing from the 500 GB and 750 GB. In theory I could probably restore these super blocks manually, with a little research on the correct procedure. But I am highly concerned this doesn't just work. I'm even more concerned the error seems to be completely missed by the TRAID logging.
If I can make TOS 6 pass my recovery tests consistently, it will will be my preferred choice. But if TRAID doesn't work reliably, for drive recovery, what is the point?