Potrzebujesz zidentyfikować dysk w Zpool… jak?

14

Muszę wymienić zły dysk w zpool na FreeNAS.

zpool status przedstawia

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

Jak znaleźć numer seryjny tego dysku?


Więcej:

glabel status daje:

                                      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

Nie widzę gptid/5fe33556tam

I camcontrol devlistdaje:

<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)

Czy to znaczy, że ada2to zły dysk?


AKTUALIZACJA:

OK, jestem prawie pewien, że ada2to zły dysk. I mam swoje notatki, więc wiem, który to dysk.

Ale wygląda na to, że zostawiłem tam zapas - ada0 - ostatnim razem, gdy byłem w pudełku. Mogę wymienić ada2 z ada0 zdalnie? Dopóki ktoś nie dotrze do biura?

Dan
źródło
Więc pytanie dotyczy bardziej tego, jak rozpoznać, z którego dysku ta partycja jest? (ponieważ seriale dyskowe można znaleźć w dmesg)
Ouki
Moja wada na temat dmesg: istnieje model napędu, ale nie jego szeregowy. Wydaje się, że smartcl -imoże dać ci tylko takie informacje. Czemu go potrzebujesz, skoro po wyjęciu dysku z jego obudowy jest zapisywany na etykiecie dysku ?!
Ouki,
Potrzebuję numeru seryjnego, więc wiem, który dysk należy wyciągnąć ... Nie wiem, do czego odnosi się ten długi ciąg gptid ... kiedyś mówił coś „ada”, ale nic więcej.
Dan
2
Jest gptidto unikalny identyfikator GEOM. Teraz, gdy twój dysk jest wyłączony, nie możesz pobrać numeru seryjnego, ale nadal możesz dowiedzieć się, który „adaX” wyciągnąć.
Ouki,
Jest to klasyczny przykład tego, dlaczego najlepsza praktyka zaleca używanie etykiet GPT i umieszczanie numeru seryjnego (lub co najmniej kilku cyfr o niskim poziomie) w etykiecie GPT. W ten sposób, gdy ZFS powie ci, że etykieta GPT nie powiodła się, będziesz wiedział dokładnie, że SN dysku jest. Etykieta GPT musi być również fizycznie oznaczona z przodu tacy dysku, więc nie jest jasne, który dysk należy wyciągnąć, aby zlokalizować dany numer seryjny. Zobacz ZFS Mastery autorstwa Lucasa i Jude.
Jim L.

Odpowiedzi:

14

Aby uzyskać numer seryjny dysku, musi on być uruchomiony i dostępny:

  • camcontrol identify <device> |grep ^serial (może to być (S) ATA)
  • smartcl -i <device> |grep ^Serial
  • czytanie etykiety dysku po wyjęciu z obudowy

W twoim przypadku myślę, że trzecie rozwiązanie jest jedynym dostępnym. Zakładając, że chcesz najpierw zidentyfikować dysk:

Spróbuj najpierw a glabel status(ponieważ twój dysk nie jest pokazany jako DOWNlub REMOVED):

$ glabel status
gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da0p1
gptid/c96da0bc-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da2p1
  1. Możesz zobaczyć swoją partycję za pomocą glabel status

    Następnie możesz łatwo zidentyfikować nazwę urządzenia dyskowego (np .: da0 dla gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7partycji).

    Możesz zajrzeć do dziennika uruchamiania systemu z /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. Nie możesz zobaczyć swojej partycji 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)
    

    Stamtąd możesz łatwo zauważyć, którego brakuje ( w tym przypadku da1 ), a następnie rzucić okiem, dmesgaby zidentyfikować ten dysk.

Więc nie ma tutaj żadnego realnego rozwiązania. Mam tylko nadzieję, że pomoże ci to zobaczyć coś bardziej wyraźnego.

Aby dowiedzieć się więcej :

Ouki
źródło
Zobacz dodane uwagi powyżej ... Czy ADA2 to zły dysk?
Dan
Tak. Wygląda na to, że to jeden.
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

źródło

Mishutka
źródło
0

Możesz spróbować czegoś takiego. To działało dla mnie:

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

które powinny wypisać całą listę numerów seryjnych.

booboy
źródło
0

Zrobiłem skrypt, który wyświetla wszystkie numery GPTID i związany z nimi numer seryjny dysku twardego i nazwę urządzenia.

#!/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
7wp
źródło
-3

Zakładając, że potrzebujesz identyfikatora konkretnego dysku w systemie Linux, możesz uzyskać:

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

lub etykietą fs:

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

lub przez łączność sprzętową:

ls-la /dev/disk/by-path/
Vladeli
źródło
4
To nie jest Linux. udevjest specyficzny dla Linuksa, tak wiele fantazyjnych /procrzeczy ... niestety tutaj.
Ouki,
Nawiasem mówiąc, nie jestem pewien, czy Linux i tak utrzyma dysk na swoim udev.
Ouki,