Perlu mengidentifikasi disk di zpool ... bagaimana?


14

Saya perlu mengganti disk buruk di zpool di FreeNAS.

zpool status menunjukkan

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

Bagaimana cara menemukan nomor seri disk itu?


Lebih:

glabel status memberi:

                                      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

Saya tidak melihat gptid/5fe33556di sana.

Dan camcontrol devlistmemberi:

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

Apakah itu berarti ada2disk yang rusak?


MEMPERBARUI:

OK, saya cukup yakin itu ada2adalah disk yang buruk. Dan saya punya catatan, jadi saya tahu disk mana itu.

Tapi sepertinya saya meninggalkan cadangan di sana - ada0 - terakhir kali saya berada di dalam kotak. Bisakah saya mengganti ada2 dengan ada0 dari jarak jauh? Sampai seseorang tiba di kantor?


Jadi di sini pertanyaannya lebih lanjut tentang bagaimana mengidentifikasi disk dari partisi ini? (seperti serial disk dapat ditemukan di dmesg)
Ouki

Buruk saya tentang dmesg: ada model drive, tetapi tidak serial. Sepertinya hanya smartcl -ibisa memberi Anda info semacam itu. Ngomong-ngomong, mengapa Anda membutuhkannya, karena begitu Anda melepaskan disk dari penutupnya itu tertulis pada label disk ?!
Ouki

Saya memerlukan serial # jadi saya tahu disk mana yang harus ditarik ... Saya tidak tahu apa yang dimaksud string gptid panjang ... dulu ia mengatakan "ada" sesuatu, tetapi tidak lebih.
Dan

2
Ini gptidadalah ID unik GEOM. Sekarang disk Anda sedang down, Anda tidak bisa mendapatkan serial, tetapi Anda masih bisa mencari tahu "adaX" mana yang harus ditarik.
Ouki

Ini adalah contoh klasik mengapa praktik terbaik menyarankan agar Anda menggunakan label GPT dan menyertakan nomor seri (atau setidaknya beberapa digit angka rendah) di label GPT. Dengan begitu, ketika ZFS memberi tahu Anda label GPT telah gagal, Anda akan tahu persis bahwa disk SN tersebut. Label GPT perlu diberi label secara fisik di bagian depan baki disk juga, jadi tidak diragukan lagi drive mana yang perlu ditarik untuk menemukan nomor seri yang diberikan. Lihat ZFS Mastery oleh Lucas & Jude.
Jim L.

Jawaban:


14

Untuk mendapatkan serial disk diperlukan agar serial itu berjalan dan tersedia:

  • camcontrol identify <device> |grep ^serial (ini mungkin (S) ATA spesifik)
  • smartcl -i <device> |grep ^Serial
  • membaca label disk setelah dihapus dari enklosur

Dalam kasus Anda, saya pikir solusi ke-3 adalah satu-satunya yang tersedia. Jadi, dengan asumsi Anda hanya ingin mengidentifikasi disk:

Coba dulu a glabel status(karena drive Anda tidak ditampilkan sebagai DOWNatau REMOVED):

$ glabel status
gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da0p1
gptid/c96da0bc-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da2p1
  1. Anda dapat melihat partisi Anda dengan glabel status

    Kemudian Anda dapat dengan mudah mengidentifikasi nama perangkat disk (mis: da0 untuk gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7partisi).

    Anda dapat melihat log mulai sistem Anda dari /var/log/messages(alias " 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. Anda tidak dapat melihat partisi Anda 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)
    

    Dari sana, Anda dapat dengan mudah menemukan mana yang tidak ada ( da1 dalam kasus ini), lalu lihat dmesguntuk mengidentifikasi disk itu.

Jadi, tidak ada solusi nyata di sini. Saya hanya berharap ini membantu Anda melihat sesuatu dengan lebih jelas.

Untuk tahu lebih banyak :


Silakan lihat catatan tambahan di atas ... adakah disk yang buruk?
Dan

Ya. Tampak itulah.
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

sumber


0

Anda dapat mencoba sesuatu seperti ini. Ini bekerja untuk saya:

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

yang seharusnya menampilkan seluruh daftar nomor seri.


0

Saya membuat skrip yang mencantumkan semua GPTID dan nomor seri dan nama perangkat hard drive yang terkait.

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

Dengan asumsi Anda memerlukan uuid disk tertentu pada sistem berbasis Linux yang bisa Anda dapatkan dengan:

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

atau dengan label fs:

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

atau dengan konektivitas perangkat keras:

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

4
Ini BUKAN Linux. udevkhusus untuk Linux, karena banyak /prochal mewah ... sayangnya di sini.
Ouki

Ngomong-ngomong, saya tidak yakin Linux tetap menyimpan disk-nya udev.
Ouki
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.