cinereus
-
Posts
485 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Store
Gallery
Bug Reports
Documentation
Landing
Posts posted by cinereus
-
-
On 8/16/2024 at 12:48 PM, hallamnet said:
This is perfect! Thanks a million! Do you think you could do one for it's smaller brother?
Which? The 9 bay? Which style do you like and do you have a front-on photo of the cages your one has?
-
-
On 9/4/2016 at 1:06 AM, RobJ said:
Clear an unRAID array data drive (for the Shrink array wiki page)
Mod note: this script usually takes a much longer than normal time to clear a drive with newer Unraid releases, recommend using the "Remove Drives Then Rebuild Parity" Method or if you really want to clear the disk do it manually.
This script is for use in clearing a drive that you want to remove from the array, while maintaining parity protection. I've added a set of instructions within the Shrink array wiki page for it. It is designed to be as safe as possible, and will not run unless specific conditions are met -
- The drive must be a data drive that is a part of an unRAID array
- It must be a good drive, mounted in the array, capable of every sector being zeroed (no bad sectors)
- The drive must be completely empty, no data at all left on it. This is tested for!
- The drive should have a single root folder named clear-me - exactly 8 characters, 7 lowercase and 1 hyphen. This is tested for!
Because the User.Scripts plugin does not allow interactivity (yet!), some kludges had to be used, one being the clear-me folder, and the other being a 60 second wait before execution to allow the user to abort. I actually like the clear-me kludge, because it means the user cannot possibly make a mistake and lose data. The user *has* to empty the drive first, then add this odd folder.
#!/bin/bash # A script to clear an unRAID array drive. It first checks the drive is completely empty, # except for a marker indicating that the user desires to clear the drive. The marker is # that the drive is completely empty except for a single folder named 'clear-me'. # # Array must be started, and drive mounted. There's no other way to verify it's empty. # Without knowing which file system it's formatted with, I can't mount it. # # Quick way to prep drive: format with ReiserFS, then add 'clear-me' folder. # # 1.0 first draft # 1.1 add logging, improve comments # 1.2 adapt for User.Scripts, extend wait to 60 seconds # 1.3 add progress display; confirm by key (no wait) if standalone; fix logger # 1.4 only add progress display if unRAID version >= 6.2 version="1.4" marker="clear-me" found=0 wait=60 p=${0%%$P} # dirname of program p=${p:0:18} q="/tmp/user.scripts/" echo -e "*** Clear an unRAID array data drive *** v$version\n" # Check if array is started ls /mnt/disk[1-9]* 1>/dev/null 2>/dev/null if [ $? -ne 0 ] then echo "ERROR: Array must be started before using this script" exit fi # Look for array drive to clear n=0 echo -n "Checking all array data drives (may need to spin them up) ... " if [ "$p" == "$q" ] # running in User.Scripts then echo -e "\n" c="<font color=blue>" c0="</font>" else #set color teal c="\x1b[36;01m" c0="\x1b[39;49;00m" fi for d in /mnt/disk[1-9]* do x=`ls -A $d` z=`du -s $d` y=${z:0:1} # echo -e "d:"$d "x:"${x:0:20} "y:"$y "z:"$z # the test for marker and emptiness if [ "$x" == "$marker" -a "$y" == "0" ] then found=1 break fi let n=n+1 done #echo -e "found:"$found "d:"$d "marker:"$marker "z:"$z "n:"$n # No drives found to clear if [ $found == "0" ] then echo -e "\rChecked $n drives, did not find an empty drive ready and marked for clearing!\n" echo "To use this script, the drive must be completely empty first, no files" echo "or folders left on it. Then a single folder should be created on it" echo "with the name 'clear-me', exactly 8 characters, 7 lowercase and 1 hyphen." echo "This script is only for clearing unRAID data drives, in preparation for" echo "removing them from the array. It does not add a Preclear signature." exit fi # check unRAID version v1=`cat /etc/unraid-version` # v1 is 'version="6.2.0-rc5"' (fixme if 6.10.* happens) v2="${v1:9:1}${v1:11:1}" if [[ $v2 -ge 62 ]] then v=" status=progress" else v="" fi #echo -e "v1=$v1 v2=$v2 v=$v\n" # First, warn about the clearing, and give them a chance to abort echo -e "\rFound a marked and empty drive to clear: $c Disk ${d:9} $c0 ( $d ) " echo -e "* Disk ${d:9} will be unmounted first." echo "* Then zeroes will be written to the entire drive." echo "* Parity will be preserved throughout." echo "* Clearing while updating Parity takes a VERY long time!" echo "* The progress of the clearing will not be visible until it's done!" echo "* When complete, Disk ${d:9} will be ready for removal from array." echo -e "* Commands to be executed:\n***** $c umount $d $c0\n***** $c dd bs=1M if=/dev/zero of=/dev/md${d:9} $v $c0\n" if [ "$p" == "$q" ] # running in User.Scripts then echo -e "You have $wait seconds to cancel this script (click the red X, top right)\n" sleep $wait else echo -n "Press ! to proceed. Any other key aborts, with no changes made. " ch="" read -n 1 ch echo -e -n "\r \r" if [ "$ch" != "!" ]; then exit fi fi # Perform the clearing logger -tclear_array_drive "Clear an unRAID array data drive v$version" echo -e "\rUnmounting Disk ${d:9} ..." logger -tclear_array_drive "Unmounting Disk ${d:9} (command: umount $d ) ..." umount $d echo -e "Clearing Disk ${d:9} ..." logger -tclear_array_drive "Clearing Disk ${d:9} (command: dd bs=1M if=/dev/zero of=/dev/md${d:9} $v ) ..." dd bs=1M if=/dev/zero of=/dev/md${d:9} $v #logger -tclear_array_drive "Clearing Disk ${d:9} (command: dd bs=1M if=/dev/zero of=/dev/md${d:9} status=progress count=1000 seek=1000 ) ..." #dd bs=1M if=/dev/zero of=/dev/md${d:9} status=progress count=1000 seek=1000 # Done logger -tclear_array_drive "Clearing Disk ${d:9} is complete" echo -e "\nA message saying \"error writing ... no space left\" is expected, NOT an error.\n" echo -e "Unless errors appeared, the drive is now cleared!" echo -e "Because the drive is now unmountable, the array should be stopped," echo -e "and the drive removed (or reformatted)." exit
The attached zip is 'clear an array drive.zip', containing both the User.Scripts folder and files, but also the script named clear_array_drive (same script) for standalone use. Either extract the files for User.Scripts, or extract clear_array_drive into the root of the flash, and run it from there.
Also attached is 'clear an array drive (test only).zip', for playing with this, testing it. It contains exactly the same scripts, but writing is turned off, so no changes at all will happen. It is designed for those afraid of clearing the wrong thing, or not trusting these scripts yet. You can try it in various conditions, and see what happens, and it will pretend to do the work, but no changes at all will be made.
I do welcome examination by bash shell script experts, to ensure I made no mistakes. It's passed my own testing, but I'm not an expert. Rather, a very frustrated bash user, who lost many hours with the picky syntax! I really don't understand why people like type-less languages! It only *looks* easier.
After a while, you'll be frustrated with the 60 second wait (when run in User Scripts). I did have it at 30 seconds, but decided 60 was better for new users, for now. I'll add interactivity later, for standalone command line use. It also really needs a way to provide progress info while it's clearing. I have ideas for that.
The included 'clear_array_drive' script can now be run at the command line within any unRAID v6, and possibly unRAID v5, but is not tested there. (Procedures for removing a drive are different in v5.) Progress display is only available in 6.2 or later. In 6.1 or earlier, it's done when it's done.
Update 1.3 - add display of progress; confirm by key '!' (no wait) if standalone; fix logger; add a bit of color
Really appreciate the tip on 'status=progress', looks pretty good. Lots of numbers presented, the ones of interest are the second and the last.
Update 1.4 - make progress display conditional for 6.2 or later; hopefully now, the script can be run in any v6, possibly v5
Is this still the correct script to user in 2024?
-
12 hours ago, itimpi said:
They do not. All that shows is that you have created the 2 directories mount1 and mount2 that are to be used for mount points. They do not show that anything has been mounted at those mount points.
I can browse all the files at those mount points as expected.
-
8 hours ago, JorgeB said:
If that was the case a reboot would bring it back.
Yes but is there no way without having to reboot?
-
22 minutes ago, itimpi said:
This will mean that you have not successfully mounted something at the mount point.
You could use the 'df' command to check what you have mounted.
df showing correct mounting:
mount1: 2147483648 400776772 1746706876 19% /mnt/addons/mount1 mount2: 29466624 29264220 202404 100% /mnt/addons/mount2
-
So I have found the issue
I have mounted my dropbox to /mnt/addons/dropbox
This works fine. I can see the files there.
However, when I copy the files to /mnt/user/dropbox it seems to write to rootfs for some reason. I used to do this before without any issues. I don't know where on rootfs it is writing nor why.
How should I correctly mount my dropbox so that I can copy it to a /mnt/user/ share?
-
6 minutes ago, itimpi said:
It appears that one of the mount points you specify is not actually mounting any storage (local or remote) and is thus writing instead to RAM, and when this fills up crashing the server.
If this is a mount point that you are specifying then I suggest you put it under /mnt/addons. The /mnt/disks and /mnt/remotes locations are ideally ones that the UD plugin is expected to manage.
Sorry please could you let me know which one?
And what would be writing to RAM? Writes to that mount point or writes from that mountpoint or what?
-
2 minutes ago, JorgeB said:
Yes, any mount point that is not on actual storage will write to RAM, filling up rootfs
So I should mount to /mnt/user/remotes instead?
How does that work? I thought the point of a mount is no data is actually stored there, you're just reading it off the webserver where it's actually stored?
-
4 minutes ago, JorgeB said:
rootfs is full, reboot to fix it, but if it happens again you need to find out what is causing it.
Thanks. What exactly is rootfs?
Could it be to do with the mountpoints?
-
I have been mounting lots of things top /mnt/remotes/
Never had any issue with this. Is it bad practice? If so where should I mount things to instead? I've removed the mounts now but array is still offline and unresponsive.
Is it safe to try to reboot?
-
-
Is it something to do with the dropbox mount? Or rootfs being 100%
-
I can't view diagnostics or normal system log. I can still see files via ssh but it says the array isn't started.
In ssh I get this error all the time:
_zshz_update_datafile:print:57: write error: no space left on device
-
-
So the command I used was
ethtool -s eth0 speed 100 duplex full autoneg on
How do I make it autoneg to any supported speed?
-
1 hour ago, JorgeB said:
I remember an issue with the Realtek 2.5 USB NICs were you could force advertising 2.5GbE with
ethtool -s eth0 autoneg on advertise 0x80000000002f
But not sure the value would be for gigabit, or if it would even work
eth1 can connect at 10 G so it's not a firmware issue. I might have used a ethtool command earlier to force 100. How do I set it back?
-
24 minutes ago, JorgeB said:
Supported link modes: 100baseT/Full 1000baseT/Full 10000baseT/Full Advertised link modes: 100baseT/Full
The NIC is only advertising 100Mbit support, eth1 advertises all, does that one link at gigabit?
Could that be a settings issue? Is there a way to reset the card so it tries all speeds?
-
I've now changed everything several times and am still getting this issue. I was convinced it must be a cable issue but now even after changing the cables I still get the same problem.
I have now tried two different motherboards, three different network cards and three different cables. Every time it won't connect at 1000 Mbps only 100 Mbps.
Please ignore all issues with eth1, I know what the issue is there.
-
What happens if you make writes to the array while the zeroing script is running? Is that okay?
-
The plugin is saying my drive contents are being emulated (i.e. disk is buggered) even though unraid itself doesn't say this:
What's going on? Do I need to be worried about this disk?
-
6 hours ago, JonathanM said:
My best guess is that the "switch" inside the router is cheap. Maybe get a quality 5 port switch and only use a single connection to the router, all other devices get to use the good switch. Decent 5 port GB switches are dirt cheap, won't hurt to try.
Router works fine with 1 Gb on all ports to other devices and same issue with only the unraid server connected to router.
-
Sorry this is a much better photo if anyone would be so kind:
Case manufacturer and model is JCMD 12s4.
-
Any chance of a JMCD 12s4?
- 1
[Plugin] Tailscale
in Plugin Support
Posted
What is the cli command for authenticating?