Zpool'da diski tanımlamanız gerekiyor… nasıl?


14

FreeNAS bir zpool bozuk bir diski değiştirmek gerekiyor.

zpool status gösterileri

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

Bu diskin seri numarasını nasıl bulabilirim?


Daha:

glabel status verir:

                                      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/5fe33556Orada görmüyorum .

Ve camcontrol devlistverir:

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

ada2Bu kötü disk olduğu anlamına mı geliyor ?


GÜNCELLEME:

Tamam, eminim ada2kötü disk. Ve notlarım var, bu yüzden hangi diskin olduğunu biliyorum.

Ama görünüşe göre orada bir yedek bıraktım - ada0 - en son kutuya geldiğimde. Ben değiştirebilir miyim ada2 ile ada0 uzaktan? Birisi ofise gelene kadar?


Burada soru, bu bölümün hangi diskten olduğunu belirleme hakkında daha fazla bilgi mi? (disk dizileri
dmesg'de

Benim kötü hakkında dmesg: sürücü modeli var, ama seri değil. Görünüşe göre sadece smartcl -ibu tür bilgiler verebilir. Neden bu arada ihtiyacınız var, diski muhafazasından çıkardığınızda, disk etiketine yazılıyor ?!
Ouki

Ben seri # gerek bu yüzden hangi diski çıkarmak için biliyorum ... Bu uzun gptid dize ne ifade bilmiyorum ... "ada" bir şey söylemek için kullanılan, ama daha fazla.
Dan

2
gptidGEOM benzersiz kimliğidir. Şimdi diskiniz çöktüğüne göre, seriyi alamazsınız, ancak yine de hangi "adaX" in çekileceğini anlayabilirsiniz.
Ouki

Bu, en iyi uygulamanın GPT etiketlerini kullanmanızı ve GPT etiketine seri numarasını (veya en azından birkaç düşük basamaklı rakamını) eklemenizi neden önerdiğinin klasik bir örneğidir. Bu şekilde, ZFS size bir GPT etiketinin başarısız olduğunu söylediğinde, SN diskinin tam olarak olduğunu bilirsiniz. GPT etiketinin disk tepsisinin önünde de fiziksel olarak etiketlenmesi gerekir, bu nedenle belirli bir seri numarasını bulmak için hangi sürücünün çekilmesi gerektiği açıktır. Lucas & Jude'un ZFS Ustalığına bakınız .
Jim L.

Yanıtlar:


14

Bir disk seriyi almak için çalışır durumda ve kullanılabilir olması gerekir:

  • camcontrol identify <device> |grep ^serial (bu (S) ATA'ya özgü olabilir)
  • smartcl -i <device> |grep ^Serial
  • muhafazadan çıkarıldıktan sonra disk etiketini okuma

Sizin durumunuzda, sanırım 3. çözüm mevcut olan tek çözümdür. Yani, sadece diski tanımlamak istediğinizi varsayarsak:

Önce a'yı deneyin glabel status(sürücünüz DOWNveya olarak gösterilmediği için REMOVED):

$ glabel status
gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da0p1
gptid/c96da0bc-ddc1-11e2-8c3e-00138f3fd9c7     N/A  da2p1
  1. İle bölümünüzü görebilirsiniz glabel status

    Daha sonra disk aygıtının adını kolayca belirleyebilirsiniz ( bölüm için örn: da0gptid/c7868819-ddc1-11e2-8c3e-00138f3fd9c7 ).

    Sistem başlangıç ​​günlüğünüze /var/log/messages(aka " dmesg") göz atabilirsiniz :

    $ 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. İle bölümünüzü göremezsiniz 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)
    

    Oradan, hangisinin eksik olduğunu kolayca tespit edebilirsiniz ( bu durumda da1 ), dmesgo diski tanımlamak için bir göz atabilirsiniz .

Yani, burada gerçek bir çözüm yok. Umarım işleri daha net görmenize yardımcı olur.

Daha fazla bilgi için :


Lütfen yukarıdaki notlara bakın ... ada2 bozuk disk mi?
Dan

Evet. Görünen o ki.
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

kaynak


0

Böyle bir şey deneyebilirsiniz. Benim için çalıştı:

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

seri numaralarının tüm listesinin çıktısını almalıdır.


0

Tüm GPTID ve ilişkili sabit sürücü seri numarasını ve aygıt adını listeleyen bir komut dosyası yaptım.

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

Linux tabanlı sistemdeki belirli bir diske ihtiyacınız olduğunu varsayarsak:

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

veya fs etiketi ile:

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

veya donanım bağlantısı ile:

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

4
Bu Linux DEĞİL . udevLinux'a özgü, birçok süslü /procşey ... maalesef burada.
Ouki

Bu arada, Linux'un bir diski udevzaten tutacağından emin değilim .
Ouki
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.