How to check disks status in SynetoOS 4

Written By Christian Castagna (Administrator)

Updated at May 20th, 2025

→ Applies to: SynetoOS 4.x

 

Step 1. Connect to SynetoOS appliance via SSH as admin

ssh admin@<your_ip_address_or_hostname>

 

Step 2. Change into Solaris shell (in case you're directed to an unsupported shell)

un sh

 

Step 3. Remove this file 

rm ~admin/ .bash_profile

After running the command, you need to perform logout and login again

 

Step 4. Get root privileges

sudo su -

 

Step 5. Check pool status

zpool status

EXAMPLE

pool: hybrid
    id: 2909731745170149149
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Wed May 14 01:01:49 2025
        2.67T scanned at 117M/s, 2.64T issued at 116M/s, 3.77T total
        1.31T resilvered, 70.15% done, 0 days 02:49:15 to go
config:

        NAME                         STATE     READ WRITE CKSUM
        hybrid                       DEGRADED     0     0     0
          mirror-0                   DEGRADED     0     0     0
            c0t5000C500E2D7E32Bd0    ONLINE       0     0     0
            spare-1                  FAULTED      0     0     0
              c0t5000C500CEB66C17d0  FAULTED      0     0     0  too many errors
              c0t5000C500CEB4390Fd0  ONLINE       0     0     0  
          mirror-1                   ONLINE       0     0     0
            c0t5000C500DDEBF05Bd0    ONLINE       0     0     0
            c0t5000C500CEE6FD63d0    ONLINE       0     0     0
        logs    
          mirror-2                   ONLINE       0     0     0
            c0t5002538E19C2C994d0    ONLINE       0     0     0
            c0t5002538E19C2C96Bd0    ONLINE       0     0     0
        cache
          c0t55CD2E4151DAF0D0d0      ONLINE       0     0     0
        spares
          c0t5000C500CEB4390Fd0      INUSE     currently in use

errors: No known data errors

 

Step 6. Check iostat error

iostat -nE |grep Error

EXAMPLE

root@syneto:/var/storage/support# iostat -nE | grep Errors
c1t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
c2t0d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
c2t1d0           Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
c0t5000C5009A63A607d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
c0t5000C5009A4EEBCBd0 Soft Errors: 0 Hard Errors: 56 Transport Errors: 1 
c0t5000C5009A3C8BBFd0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0 
c0t5000C500C254BF03d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0

 

IMPORTANT

If the counters from the iostat -nE command show a value of zero for each device, it will be necessary to perform the Step 7 (optional).
If the counters from the iostat -nE command show a value different from 0 for any device, it will be necessary to perform Step 8 (optional)

 

Step 7 (optional). Clear pool error (replace <pool_name> with the correct information)

zpool clear <pool_name>

IMPORTANT

This command should be run outside of working hours.
The system will not be blocked, but cleaning operations may slow it down.

 

Step 8 (optional).  Create /tmp/run_smart_tests.sh file

vi /tmp/run_smart_tests.sh

IMPORTANT
Make sure to copy and paste the exact lines below.

#!/bin/bash

output_file="/tmp/smart_results.txt"
> "$output_file"

RED=$(tput setaf 1)
YELLOW=$(tput setaf 3)
GREEN=$(tput setaf 2)
RESET=$(tput sgr0)

echo "Running SMART tests on disks..."

for disk in $(smartctl --scan | awk '{print $1}'); do
    echo "SMART analysis for $disk..."
    
    # Full SMART acquisition
    smart_output=$(smartctl -a "$disk")
    echo "$smart_output" >> "$output_file"

    # Data extraction
    serial=$(echo "$smart_output" | grep -i "Serial number" | awk -F: '{print $2}' | xargs)
    health=$(echo "$smart_output" | grep -i "SMART Health Status" | awk -F: '{print $2}' | xargs)
    defects=$(echo "$smart_output" | grep -i "grown defect list" | awk '{print $NF}')
    nonmedium=$(echo "$smart_output" | grep -i "Non-medium error count" | awk '{print $NF}')
    read_errors=$(echo "$smart_output" | grep -i "^read:" | awk '{print $2}')
    write_errors=$(echo "$smart_output" | grep -i "^write:" | awk '{print $2}')
    
    # Estimated wear via load-unload cycles
    specified=$(echo "$smart_output" | grep -i "Specified load-unload" | awk '{print $NF}')
    accumulated=$(echo "$smart_output" | grep -i "Accumulated load-unload" | awk '{print $NF}')
    
    if [[ "$specified" =~ ^[0-9]+$ ]] && [[ "$accumulated" =~ ^[0-9]+$ ]]; then
        usage_percent=$((100 * accumulated / specified))
        life_left=$((100 - usage_percent))
    else
        usage_percent="N/A"
        life_left="N/A"
    fi

    # Color based on remaining life
    color=$GREEN
    if [[ "$life_left" =~ ^[0-9]+$ ]]; then
        if [ "$life_left" -lt 75 ]; then
            color=$RED
        elif [ "$life_left" -lt 90 ]; then
            color=$YELLOW
        fi
    fi

    echo -e "${color}Disk: $disk (Serial: ${serial:-N/A})${RESET}"
    echo -e "  - SMART health status: ${health:-N/A}"
    echo -e "  - Estimated remaining life: ${life_left}%"
    echo -e "  - Grown Defect List: ${defects:-N/A}"
    echo -e "  - Read errors: ${read_errors:-N/A}"
    echo -e "  - Write errors: ${write_errors:-N/A}"
    echo -e "  - Non-medium errors: ${nonmedium:-N/A}"
    echo ""
done

 

Step 9 (optional).  Run run_smart_tests.sh

chmod +x run_smart_tests.sh
./run_smart_tests.sh

The result will be saved in the file /tmp/smart_results.txt.

Only in case of error, contact Syneto support to proceed with disk replacement.