How-To Który proces lub usługa wzbudza dysk twardy z uśpienia

Dyskusja w 'HDD Spin Down (Tryb w gotowości)' rozpoczęta przez użytkownika Silas Mariusz, 19 Lipiec 2013.

Ładowanie...
Status tematu:
Brak możliwości dodawania odpowiedzi.
  1. Silas Mariusz
    Online

    Silas Mariusz SysOp Administrator

    Dołączył:
    5 Kwiecień 2008
    Wiadomości:
    6 079
    Miejscowość:
    Nowy Sącz
    Local Time:
    08:16
    Oceny:
    +1 344 / 30 / -5
    Followers:
    22
    QNAP:
    TVS-x71
    Ethernet:
    1 GbE
    TVS-x71 1 GbE
    Przed przystąpieniem do zdiagnozowania, który z procesów lub usług wzbudza dyski twarde zainstalowane w serwerze z uśpienia (Spin-Down), pobierz i zainstaluj program PuTTY lub inny klient SSH:
    PuTTY Download Page
    1. Uruchom program PuTTY, wprowadź adres IP serwera NAS oraz port SSH. Połącz się z serwerem logując się przy użyciu konta administratora (admin).
    2. Wykonaj poniższe polecenia, aby pobrać i uruchomić plik do monitorowania aktywności interfejsu odczytu i zapisu danych wejsciowych i wyjściowych (I/O) na dyskach twardych:
      Kod (Bash):
      1. cd /root
      2. wget http://pool.qnapclub.pl/projects/tools/blkdevMonitor/blkdevMonitor.sh
      3. chmod +x blkdevMonitor.sh
      4. sh blkdevMonitor.sh
    3. Uruchomiony program rozpocznie monitorowanie operacji odczytu i zapisu uruchomionych procesów na serwerze.
    FYI (zawartość skryptu blkdevMonitor.sh)
    Kod (Bash):
    1. #!/bin/sh
    2. #================================================================
    3. # Copyright (C) 2008 QNAP Systems, Inc.
    4. #
    5. # This program is free software; you can redistribute it and/or
    6. # modify it under the terms of the GNU General Public License
    7. # as published by the Free Software Foundation; either version 2
    8. # of the License, or (at your option) any later version.
    9. #
    10. # This program is distributed in the hope that it will be useful,
    11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
    12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13. # GNU General Public License for more details.
    14. #----------------------------------------------------------------
    15. #
    16. # blkdevMonitor_v2.sh
    17. #
    18. #   Abstract:
    19. #       A program of testing purpose on monitor block device
    20. #
    21. #   HISTORY:
    22. #       2013/05/15  -   Created - Kent
    23. #
    24. #================================================================
    25. /sbin/daemon_mgr klogd.sh stop "/etc/init.d/klogd.sh start"
    26. /usr/bin/killall dd 2>/dev/null 1>/dev/null
    27.  
    28. MD_DEVIVES="md9 md13 md0 md1 md2"
    29. SD_DEVIVES="sda sdb sdc sdd sde sdf sdg sdh"
    30. Do_Log=0
    31. MAXRUN=100
    32. FORCE_STANDBY=0
    33. BLKDEV_LOG=/root/blkdevMonitor_v2.log
    34.  
    35. analyse_kmsg()
    36. {
    37.     _klog=/.klog
    38.     /bin/touch $_klog
    39.     _standby=1
    40.  
    41.     # read /proc/kmsg
    42.     while [ 1 ]; do
    43.         /bin/dd if=/proc/kmsg of=$_klog bs=1 count=10240 2>/dev/null 1>/dev/null
    44.         for i in $MD_DEVIVES; do
    45.             /bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode"
    46.             if [ $? = 0 ]; then
    47.                 /bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode" >> $BLKDEV_LOG
    48.                 _standby=0
    49.             fi
    50.             /bin/cat $_klog | /bin/grep $i | /bin/grep "block"
    51.             if [ $? = 0 ]; then
    52.                 /bin/cat $_klog | /bin/grep $i | /bin/grep "block" >> $BLKDEV_LOG
    53.                 _standby=0
    54.             fi
    55.         done
    56.         for i in $SD_DEVIVES; do
    57.             /bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode"
    58.             if [ $? = 0 ]; then
    59.                 /bin/cat $_klog | /bin/grep $i | /bin/grep "dirtied inode" >> $BLKDEV_LOG
    60.                 _standby=0
    61.             fi
    62.             /bin/cat $_klog | /bin/grep $i | /bin/grep "block"
    63.             if [ $? = 0 ]; then
    64.                 /bin/cat $_klog | /bin/grep $i | /bin/grep "block" >> $BLKDEV_LOG
    65.                 _standby=0
    66.             fi
    67.         done
    68.         if [ $_standby = 0 ]; then
    69.             return 1
    70.         fi
    71.     done
    72. }
    73.  
    74. _countdown()
    75. {
    76.     /bin/sync;/bin/sync
    77.     /bin/echo -n "Countdown: "
    78.     cntdown=$1
    79.     while [ ${cntdown} -gt 0 ]; do
    80.         /bin/sleep 1
    81.         /bin/echo -n "${cntdown} "
    82.         cntdown=$[$cntdown-1]
    83.     done
    84.     echo
    85. }
    86.  
    87. _check_standby()
    88. {
    89.     for i in $SD_DEVIVES; do
    90.         /sbin/hdparm -C /dev/${i} 2>>/dev/null | /bin/grep active
    91.         if [ $? -eq 0 ]; then
    92.             echo /dev/${i}
    93.             echo "Some process was waked up HDD..."
    94.             return 1    # HDD is active
    95.         fi
    96.     done
    97.     return 0
    98. }
    99.  
    100. /bin/echo "===== Welcome to use blkdevMonitor_v2 on `/bin/date` ====="
    101. case "$1" in
    102.     -h)
    103.     /bin/echo "Usage:"
    104.     /bin/echo "  $0 [N]"
    105.     /bin/echo "  N means that monitor block devices N times and generate N log files.(Default N = 100)"
    106.     exit 0
    107.     ;;
    108. esac
    109.  
    110. /bin/echo "Turn off/on VM block_dump & Clean dmesg"
    111. /bin/echo 0 > /proc/sys/vm/block_dump
    112. /bin/dmesg -c 2>/dev/null 1>/dev/null
    113. /bin/dmesg -c 2>/dev/null 1>/dev/null
    114. /bin/dmesg -c 2>/dev/null 1>/dev/null
    115.  
    116. _cnt=20
    117. while [ ${_cnt} -gt 0 ]; do
    118.     /bin/sync
    119.     /bin/dmesg -c 2>/dev/null 1>/dev/null
    120.     _cnt=$[$_cnt-1]
    121. done
    122. /bin/echo 1 > /proc/sys/vm/block_dump
    123. /bin/date > /dev/null
    124. _countdown 3
    125. # ignore 10240 bytes
    126. /bin/dd if=/proc/kmsg of=/dev/null bs=1 count=10240 2>/dev/null 1>/dev/null
    127.  
    128. /bin/echo "Start..."
    129.  
    130. [ "x$1" != "x" ] && MAXRUN=$1
    131. _cnt=0
    132.  
    133. # remove log
    134. /bin/rm -f $BLKDEV_LOG
    135.  
    136. while [ ${_cnt} -lt ${MAXRUN} ]; do
    137.     echo "============= $_cnt/$MAXRUN test, `/bin/date` ==============="
    138.     echo "============= $_cnt/$MAXRUN test, `/bin/date` ===============" >> $BLKDEV_LOG
    139.     if [ $FORCE_STANDBY = 1 ]; then
    140.         _check_standby
    141.         if [ $? != 0 ]; then
    142.             for i in $SD_DEVIVES; do
    143.                 # force standby
    144.                 /sbin/hdparm -y /dev/${i} 2>/dev/null 1>/dev/null
    145.                 if [ $? = 0 ]; then
    146.                     echo "Issuing standby command in /dev/${i}"
    147.                 else
    148.                     echo "/dev/${i} not found"
    149.                 fi
    150.             done
    151.         fi
    152.         /bin/sleep 20
    153.     fi
    154.     analyse_kmsg
    155.     _cnt=$[$_cnt+1]
    156.     echo
    157.     echo >> $BLKDEV_LOG
    158. done
    159.  
    160. /bin/echo "Turn off block_dump"
    161. /bin/echo 0 > /proc/sys/vm/block_dump
     
    • Lubię to! Lubię to! x 1
    • Optymistyczne Optymistyczne x 1
Status tematu:
Brak możliwości dodawania odpowiedzi.

Poleć tę stronę

Użytkownicy znaleźli te stronę szukając słów:

  1. qnap ts-251a jak sprawdzić co wzbudza dyski