Как знать, какое блочное устройство отображается на который физический диск

Я использовал бы Windows Server, только если явно необходимый клиентом, или если я думаю, что у меня как поставщик будет меньше стычки поддержки, так как клиентский штат знает только окна.

3
задан 10 September 2009 в 20:03
4 ответа

A и B в sda и sdb должны отобразиться на каналы 1 и 2 (или 0 и 1) для Ваших дисков. Если система настраивается так, чтобы они были маркированы, можно сказать тот путь. Я не знаю, как Ваши диски структурированы с проводным соединением; у меня были они пронумерованный с мелким шрифтом на материнской плате, таким образом, можно сказать, какой порт идет в какой диск.

Я предположил, что Вы могли использовать свою идею затем попытаться сопереживать вибрации от дисков также, если существует достаточно комнаты для Вас для чувства дисков. Снова зависит от способа, которым они смонтированы.

1
ответ дан 3 December 2019 в 05:57
  • 1
    Спасибо, я haven' t думал об их вибрации, что-то иметь в виду. –  Karolis T. 10 September 2009 в 20:11

Можно ли видеть S/N на дисках? Используйте hdparm-i/dev/sda, чтобы получить S/N и определить диск.

3
ответ дан 3 December 2019 в 05:57
  • 1
    Да, я могу. smartctl-i/dev/sda показывает порядковый номер, то же для sdb. Не уверенный, если это помогает хотя, как they' ре, покрытое сверху их слотами замены в горячем режиме. –  Karolis T. 10 September 2009 в 20:09

Простой способ проверить, который - диск, который, если у Вас есть надлежащие светодиоды диска, только к

dd if=/dev/sda of=/dev/null

И посмотрите, какой имеет свет, который единогласно застревает на.

1
ответ дан 3 December 2019 в 05:57

Ну, в прошлом году я написал сценарий, который переводит этот ataX.YY материал в имя устройства, которое можно найти здесь:
Ошибки Linux ATA: преобразование в имя устройства?

Однако моя личная версия этого сценария с тех пор претерпела значительные улучшения (теперь даже будет отображаться контроллер, к которому подключен жесткий диск, например), поэтому мне потребовалась всего одна минута, чтобы сократить ее для ваших особых целей:

#!/bin/bash
#
# LICENSE: GPL

function float_eval()
{
    local st=0
    local r=0.0
    if [[ $# -gt 0 ]]; then
       r=$(echo "scale=5; $*" | bc -q 2>/dev/null)
       st=$?
       if [[ $st -eq 0  &&  -z "$r" ]]; then st=1; fi
    fi
echo $r
return $st
}

_heahdcnt=0
_badhdcnt=0
_usbcnt=0

echo -e "\nRetrieving assignments from /sys/block ..."
while read Path ID
do
   sizeBlk=$(< /sys/block/$ID/size)

   if grep -q '/usb[0-9]*/' <<< $Path; then
     echo -ne "\n\n(Device /dev/$ID is not an ATA device, but a USB device [e. g. a pen drive])"
      ((_usbcnt++))
   else

     if [ ! -f /sys/block/$ID/device/model ]; then
        echo -e "Error: Couldn't determine model of /dev/$ID\!\n"
     else 
        echo -ne "\n\n/dev/$ID is a $(< /sys/block/$ID/device/model)"

       # when we get a 0, something went wrong; so in this case, skip any calculations
       if [ $sizeBlk -gt 0 ]; then

         sizegib=$((sizeBlk >> 21))

        # nb: since current bc cannot do bit shift operations without external modules 
        # loaded at runtime, we will resort to a temp variable which contains the
        # shifted value

         sizeBlkLsh9=$((sizeBlk << 9))
         sizegb=$(float_eval "$sizeBlkLsh9 / 1000000000")

         # use formatted output, don't mix literals and arithmetic in one string (as with echo)

         LC_NUMERIC=C printf " (%4.0f GiB / %4.0f GB )" $sizegib $sizegb

         ((_heahdcnt++))
       else
         ((_badhdcnt++))
       fi
    fi

    [[ $sizeBlk -eq 0 ]] && echo "WARNING: There appears to be some trouble with device \
 /dev/$ID. You should check this more thoroughly."
  fi

# process substitution
done < <(ls -l /sys/block/sd* \
\
| sed -e 's^.*-> \.\.^/sys^' \
      -e 's^/host[0-9]\{1,2\}/target\([0-9]\{1,2\}\(:[0-9]\)\{2,3\}/\)\{1,2\}block/^ ^')

echo -e "\n\nScanning of hardware completed.\n"

echo "You have $[$_heahdcnt + $_badhdcnt + $_usbcnt] devices connected:"
echo -n "$_heahdcnt healthy HDD(s), $_badhdcnt bad HDD(s)"
[[ $_usbcnt -gt 0 ]] && echo " and $_usbcnt USB device(s)."

ПРИМЕЧАНИЕ: Вспомогательная функция float_eval (), хотя и не является абсолютно необходимой, позволяет избежать ошибочных вычислений в миллиардах или триллионах байтов (ГБ или ТБ, не путать с ГиБ / ТиБ). Такие вычисления, особенно в диапазоне ТБ, могут все больше и больше отклоняться от своих точных значений при вычислении размера блока в (длинном) целом числе. Основная причина (или причина) в том, что мы никогда не использовали десятичную точку с емкостью жестких дисков до того, как несколько лет назад достигли отметки в 1 ТБ емкости жестких дисков, поэтому целочисленные вычисления могут больше не подходить во всех случаях.

Кроме того, мне было бы интересно, чтобы кто-нибудь улучшил этот скрипт, чтобы он показывал серийные номера, когда есть два диска с одинаковым идентификатором производителя. К сожалению, мне пока не удалось найти эту информацию в / sys / block / * . ​​

0
ответ дан 3 December 2019 в 05:57

Теги

Похожие вопросы