ज़ूल में डिस्क की पहचान करने की आवश्यकता है ... कैसे?


14

मुझे 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कि आप केवल इस तरह की जानकारी दे सकते हैं। आपको इसकी आवश्यकता क्यों है, जैसे ही आप डिस्क को इसके बाड़े से हटाते हैं, यह डिस्क लेबल पर लिखा होता है ?!
ओउकी

मुझे धारावाहिक की आवश्यकता है # इसलिए मुझे पता है कि कौन सी डिस्क को बाहर निकालना है ... मुझे नहीं पता कि उस लंबे गप्टिड स्ट्रिंग का क्या मतलब है ... यह "अडा" कुछ कहता था, लेकिन अब और नहीं।
डैन

2
gptidGEOM विशिष्ट आईडी है। अब जब आपकी डिस्क डाउन हो गई है, तो आप धारावाहिक प्राप्त नहीं कर सकते, लेकिन फिर भी आप यह पता लगा सकते हैं कि "adaX" किसको बाहर निकालना है।
ओकी

यह एक उत्कृष्ट उदाहरण है कि क्यों सबसे अच्छा अभ्यास अनुशंसा करता है कि आप GPT लेबल का उपयोग करें और GPT लेबल में सीरियल नंबर (या कम से कम कई कम-क्रम अंक) शामिल करें। इस तरह, जब ZFS आपको बताता है कि एक GPT लेबल विफल हो गया है, तो आपको ठीक से पता चल जाएगा कि डिस्क SN है। GPT लेबल को डिस्क ट्रे के सामने भी भौतिक रूप से लेबल करने की आवश्यकता होती है, इसलिए यह असंदिग्ध है कि किसी दिए गए सीरियल नंबर का पता लगाने के लिए किस ड्राइव को खींचने की आवश्यकता है। लुकास और जूड द्वारा देखें ZFS महारत
जिम एल।

जवाबों:


14

डिस्क सीरियल प्राप्त करने के लिए आवश्यक है कि यह चल रहा हो और उपलब्ध हो:

  • camcontrol identify <device> |grep ^serial (यह हो सकता है (एस) एटीए विशिष्ट)
  • smartcl -i <device> |grep ^Serial
  • बाड़े से हटाए जाने के बाद डिस्क लेबल पढ़ना

आपके मामले में, मुझे लगता है कि तीसरा समाधान एकमात्र उपलब्ध है। तो, मान लें कि आप पहले डिस्क की पहचान करना चाहते हैं:

पहले प्रयास करें 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

    तब आप आसानी से डिस्क डिवाइस नाम ( विभाजन के लिए पूर्व: da0gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7 ) की पहचान कर सकते हैं ।

    आप अपने सिस्टम पर एक नजर डाल सकते हैं /var/log/messages(उर्फ " 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 खराब डिस्क है?
Dan

हां। लगता है कि एक है।
ओकी

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 की आवश्यकता है जिसे आप प्राप्त कर सकते हैं:

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

या एफएस लेबल द्वारा:

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

या हार्डवेयर कनेक्टिविटी द्वारा:

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

4
यह लिनक्स नहीं हैudevलिनक्स विशिष्ट है, कई फैंसी /procसामान के रूप में ... दुर्भाग्य से यहां।
ओउकी

वैसे, मुझे यकीन नहीं है कि लिनक्स किसी भी तरह से डिस्क को नीचे रखेगा udev
Ouki
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.