Jump to content

cinereus

Members
  • Posts

    485
  • Joined

  • Last visited

Posts posted by cinereus

  1. 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?

  2. On 7/27/2024 at 5:42 PM, cinereus said:

    Sorry this is a much better photo if anyone would be so kind:

     

    image.png.097463b3224ec6f5b479a7e624dd0436.png

     

    Case manufacturer and model is JCMD 12s4.

    I'm sure someone can do better but I ended up making my own icons for JCMD 12S4:

     

     

     

     

    JMCD 12S4.png

    JMCD 12S4  tiny vertical.png

    JMCD 12S4  tiny.png

    • Like 3
  3. 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

    clear_an_array_drive.zip 4.37 kB · 2,177 downloads

    clear_an_array_drive_test_only.zip 4.61 kB · 214 downloads

    Is this still the correct script to user in 2024?

  4. 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.

  5. 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

     

  6. 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?

  7. 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?

  8. 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?

  9. 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?

  10. 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? 

  11. 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?

  12. 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.

    fs-diagnostics-20240813-1009.zip

  13. The plugin is saying my drive contents are being emulated (i.e. disk is buggered) even though unraid itself doesn't say this:

     

    image.png.e16c3cc02cea8ef77fc733c4afc351e1.png

     

    image.png.ae7f33bacd1c20f77833e2f0190efafa.png

     

    What's going on? Do I need to be worried about this disk?

  14. 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. 

×
×
  • Create New...