জপুলে ডিস্ক সনাক্ত করা দরকার ... কীভাবে?


14

আমার ফ্রিএনএজে একটি জপুলে একটি খারাপ ডিস্ক প্রতিস্থাপন করতে হবে।

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এটি খারাপ ডিস্ক। এবং আমার কাছে আমার নোট রয়েছে, তাই আমি জানি যে কোন ডিস্কটি।

তবে দেখা যাচ্ছে যে আমি সেখানে একটি অতিরিক্ত রেখেছি - অ্যাডা0 - গতবার যখন আমি বাক্সে ছিলাম। আমি কি অ্যাডা 2 সাথে দূরবর্তী অ্যাডএ 2 প্রতিস্থাপন করতে পারি ? কেউ অফিসে না পাওয়া পর্যন্ত?


সুতরাং এখানে প্রশ্নটি আরও জানা যায় যে এই পার্টিশনটি কোন ডিস্ক থেকে এসেছে তা সনাক্ত করতে হবে? (ডিস্ক সিরিয়ালগুলি যেমন dmesg এ পাওয়া যায়)
ওউকি

আমার খারাপ বিষয় dmesg: ড্রাইভের মডেল রয়েছে তবে এটির সিরিয়াল নেই। দেখে মনে হচ্ছে এটি smartcl -iআপনাকে সেই ধরণের তথ্য দিতে পারে। আপনার কেন দরকার হয়, কেন আপনি একবার তার ঘের থেকে ডিস্কটি সরিয়ে ফেললে এটি ডিস্ক লেবেলে লেখা থাকে ?!
ওউকি

আমার সিরিয়ালটি # দরকার তাই আমি জানি যে কোন ডিস্কটি টানতে হবে ... আমি জানি না যে দীর্ঘ জিপিটিড স্ট্রিংটি কী বোঝায় ... এটি "অ্যাডা" কিছু বলত, কিন্তু আর কিছু নয়।
ড্যান

2
gptidGEOM অনন্য আইডি হল। এখন আপনার ডিস্কটি ডাউন হয়ে গেছে, আপনি সিরিয়ালটি পেতে পারবেন না, তবে এখনও "অ্যাডএক্স" কে টানতে হবে তা এখনও নির্ধারণ করতে পারেন।
ওউকি

এটি কেন সর্বোত্তম অনুশীলনের পরামর্শ দেয় আপনি জিপিটি লেবেল ব্যবহার করেন এবং জিপিটি লেবেলে ক্রমিক নম্বর (বা এটির কমপক্ষে বেশ কয়েকটি নিম্ন-অর্ডার সংখ্যা) অন্তর্ভুক্ত করার জন্য এটি সর্বোত্তম উদাহরণ। এইভাবে, যখন জেডএফএস আপনাকে জিপিটি লেবেল ব্যর্থ হয়েছে, আপনি ঠিক বুঝতে পারবেন যে ডিস্ক এসএন রয়েছে। ডিসি ট্রে এর সামনের অংশেও জিপিটি লেবেলটি শারীরিকভাবে লেবেল করা দরকার, সুতরাং এটি নির্দিষ্ট করা ক্রমিক সংখ্যাটি সনাক্ত করার জন্য কোন ড্রাইভটি টানতে হবে তা স্পষ্ট নয়। লুকাস এবং জুডের জেডএফএস মাস্টারি দেখুন ।
জিম এল।

উত্তর:


14

একটি ডিস্ক সিরিয়াল পেতে এটি চলমান এবং উপলভ্য প্রয়োজন:

  • camcontrol identify <device> |grep ^serial (এটি (এস) এটিএ নির্দিষ্ট হতে পারে)
  • smartcl -i <device> |grep ^Serial
  • ঘের থেকে একবারে ডিস্ক লেবেল পড়া reading

আপনার ক্ষেত্রে, আমি মনে করি যে 3 য় সমাধানটি কেবলমাত্র উপলব্ধ। সুতরাং, ধরে নিচ্ছি আপনি প্রথমে ডিস্কটি সনাক্ত করতে চান:

প্রথম ব্যবহার করে দেখুন 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)
    

    সেখান থেকে, আপনি সহজেই সনাক্ত করতে পারবেন কোনটি অনুপস্থিত ( এই ক্ষেত্রে da1 ), তারপরে dmesgসেই ডিস্কটি সনাক্ত করার জন্য একবার নজর দিন ।

সুতরাং, এখানে কোন বাস্তব সমাধান। আমি কেবল আশা করি এটি আপনাকে আরও কিছুটা পরিষ্কার দেখতে সহায়তা করে।

আরও জানতে :


দয়া করে উপরে যোগ করা নোটগুলি দেখুন ... অ্যাডা 2 খারাপ ডিস্ক?
ড্যান

হাঁ। দেখতে একটাই one
ওউকি

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

আমি একটি স্ক্রিপ্ট তৈরি করেছি যা জিপিটিআইডি এবং সম্পর্কিত হার্ড ড্রাইভের সিরিয়াল নম্বর এবং ডিভাইসের নামগুলির সকলের তালিকা করে।

#!/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যেভাবেই কোনও ডিস্কটি নীচে রাখবে ।
ওউকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.