[SOLVED] Double Data Drive Failure During Parity Check (Dual Parity)


Recommended Posts

20 minutes ago, Froberg said:

It's probably going to happen eventually. Hoping transfer speeds go up too in that case.

I have an IT friend in his late 70's who just retired. He said when they got 10MB drum (Yes DRUM) disks when he first started in the mid 60s it blew freakin people's minds. I always joke about 1PB thumb drives with him. I sent him a pic of my array at 206TB and he was floored. He is convinced in my lifetime I will see the PetaByte drives hanging on the shelves of stores some day.

 

Some day people will laugh at this very post and they'll be storing crap on their .25 EB array. 😭

 

We have come so far is such a short time. Kind of scary and exciting to see what the next 50 years will bring!

 

image.png.621f0a6fedc8223d75867b2f02f29b88.png

image.png.13696fdb561439cc77936cfa05edeadc.png

image.png.c89bc1991d419f1086a161f4aeb77a8d.png

Edited by falconexe
Link to comment
1 hour ago, Froberg said:

Your age is showing! My first system was a 443mhz! (To be fair, did start with windows 3.1 in school, but yeah)

In Denmark we call laptops that are heavy for "luggables". :D This seems to fall in to that category.

I’m laying in bed super sick right now. Couldn’t sleep here in the USA, and saw your comment. I should have said started “as a kid” not “IT”. I’m an 80s baby. 😂

 

I started in IT professionally at 16. My first experience with a computer was in the fourth grade at 8 years old. I believe it was an Apple II or some such. We were quite poor growing up and someone gave us this super old Tandy. I messed with it for a few years. 

 

The first actual computer we could*nt afford was a Dell Dimension XPS B933 around 2000. My loving Dad took out a ridiculous $6K loan and bought it for us so we could be successful in school. I'm the one who ordered it on the phone and they laughed at me when I asked for these specs. They had to send me over the business division LOL. We also ended up getting some rediculous monitor and Altec Lansing 5.1 speakers. Oh, and a flight stick (My Dad Insisted).

 

  • Pentium 3 933Mhz
  • 512MB RAM
  • 60GB Hard Drive (I believe that was the size...Yeah wasn’t cheap back then)
  • And 1 Nvidia Hercules 3D Prophet II Ultra (AGP 4x, 64 MB) for playing Soldier of Fortune (The last thing that got my Dad to say Yes 🤣)
  • Note: None of the pics below were my actual stuff. Just nostalgic references.

 

4177588724_06e1641d3e_b.jpg20190930_022129139_iOS_large.jpg?v=157667b6d73f4-43c0-4194-815b-1f19e9c3392f

 

It was like Christmas morning when those big boxes arrived. I set it up myself and my Dad was amazed.

 

The next morning, I got a wool blanket 😳 and took the entire thing apart piece by piece to “study” the components and their locations. My Dad walks out and almost kills me. I told him not to worry, “I know what I’m doing!” I got the thing put back together and everything was perfect. Luckily no death by static.

 

That was the beginning of my IT career. Thanks Dad. Love You!

Edited by falconexe
Link to comment
On 1/7/2020 at 2:16 AM, falconexe said:

...I wrote some custom scripts to pull the entire drive structure with and without folders, just so I have a complete log of what specifically is on each of these drives, in the event I actually have to restore from backups. I usually run these scripts prior to parity checks and they can be disk specific or the entire array...

If you'd be willing to share these scripts they sound really useful. 

 

I understand they'd have to be tweaked to work on another system.

Link to comment
5 hours ago, dabl said:

If you'd be willing to share these scripts they sound really useful. 

 

I understand they'd have to be tweaked to work on another system.

Yeah I'm happy to share. They are just "simple" batch scripts that run on Windows. I'll sanitize my code and provide some templates soon. Please stand by...

Edited by falconexe
Link to comment

So here is the first script (attached). It is dynamic in that it prompts the user for a disk number. Note disks 1-9 are single digit, while 10+ are double digits. Once you enter the disk you want, the script will pull both a raw file listing with paths, and a metadata listing with folder structure to your desired location. Once completed, the script will automatically open the completed audits.

 

This is coded in Windows batch so you will need to right click and select "edit" on the batch file. You will want to change out "MassEffect" with the name of your UNRAID server along with your server details. You will also need to change your destination path accordingly. Let me know if you run into any issues.

 

If this works for you, I have 2 more scripts that do this same work for the entire array with ALL DISKS, and ALL SHARES. If you are interested in these, please let me know.

 

Note: This script requires that each disk be shared on your array. I keep mine shared, but hidden so anyone else on my network would not see/know they are there. I also have my security per disk set to Read Only.

 

image.png.c774aa377a22c5ace48c364255f9d836.png

 

image.thumb.png.7cfcaa69b0351350160c8e8628fbb49d.png

image.thumb.png.783c2bc4396b2b592d6646066cf79c6b.png

image.thumb.png.90a3975e969ed72d7e1a81c73c32680a.png

 

 

 

 

 

UNRAID_Audit_Single_Disk.bat

Edited by falconexe
Link to comment
18 hours ago, falconexe said:

 

The next morning, I got a wool blanket 😳 and took the entire thing apart piece by piece to “study” the components and their locations. My Dad walks out and almost kills me. I told him not to worry, “I know what I’m doing!” I got the thing put back together and everything was perfect. Luckily no death by static.

 

That was the beginning of my IT career. Thanks Dad. Love You!

 

Sounds like my origin story, too, almost all of it. My computer was far shittier though and came with Windows ME. I remember one time fiddling with screen refresh rates, not knowing how they worked, and being unable to use the computer. My mom was NOT happy, lmao. Figured it out, because that's how you learn, but man was I worried because it was so expensive.

My second one was an Athlon XP 1800 I believe. Massive upgrade!

 

Link to comment
39 minutes ago, Froberg said:

 

Sounds like my origin story, too, almost all of it. My computer was far shittier though and came with Windows ME. I remember one time fiddling with screen refresh rates, not knowing how they worked, and being unable to use the computer. My mom was NOT happy, lmao. Figured it out, because that's how you learn, but man was I worried because it was so expensive.

My second one was an Athlon XP 1800 I believe. Massive upgrade!

 

Ha Ha. I remember those days when the screen goes black and you basically crapped yourself because you were messing with refresh rates/unsupported resolutions. Good times.

Link to comment
On 1/16/2020 at 6:09 PM, falconexe said:

So here is the first script (attached). It is dynamic in that it prompts the user for a disk number. Note disks 1-9 are single digit, while 10+ are double digits. Once you enter the disk you want, the script will pull both a raw file listing with paths, and a metadata listing with folder structure to your desired location. Once completed, the script will automatically open the completed audits.

 

This is coded in Windows batch so you will need to right click and select "edit" on the batch file. You will want to change out "MassEffect" with the name of your UNRAID server along with your server details. You will also need to change your destination path accordingly. Let me know if you run into any issues.

 

If this works for you, I have 2 more scripts that do this same work for the entire array with ALL DISKS, and ALL SHARES. If you are interested in these, please let me know.

 

Note: This script requires that each disk be shared on your array. I keep mine shared, but hidden so anyone else on my network would not see/know they are there. I also have my security per disk set to Read Only.

...

UNRAID_Audit_Single_Disk.bat 1.65 kB · 1 download

Awesome thanks!

 

Yep, works great after making the required changes. 

 

Would absolutely be interested in the 2 scripts that do the same with all disks and shares.

Link to comment
2 hours ago, dabl said:

Awesome thanks!

 

Yep, works great after making the required changes. 

 

Would absolutely be interested in the 2 scripts that do the same with all disks and shares.

Sure. Glad these worked for you and that they helped someone else. I'm working on the templates for the other 2 scripts now.

Link to comment

Chiming in, but wouldn't it be easier to transpose to other servers and stuff if it was like that? (file attached)

 

Batch is my go to for anything I can't feel arsed to do more than twice, and also ended up making some that write VBS scripts that it can then inject variables into and call to do things like download files from some locations to others, do version checking of packages I made myself and tons of stupid stuff like that...

Yeah, some of my batch scripts almost look like viruses sometimes, dropping dozens of .vbs files, downloading archives, popping python scripts to decrypt/encrypt stuff, ect.

Some nearing the 20megabytes mark... oof.

 

 

All in all blabering, just saying that declaring a bunch of variables right away avoids having to track down through your scripts what you need to modify or not if it's all presented to you at the very top of it.

UNRAID_Audit_Single_Disk.bat

Edited by Keexrean
Link to comment
1 hour ago, Keexrean said:

Chiming in, but wouldn't it be easier to transpose to other servers and stuff if it was like that? (file attached)

 

Batch is my go to for anything I can't feel arsed to do more than twice, and also ended up making some that write VBS scripts that it can then inject variables into and call to do things like download files from some locations to others, do version checking of packages I made myself and tons of stupid stuff like that...

Yeah, some of my batch scripts almost look like viruses sometimes, dropping dozens of .vbs files, downloading archives, popping python scripts to decrypt/encrypt stuff, ect.

Some nearing the 20megabytes mark... oof.

 

 

All in all blabering, just saying that declaring a bunch of variables right away avoids having to track down through your scripts what you need to modify or not if it's all presented to you at the very top of it.

UNRAID_Audit_Single_Disk.bat 1.92 kB · 1 download

Sure you can do that. This was just a quick and dirty script I wrote for myself that I was sharing.  I was fine with Copy and Replace for the server name. It was never meant for the masses. I have some extremely complex and dynamic versions of these scripts that I will keep to myself. You and I are seasoned veterans in batch it appears, and most people area not. I wanted to keep it simple for everyone else. Anyone can take this to the next level and put in loops and dynamic variables at their pleasure. I welcome the sharing of code. If anyone improves upon my original work, please do share on this thread. I would love to see it. I'm just trying to help out... These scripts have saved my butt on numerous occasions. I would actually like to see UNRAID put in similar scripts natively that save off EVERY SINGLE FILE in a log before a parity check starts. That would be really cool. There are some plugins out there that you can have stuff kick off before and after a parity check, but they never worked consistently for me. As a result, I do this manual method with my batch scripts on Windows.

Link to comment

Do note in no mean I was "criticizing" your work or underrating what you can do, I was already convinced you were able to do the little adjustments I made to your script.

It was more of just a little introduction as to not barge in like a basic scriptkiddie who just wanted to gather internet points, and made a small PSA about:

"how to not get lost when you have to make some revisions to a mile long batch without causing a mile long frontal lobe tumor growth", and as not to come empty handed, actually applied said PSA to your script for if it would be useful to someone.

I just thought it was simpler to present everything that has/can be personalized at the very top of the script for anywho isn't at all seasoned in batch to just modify and save without having to look further into the commands or what they do, and thus risk a typo.

 

As for your whishes... MMMMMMHHH I might think of something.

There is a plugin that serves me well and that you probably know already, called "User Scripts" (I know, original), I do suppose you tried it, but so far I never had issues or misshapps with it.

Though indeed it doesn't handles natively before/after parity check triggers, just array starts/stops and basic crontab jobs. True that a pre/post parity-check trigger would be great, among others.

Though, if you have scheduled parity checks, and roughly know how long it takes, make a custom cronjob said to run at the time the paritycheck is set to run minus Xtime (X being like time for the script to run + 50% to account for eventual server business), account for the time the parity check usually takes and add Y as Y being a +10 or 20% (would say it's quite conservative still), that cronjob on the same periodicity as the parity checks, and it should work fine I guess?

 

Fun note: The most serviable script I have setup into it, though the simplest one, is a freakin loadkeys command... because it's an instant rage trigger to me whenever I switch to the server's console on my KVM, and discover I can't type and have to input a loooong password with the wrong keyboard layout.

 

 

Link to comment
2 hours ago, falconexe said:

Sure. Glad these worked for you and that they helped someone else. I'm working on the templates for the other 2 scripts now.

@dabl Here is the ALL SHARES version of the script.  I made this one completely dynamic @Keexrean

 

You will need to set each share name variable that you have on your server. If you go past the 3 I show here, just make a new numbered variable, copy and paste the code block that does the work, and change the variable name in that block. You will also want to set the other hard-coded variables for your server (just like before, but now they are at the top). Since we are using variables, you only have set them once.

 

Example: If you wanted to add a 4th share for "Media" you would add the following variable up top and code in the middle:

 

Variable:

SET Share04=Media

 

Code:

Echo Performing Audit on Share: %Share04%...
DIR  /s /b \\%ServerName%\%Share04%>>"%OutputPath%%FileNameRaw%"
DIR  /s \\%ServerName%\%Share04%>>"%OutputPath%%FileNameMeta%"

 

Note: The first share creates (and overwrites if they exists) the output files. Shares 2+ will APPEND to these files.

 

This will take a very long time to run since it is documenting all contents on all shares you set. Let me know if this works for you.

UNRAID_Audit_All_Shares.bat

Link to comment
17 minutes ago, Keexrean said:

Do note in no mean I was "criticizing" your work or underrating what you can do, I was already convinced you were able to do the little adjustments I made to your script.

It was more of just a little introduction as to not barge in like a basic scriptkiddie who just wanted to gather internet points, and made a small PSA

 

 

None taken and no worries. I went ahead an made a "simple" dynamic version of the ALL SHARES script.

 

I may have 1 thing that you can jump on if you have the desire in my ALL DISKS script. I don't have the time right now to do this PART myself, but if you have existing code and/or want to tackle it, by all means, it would be appreciated. I'll ping you once I post it and let you know what I need...

Link to comment

Haha nice! Though you haven't put the "flavor" values in variables (Server description, Parity Type and Drives), how naughty of you to force newbies to be slapped by these values that are nearing pornography!

 

Sure! Though I can't make any promise that I'll dive into it right away, depending of the sheer size of your script!

 

I miiiight eventually get to do something "stupid" in my janky ways.

 

For the share script: may have it work with a companion file, in which you just put the name of every share in on different line, and have the batch count the lines, store the names as variables with an incrementing loop until +1 , and then loop-run a script section by incrementing each time until it reaches the line-count +1.

 

And for the disk script, depending on how it's made, have it simply ask how many disks you have when it starts, and off it goes.

Or, smarter, since your disks are shared (even if hidden probably -I hope) have the script check if the destination exists, incrementing on the disk# number each time until it errors out, so it auto-counts how many disks you have itself.

 

 

Also, thinking about it, I may have something that could help you ease the logging/managing of such a massive array.

I have that in my SMB extra config:

[Procyon_ArrayWholeView]
      path = /mnt
      comment = sysview
     browseable = yes
        valid users = rootshare
        write list = rootshare
        vfs objects =
        guest ok = no
        read only = no

I just felt that it was more comfy than making disk shares, but that's imhu.

  • Thanks 1
Link to comment
13 minutes ago, falconexe said:

OK, and here is the ALL DISKS script with dynamic variables. Change the variables up top as usual. You can remove the extra disks of your array is smaller as needed. I have 28 data disks, so the code goes that far. Let me know if you have any questions.

UNRAID_Audit_All_Disks.bat 5.89 kB · 0 downloads

@Keexrean OK so here is where I could use some help due to lack of time.

 

I would like to code this fully dynamically with a loop that goes through the number of disks based on a "TotalDisks" variable. So instead of me repeating blocks of code (1 per disk), I would like this to use a SINGLE BLOCK of code, that loops once per disk.

 

Variables Needed: 

SET TotalDisks=28

 

Code to Loop Through 28 Times:

 

Echo Performing Audit on Disk: #...
DIR  /s /b \\%ServerName%\disk#>"%OutputPath%%FileNameRaw%"
DIR  /s \\%ServerName%\disk#>"%OutputPath%%FileNameMeta%"

 

The trick is that on the second iteration of the loop and so on to the upper bound of the variable (2-28), the code would need to append the file like below (in RED):

 

Echo Performing Audit on Disk: #...
DIR  /s /b \\%ServerName%\disk#>>"%OutputPath%%FileNameRaw%"
DIR  /s \\%ServerName%\disk#>>"%OutputPath%%FileNameMeta%"

 

Also, the user feedback message would need to be dynamic and refer to the current disk number (Current Loop Iteration):

Echo Performing Audit on Disk: #...

 

If you OR ANYONE ELSE has this already written, or would like to solve this, I would be super appreciative! Otherwise, I'll need to find some time to write this myself. Either way, I'm sure we'll get it figured out and we can upload it to this thread to help some people out. Thanks!

Edited by falconexe
Link to comment
14 minutes ago, Keexrean said:

Also, thinking about it, I may have something that could help you ease the logging/managing of such a massive array.

I have that in my SMB extra config:


[Procyon_ArrayWholeView]
      path = /mnt
      comment = sysview
     browseable = yes
        valid users = rootshare
        write list = rootshare
        vfs objects =
        guest ok = no
        read only = no

I just felt that it was more comfy than making disk shares, but that's imhu.

Thanks! I coulda used that info a while back before getting carpal tunnel setting each of the 28 disks one-by-one... 🤣

Edited by falconexe
Link to comment
1 minute ago, Keexrean said:

Well please don't change your config too fast, I'm actually nose diving into your Disk script :D

Worse case scenario, changing the path isn't so hard though anyway ;)

 👍 Excited to see what you come up with. I'd like to avoid having to reference an external txt file with a list of disk names. I want this to be a once stop shop ha ha.

Link to comment
13 minutes ago, Keexrean said:

While I'm janky-typing that, does it needs to also audit cache drives?

In my mind, the cache is a SHARE, not an array data drive, so I have it in my Share script. However, technically it is a drive, so I could see it being in the Drive script.

 

If it is not too hard, yeah throw it in the end of the script. Or you can make 2 versions, one with just true Data Drives, and one with Data and Cache. However you would like. Thanks again for taking some time to solve this!

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.