Потрібно ідентифікувати диск у zpool… як?


14

Мені потрібно замінити поганий диск у zpool на FreeNAS.

zpool status показує

gptid/5fe33556-3ff2-11e2-9437-f46d049aaeca  UNAVAIL      0     0     0  cannot open

Як знайти послідовний номер цього диска?


Більше:

glabel status дає:

                                      Name  Status  Components
                             ufs/FreeNASs3     N/A  da0s3
                             ufs/FreeNASs4     N/A  da0s4
                    ufsid/4fa405ab96518680     N/A  da0s1a
                            ufs/FreeNASs1a     N/A  da0s1a
                            ufs/FreeNASs2a     N/A  da0s2a
gptid/5f3c0517-3ff2-11e2-9437-f46d049aaeca     N/A  ada1p2
gptid/60570005-3ff2-11e2-9437-f46d049aaeca     N/A  ada3p2
gptid/60ebeaa5-3ff2-11e2-9437-f46d049aaeca     N/A  ada4p2
gptid/a767b8ef-1c95-11e2-af4c-f46d049aaeca     N/A  ada6p2
gptid/61925b86-3ff2-11e2-9437-f46d049aaeca     N/A  ada9p2
gptid/4599731b-8f15-11e1-a14c-f46d049aaeca     N/A  ada10p2

Я там не бачу gptid/5fe33556.

І camcontrol devlistдає:

<Hitachi HDS723030BLE640 MX6OAAB0>  at scbus0 target 0 lun 0 (pass0,ada0)
<ST3000VX000-9YW166 CV13>          at scbus4 target 0 lun 0 (pass1,ada1)
<ST3000VX000-9YW166 CV13>          at scbus6 target 0 lun 0 (pass3,ada3)
<Hitachi HDS723030BLE640 MX6OAAB0>  at scbus7 target 0 lun 0 (pass4,ada4)
<ST3000DM001-9YN166 CC4C>          at scbus8 target 0 lun 0 (pass5,ada5)
<WDC WD30EZRX-00MMMB0 80.00A80>    at scbus8 target 1 lun 0 (pass6,ada6)
<WDC WD30EZRX-00MMMB0 80.00A80>    at scbus9 target 0 lun 0 (pass7,ada7)
<ST3000DM001-9YN166 CC4C>          at scbus9 target 1 lun 0 (pass8,ada8)
<Hitachi HDS723030BLE640 MX6OAAB0>  at scbus10 target 0 lun 0 (pass9,ada9)
<Hitachi HDS5C3030ALA630 MEAOA580>  at scbus11 target 0 lun 0 (pass10,ada10)
< USB Flash Memory 1.00>           at scbus12 target 0 lun 0 (pass11,da0)

Це означає, що ada2це поганий диск?


ОНОВЛЕННЯ:

Гаразд, я впевнений, що ada2це поганий диск. І в мене є свої нотатки, тому я знаю, який це диск.

Але, здається, я залишив запас там - ada0 - востаннє, коли я був у коробці. Чи можу я віддалено замінити ada2 на ada0 ? Поки хтось не потрапить до офісу?


Тож тут питання більше про те, як визначити, з якого диска цей розділ? (як дискові серіали можна знайти в dmesg)
Ouki,

Моє погано dmesg: є модель приводу, але не її серійний. Здається, тільки smartcl -iтака інформація може дати вам. Навіщо вам це потрібно, до речі, як тільки ви виймаєте диск зі свого корпусу, це написано на етикетці диска ?!
Ouki

Мені потрібен серійний номер #, тому я знаю, який диск витягнути ... Я не знаю, до чого відноситься ця довга gptid-рядок ... раніше вона казала "ада", але не більше.
День

2
gptidЄ GEOM унікальний ідентифікатор. Тепер, коли ваш диск знищений, ви не можете отримати серійний файл, але ви все ще можете зрозуміти, який саме "adaX" витягнути.
Ouki

Це класичний приклад того, чому найкраща практика рекомендує використовувати ярлики GPT та включати порядковий номер (або принаймні кілька цифр низького порядку) у мітку GPT. Таким чином, коли ZFS повідомить, що ярлик GPT не вдався, ви точно дізнаєтесь, що це диск диска. Мітка GPT також повинна бути фізично помічена на передній панелі лотка для дисків, тому однозначно, який диск потрібно витягнути, щоб знайти заданий серійний номер. Дивіться майстерність ZFS від Lucas & Jude.
Джим Л.

Відповіді:


14

Щоб отримати серійний диск, потрібно, щоб він працював і був доступний:

  • camcontrol identify <device> |grep ^serial (це може бути (S) ATA)
  • smartcl -i <device> |grep ^Serial
  • прочитавши мітку диска, яку вийняли з корпусу

У вашому випадку я думаю, що 3-е рішення є єдиним доступним. Отже, припустимо, що ви просто хочете спочатку ідентифікувати диск:

Спробуйте спочатку a glabel status(оскільки ваш привід не показаний як DOWNабо REMOVED):

$ glabel status
gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da0p1
gptid/c96da0bc-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da2p1
  1. Ви можете бачити свій розділ за допомогою glabel status

    Тоді ви можете легко визначити назву дискового пристрою (наприклад: da0 для gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7розділу).

    Ви можете ознайомитись із початковим журналом вашої системи /var/log/messages(aka " dmesg"):

    $ dmesg | grep ^da0
    da0 at mps0 bus 0 scbus0 target 0 lun 0
    da0: <ATA ST3000DM001-1CH1 CC26> Fixed Direct Access SCSI-6 device
    da0: 600.000MB/s transfers
    da0: Command Queueing enabled
    da0: 2861588MB (5860533168 512 byte sectors: 255H 63S/T 364801C)
    
  2. Ви не можете бачити свій розділ glabel status

    $ camcontrol devlist
    <ATA ST3000DM001-1CH1 CC26>        at scbus0 target 0 lun 0 (pass0,da0)
    <ATA ST3000DM001-1CH1 CC26>        at scbus0 target 4 lun 0 (pass2,da2)
    

    Звідти ви можете легко помітити, якого з них немає ( да1 в даному випадку), а потім ознайомитись, dmesgщоб визначити цей диск.

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

Щоб дізнатися більше :


Будь ласка, дивіться додані примітки вище ... це ada2 поганий диск?
Дан

Так. Здається, це один.
Ouki

1
#!/bin/sh
echo
echo $(basename $0) - Mounted Drives on $(hostname)
cat /etc/version
date
echo
diskinfo="$(glabel status | tail -n +2 | awk '{split($3,a,"p"); print a[1],$1}')"
echo    "+========+==========================+==================+============================================+"
echo "| Device |     DISK DESCRIPTION     |  SERIAL  NUMBER  |                   GPTID                    |"
echo "+========+==========================+==================+============================================+"

for d in $(echo "$diskinfo" | cut -d" " -f 1)
do
   diskinf=$(diskinfo -v $d | grep '# Disk ')
   diskdescription=$(echo "$diskinf" | grep '# Disk desc' | cut -d# -f 1 | xargs)
   diskserialno=$(echo "$diskinf" | grep '# Disk ident' | cut -d# -f 1 | xargs)
   diskgptid=$(echo "$diskinfo" | grep "^$d" | cut -d" " -f 2)
   printf "| %-6s | %-24s | %-16s | %-42s |\n" "$d" "$diskdescription"     "$diskserialno" "$diskgptid"
   echo "+--------+--------------------------+------------------+--------------------------------------------+"
done

джерело


0

Ви можете спробувати щось подібне. Це працювало для мене:

devlist=$(sudo camcontrol devlist | awk ' { print $NF } ' | cut -f 2 -d , | sed 's/)//'g)

for device in $devlist; do sudo camcontrol identify $device | grep serial; done

який повинен вивести весь список серійних номерів.


0

Я створив скрипт, у якому перерахований весь GPTID і пов'язаний з ним серійний номер жорсткого диска та назва пристрою.

#!/bin/bash

#Use smartctl to get Serial Number - else dmesg is used
USESMART=0
#save glabel status to temporary file
CACHEGLABEL=1

if  [ $CACHEGLABEL -eq 0 ]
then
GLCMD="glabel status"
else
GLTMP=/var/tmp/$0.glabel
glabel status > $GLTMP
GLCMD="cat $GLTMP"
fi

ADALOW=`ls /dev/ada[0-9] 2>/dev/null`
ADAHIGH=`ls /dev/ada[0-9][0-9] 2>/dev/null`
DALOW=`ls /dev/da[0-9] 2>/dev/null`
DAHIGH=`ls /dev/da[0-9][0-9] 2>/dev/null`
#check if all device nodes exist or skip
if  [[ $ADALOW == *ls* ]]
then
$DALOW=
fi
if  [[ $ADAHIGH == *ls* ]]
then
$ADAHIGH=
fi
if  [[ $DALOW == *ls* ]]
then
$DALOW=
fi
if  [[ $DAHIGH == *ls* ]]
then
$DAHIGH=
fi
for FILE in $ADALOW $ADAHIGH $DALOW $DAHIGH
do
DEV=${FILE##'/dev/'}
#echo -n "${DEV}: "
if  [ $USESMART -eq 0 ]
then
SERIAL=`grep $DEV: /var/log/dmesg.today |grep -i Serial | awk '{print $(NF)}'`
else
SERIAL=`smartctl -a $FILE | grep -i 'Serial Number'| awk '{print $(NF)}'`
fi
#this skips all ufs drives
GPTID=`$GLCMD |grep 2$ |grep ${DEV}p|cut -d' ' -f1`
if [ "${GPTID}x" == 'x' ]
then
GPTID="No GPTID"
fi
if [ "${SERIAL}x" == 'x' ]
then
$SERIAL="Not found"
fi
echo  ${DEV}: Serial $SERIAL \; GPTID=$GPTID
done

if  [ $CACHEGLABEL -eq 1 ]
then
rm $GLTMP
fi

-3

Припускаючи, що вам потрібен uuid конкретного диска в системі на базі Linux, ви можете отримати:

ls -la /dev/disk/by-uuid/

або за допомогою fs label:

 ls -la /dev/disk/by-label/ 

або за допомогою апаратного підключення:

ls-la /dev/disk/by-path/

4
Це НЕ Linux. udevспецифічно для Linux, як і багато фантазійних /procматеріалів ... на жаль, тут.
Оукі

До речі, я не впевнений, що Linux все одно не дозволить зберегти диск udev.
Оукі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.