#!/bin/bash set -e # ---------------------------------------------------------------------------------------------- # --------------------------- ZFS ARC & Memory Snapshot for Unraid ----------------------------- # ---------------------------------------------------------------------------------------------- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../Master.conf" source "$SCRIPT_DIR/../common.sh" parse_args "$@" # STATUS MODE if [[ "$SHOW_STATUS" == true ]]; then echo echo "==================================================" echo " โ„น๏ธ ZFS + MEMORY SNAPSHOT STATUS" echo "--------------------------------------------------" echo " ๐Ÿ“Š Mode: Read-only diagnostics" echo " ๐Ÿงช Dry Run: $DRY_RUN" echo "==================================================" exit 0 fi # HEADER echo echo "============================================================" echo " ๐Ÿ“Š ZFS ARC + MEMORY SNAPSHOT" echo "------------------------------------------------------------" echo " ๐Ÿ•’ Time: $(date)" echo " ๐Ÿงช Dry Run: $DRY_RUN" echo "============================================================" log "โ„น๏ธ Collecting ZFS ARC + memory statistics" # FUNCTIONS show_zfs_arc() { echo echo "==================== ZFS ARC STATS ====================" if [[ ! -r /proc/spl/kstat/zfs/arcstats ]]; then warn "๐Ÿ”ด ZFS arcstats not available on this system" return fi grep -iE '^(c|size|hits|misses|arc_meta_used|demand_metadata_misses|mru_ghost_metadata|mfu_ghost_metadata)' \ /proc/spl/kstat/zfs/arcstats 2>/dev/null || warn "๐ŸŸก Unable to read ARC stats" } show_memory_status() { echo echo "==================== MEMORY STATUS ====================" if command -v free >/dev/null 2>&1; then free -h | awk ' NR==1 {print $0} /Mem:/ {print $0} /Swap:/ {print $0}' else warn "๐Ÿ”ด free command not available" fi } # EXECUTION START_TIME=$(date +%s) if [[ "$DRY_RUN" == true ]]; then warn "๐Ÿงช Dry run enabled - no system data collected" else show_zfs_arc show_memory_status fi END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) # SUMMARY echo echo "============================================================" echo " ๐Ÿ“Š SNAPSHOT SUMMARY" echo "------------------------------------------------------------" echo " โฑ Duration: ${DURATION}s" echo " ๐Ÿ“ก Mode: READ-ONLY" echo " ๐Ÿง  Source: ZFS ARC + system memory" echo "============================================================" info "โ„น๏ธ Snapshot complete"