Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Last revisionBoth sides next revision
linux_faq:восстановление-виснущего-диска [2016/10/05 13:42] mikelinux_faq:восстановление-виснущего-диска [2019/02/11 09:13] – external edit 127.0.0.1
Line 1: Line 1:
 +1. Делаем dd, дописывая в файл 
 +  dd if=/dev/sda >> /tmp/data 2> /tmp/tst 
 +
 +2. если виснет - Проверяем состояние. 
 + var=$((time sh -c "dd if=/dev/zero of=ddfile bs=512 count=125 && sync") 2>&1) 
 +
 +3. узнаем где,  
 +<code>dd: reading `/dev/sda': Input/output error 
 +  116960+0 records in 
 +  116960+0 records out 
 +  59883520 bytes (60 MB) copied, 12.385 s, 4.8 MB/s 
 +  
 +  #если в строке с именем диска встречатся error 
 +  awk '/sda/ {print($5)}' /tmp/tst 
 +
 +  #тогда узнаем где 
 + 
 +  #отрезаем последний символ два раза  
 +  sed 's/.$//' 
 +  sed 's/.$//' 
 +</code>
 +4. останавливаем диск,  
 +  # echo 1 > /sys/block/sr0/device/delete 
 +
 +выключаем ждем и включаем  -
 +  wget http://10.9.8.5/port_3480/data_request?id=lu_action&DeviceNum=4&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1&output_format=xml 
 +
 +5. запускаем снова, \\
 +  # echo "- - -" > /sys/class/scsi_host/host1/scan 
 +6. возобновляем dd\\
 +  dd if=/dev/sda skip=blabla >> /tmp/data 2> /tmp/tst 
 +
 +
 +Скрипт: 
 +<code>
 +#!/bin/sh
 +#######################################
 +start_pos=$1
 +outputfile=$2
 +flagfile=/home/mike/out
 +propusk=8
 +volume=488397168
 +#######################################
 +# выключаем диск и включаем назад
 +echo 1 > /sys/block/sdb/device/delete
 +curl -s "http://192.168.10.156/port_3480/data_request?id=lu_action&DeviceNum=4&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0" > /dev/$
 +echo OFF
 +sleep 5
 +curl -s "http://192.168.10.156/port_3480/data_request?id=lu_action&DeviceNum=4&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1" > /dev/$
 +echo ON
 +sleep 5
 +echo "- - -" > /sys/class/scsi_host/host1/scan
 +
 +while true
 +do
 +count=$(echo $volume - $start_pos | bc -l)
 +echo "Осталось: " $count
 +dd if=/dev/sdb skip=$start_pos count=$count >> $outputfile 2> $flagfile
 +
 +if [ $(awk '/sdb/ {print($5)}' $flagfile) = 'error' ]
 +then
 +#сообщаем где
 +echo "ERRORR on "  $(awk '/records in/ {print($1)}' $flagfile)
 +start_pos=$(echo $(echo $(echo $(awk '/records in/ {print($1)}' $flagfile) | sed 's/.$//') |  sed 's/.$//') + $start_pos + $propusk | bc -l)
 +echo "Начинаем с: " $start_pos
 +dd if=/dev/zero count=$propusk >> $outputfile 2> $flagfile
 +
 +# выключаем диск и включаем назад
 +echo 1 > /sys/block/sdb/device/delete
 +curl -s "http://192.168.10.156/port_3480/data_request?id=lu_action&DeviceNum=4&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=0" > /dev/null &&
 +echo OFF
 +sleep 5
 +curl -s "http://192.168.10.156/port_3480/data_request?id=lu_action&DeviceNum=4&serviceId=urn:upnp-org:serviceId:SwitchPower1&action=SetTarget&newTargetValue=1" > /dev/null &&
 +echo ON
 +sleep 5
 +echo "- - -" > /sys/class/scsi_host/host1/scan
 +fi
 +done
 +
 +</code>
 +
  
  • linux_faq/восстановление-виснущего-диска.txt
  • Last modified: 2022/09/12 11:17
  • by admin