¿Necesita identificar el disco en zpool ... cómo?

14

Necesito reemplazar un disco defectuoso en un zpool en FreeNAS.

zpool status muestra

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

¿Cómo encuentro el número de serie de ese disco?


Más:

glabel status da:

                                      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

No veo gptid/5fe33556allí

Y camcontrol devlistda:

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

¿Eso significa que ada2es el disco defectuoso?


ACTUALIZAR:

OK, estoy bastante seguro de que ese ada2es el disco defectuoso. Y tengo mis notas, así que sé qué disco es ese.

Pero parece que dejé un repuesto allí, ada0 , la última vez que estuve en la caja. ¿Puedo reemplazar ada2 con ada0 de forma remota? ¿Hasta que alguien llegue a la oficina?

Dan
fuente
Entonces, aquí la pregunta es más sobre cómo identificar de qué disco es esta partición. (ya que las series de discos se pueden encontrar en dmesg)
Ouki
Lo malo dmesges que existe el modelo de unidad, pero no su serie. Parece que solo smartcl -ipuede darte ese tipo de información. ¿Por qué lo necesita, por cierto, ya que una vez que retira el disco de su caja, está escrito en la etiqueta del disco?
Ouki
Necesito el número de serie, así que sé a qué disco extraer ... No sé a qué se refiere esa larga cadena gptid ... solía decir "ada" algo, pero no más.
Dan
2
El gptides la identificación única de GEOM. Ahora que su disco está caído, no puede obtener la serie, pero aún puede averiguar qué "adaX" sacar.
Ouki
Este es un ejemplo clásico de por qué las mejores prácticas recomiendan usar etiquetas GPT e incluir el número de serie (o al menos varios dígitos de orden inferior) en la etiqueta GPT. De esa manera, cuando ZFS le dice que una etiqueta GPT ha fallado, sabrá exactamente que el SN del disco es. La etiqueta GPT también debe estar físicamente etiquetada en la parte frontal de la bandeja del disco, por lo que no es ambiguo qué unidad debe extraerse para ubicar un número de serie dado. Ver ZFS Mastery por Lucas y Jude.
Jim L.

Respuestas:

14

Para obtener un disco en serie se requiere que esté funcionando y disponible:

  • camcontrol identify <device> |grep ^serial (esto podría ser (S) ATA específico)
  • smartcl -i <device> |grep ^Serial
  • leer la etiqueta del disco una vez retirado del gabinete

En su caso, creo que la tercera solución es la única disponible. Entonces, suponiendo que solo desee identificar primero el disco:

Pruebe primero a glabel status(ya que su unidad no se muestra como DOWNo REMOVED):

$ glabel status
gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da0p1
gptid/c96da0bc-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da2p1
  1. Puedes ver tu partición con glabel status

    Luego puede identificar fácilmente el nombre del dispositivo de disco (por ejemplo: da0 para la gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7partición).

    Puede echar un vistazo al registro de inicio de su sistema desde /var/log/messages(también conocido como " 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. No puedes ver tu partición con 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)
    

    A partir de ahí, puede detectar fácilmente cuál falta ( da1 en este caso), luego eche un vistazo dmesgpara identificar ese disco.

Entonces, no hay una solución real aquí. Solo espero que te ayude a ver las cosas un poco más claras.

Para saber más :

Ouki
fuente
Vea las notas agregadas arriba ... ¿ada2 es el disco defectuoso?
Dan
Sí. Parece que ese es el.
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

fuente

mishutka
fuente
0

Podrías probar algo como esto. A mí me funcionó:

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

eso debería generar la lista completa de números de serie.

booboy
fuente
0

Hice un script que enumera todos los GPTID y el número de serie del disco duro asociado y el nombre del dispositivo.

#!/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
fuente
-3

Suponiendo que necesita uuid del disco particular en un sistema basado en Linux, puede obtener:

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

o por etiqueta fs:

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

o por conectividad de hardware:

ls-la /dev/disk/by-path/
vladeli
fuente
44
Esto NO es Linux. udeves específico de Linux, como muchas /proccosas elegantes ... desafortunadamente aquí.
Ouki
Por cierto, no estoy seguro de que Linux mantenga un disco bajo de udevtodos modos.
Ouki