একটি জপুলে একটি মৃত ডিস্ক প্রতিস্থাপন


31

আমি নেটিভ জেডএফএস ব্যবহার করে উবুন্টু সার্ভার 13.04 64-বিট চালাচ্ছি। 4 হার্ড ড্রাইভ যার মধ্যে একটি গতকাল মারা যান এবং এখন এর মধ্যে রয়েছে একটি zpool আছে না আর OS বা BIOS দ্বারা স্বীকৃত হচ্ছে।

দুর্ভাগ্যক্রমে আমি সমস্যাটি কেবলমাত্র পুনরায় বুট করার পরে দেখেছি তাই এখন ড্রাইভের লেবেলটি অনুপস্থিত এবং আমি এখানে এবং এখানে অফিসিয়াল নির্দেশাবলী ব্যবহার করে ডিস্কটি প্রতিস্থাপন করতে পারি না ।

zpool status hermes -x

কপি করে প্রিন্ট

root@zeus:~# zpool status hermes -x
  pool: hermes
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: scrub repaired 0 in 2h4m with 0 errors on Sun Jun  9 00:28:24 2013
config:

        NAME                         STATE     READ WRITE CKSUM
        hermes                       DEGRADED     0     0     0
          raidz1-0                   DEGRADED     0     0     0
            ata-ST3300620A_5QF0MJFP  ONLINE       0     0     0
            ata-ST3300831A_5NF0552X  UNAVAIL      0     0     0
            ata-ST3200822A_5LJ1CHMS  ONLINE       0     0     0
            ata-ST3200822A_3LJ0189C  ONLINE       0     0     0

errors: No known data errors

আমি ইতিমধ্যে একটি নতুন দিয়ে ড্রাইভটি প্রতিস্থাপন করেছি (যা লেবেলটি পেয়েছে /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ)

যে কোনও একটি আদেশ

zpool replace hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
zpool offline hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
zpool detatch hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X

সঙ্গে ব্যর্থ

root@zeus:~# zpool offline hermes /dev/disk/by-id/ata-ST3300831A_5NF0552X
cannot offline /dev/disk/by-id/ata-ST3300831A_5NF0552X: no such device in pool

কারণ যে ড্রাইভের মৃত্যু হয়েছে তার লেবেল সিস্টেমে আর নেই I আমি উপরের কমান্ডগুলিও চেষ্টা করেছি ড্রাইভের লেবেলের কোনও ফলপ্রসূ হয়নি।

আমি কীভাবে "ভূত" ডিস্কটি প্রতিস্থাপন করতে পারি?

উত্তর:


38

এই রাতে অবিরাম খননের পরে অবশেষে সমাধানটি পেলাম। সংক্ষিপ্ত উত্তরটি হ'ল আপনি zpoolকমান্ডটি দিয়ে ডিস্কের জিইউইডিগুলি (যা ড্রাইভ সংযোগ বিচ্ছিন্ন করার পরেও অব্যাহত থাকে) ব্যবহার করতে পারেন ।

দীর্ঘ উত্তর: zdbকমান্ডটি ব্যবহার করে ডিস্কের জিইউডি পেয়েছি যা আমাকে নিম্নলিখিত আউটপুট দিয়েছে

root@zeus:/dev# zdb
hermes:
    version: 28
    name: 'hermes'
    state: 0
    txg: 162804
    pool_guid: 14829240649900366534
    hostname: 'zeus'
    vdev_children: 1
    vdev_tree:
        type: 'root'
        id: 0
        guid: 14829240649900366534
        children[0]:
            type: 'raidz'
            id: 0
            guid: 5355850150368902284
            nparity: 1
            metaslab_array: 31
            metaslab_shift: 32
            ashift: 9
            asize: 791588896768
            is_log: 0
            create_txg: 4
            children[0]:
                type: 'disk'
                id: 0
                guid: 11426107064765252810
                path: '/dev/disk/by-id/ata-ST3300620A_5QF0MJFP-part2'
                phys_path: '/dev/gptid/73b31683-537f-11e2-bad7-50465d4eb8b0'
                whole_disk: 1
                create_txg: 4
            children[1]:
                type: 'disk'
                id: 1
                guid: 15935140517898495532
                path: '/dev/disk/by-id/ata-ST3300831A_5NF0552X-part2'
                phys_path: '/dev/gptid/746c949a-537f-11e2-bad7-50465d4eb8b0'
                whole_disk: 1
                create_txg: 4
            children[2]:
                type: 'disk'
                id: 2
                guid: 7183706725091321492
                path: '/dev/disk/by-id/ata-ST3200822A_5LJ1CHMS-part2'
                phys_path: '/dev/gptid/7541115a-537f-11e2-bad7-50465d4eb8b0'
                whole_disk: 1
                create_txg: 4
            children[3]:
                type: 'disk'
                id: 3
                guid: 17196042497722925662
                path: '/dev/disk/by-id/ata-ST3200822A_3LJ0189C-part2'
                phys_path: '/dev/gptid/760a94ee-537f-11e2-bad7-50465d4eb8b0'
                whole_disk: 1
                create_txg: 4
    features_for_read:

আমি যে জিইউডি খুঁজছিলাম তা হ'ল 15935140517898495532যা আমাকে করতে সক্ষম করেছে me

root@zeus:/dev# zpool offline hermes 15935140517898495532
root@zeus:/dev# zpool status
  pool: hermes
 state: DEGRADED
status: One or more devices has been taken offline by the administrator.
        Sufficient replicas exist for the pool to continue functioning in a
        degraded state.
action: Online the device using 'zpool online' or replace the device with
        'zpool replace'.
  scan: scrub repaired 0 in 2h4m with 0 errors on Sun Jun  9 00:28:24 2013
config:

        NAME                         STATE     READ WRITE CKSUM
        hermes                       DEGRADED     0     0     0
          raidz1-0                   DEGRADED     0     0     0
            ata-ST3300620A_5QF0MJFP  ONLINE       0     0     0
            ata-ST3300831A_5NF0552X  OFFLINE      0     0     0
            ata-ST3200822A_5LJ1CHMS  ONLINE       0     0     0
            ata-ST3200822A_3LJ0189C  ONLINE       0     0     0

errors: No known data errors

এবং তারপর

root@zeus:/dev# zpool replace hermes 15935140517898495532 /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ
root@zeus:/dev# zpool status
  pool: hermes
 state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
        continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
  scan: resilver in progress since Sun Jun  9 01:44:36 2013
    408M scanned out of 419G at 20,4M/s, 5h50m to go
    101M resilvered, 0,10% done
config:

        NAME                            STATE     READ WRITE CKSUM
        hermes                          DEGRADED     0     0     0
          raidz1-0                      DEGRADED     0     0     0
            ata-ST3300620A_5QF0MJFP     ONLINE       0     0     0
            replacing-1                 OFFLINE      0     0     0
              ata-ST3300831A_5NF0552X   OFFLINE      0     0     0
              ata-ST3500320AS_9QM03ATQ  ONLINE       0     0     0  (resilvering)
            ata-ST3200822A_5LJ1CHMS     ONLINE       0     0     0
            ata-ST3200822A_3LJ0189C     ONLINE       0     0     0

errors: No known data errors

রিসিলভারিংয়ের পরে সবকিছু আবার ভালভাবে কাজ শেষ হয়েছিল। এটা চমৎকার হওয়া এই তথ্য অন্তর্ভুক্ত করা হবে, আপনি একটি ডিস্ক এর GUID মাধ্যমে প্রাপ্ত ব্যবহার করতে পারেন zdbসঙ্গে zpoolকমান্ড zpool এর র manpage সঙ্গে।

সম্পাদন করা

zdbকমান্ডের নীচে দুর্ভাল দ্বারা চিহ্নিত হিসাবে কিছু আউটপুট নাও পেতে পারে। তারপরে আপনি ব্যবহার করার চেষ্টা করতে পারেন

zdb -l /dev/<name-of-device>

ডিভাইস সম্পর্কে স্পষ্টভাবে তথ্য তালিকাভুক্ত করতে (এমনকি এটি ইতিমধ্যে সিস্টেম থেকে নিখোঁজ থাকলেও)।


শীতল, তারপরে -nসুইচ ব্যবহার করে অ্যাড চালানোর আগে , তবে -gসুইচটি সেইভাবে ইউইডিকেও ধরে ফেলবে।
ব্রায়ান থমাস

ধন্যবাদ এটি ওয়েবের আশেপাশে পোকার জন্য বেশ সহায়ক ছিল আমি zdb থেকে স্টাফগুলি সংগ্রহ করার তথ্য খুঁজে পাই না।
xamox

আমি কয়েক সপ্তাহ ধরে অনুসন্ধান করেছি এবং শেষ পর্যন্ত এই উত্তরটি কৌশলটি করেছে। তবে তালিকাভুক্ত আইডিগুলি zpool status(sdab এর মতো /dev/disk/by-idনাম) পাগলের মতো দীর্ঘ আইডি নামগুলি নয়। তবে ls -la /dev/disk/by-idপ্রকাশিত হয় যে এগুলি সমস্ত লিঙ্ক /dev/...তাই আমি আমার UNAVAIL (এবং পরবর্তীকালে অফলাইন) ডিস্কের দিকে ইঙ্গিতকারী একটি পেয়েছি এবং আমি এই পদক্ষেপগুলি সফলভাবে সম্পন্ন করতে সক্ষম হয়েছি। এটি এখন আবার প্রাণবন্ত। ধন্যবাদ!
ম্যাট

zpool status -gজিইউডি পাওয়ার জন্য একটি বিকল্প সংক্ষিপ্ত উপায় হ'ল প্রতিটি ডিভাইসের জিইউইডি ব্যবহার করে স্থিতি দেখায়। এছাড়াও, @ ম্যাট এর জন্য, zpool status -Lদীর্ঘ /dev/disk/by-idনামের পরিবর্তে বেসিক ডিভাইসের নাম ব্যবহার করে স্থিতিটি প্রদর্শিত হবে ।
স্টারনামার

আপনি প্রকৃত এমভিপি আপনার সমাধান নিয়ে ফিরে আসছেন। এটি আমার পক্ষে কাজ করেছে।
এক্সট্রাসিপি

3

সমস্যাটি হ'ল ডিস্কগুলি আইডির সাহায্যে ডিভাইস দ্বারা নয়।

এখানে কাজ করা উচিত যা কাজ করা উচিত:

ln -s /dev/null /dev/ata-ST3300831A_5NF0552X
zpool export hermes
zpool import hermes
zpool status
# note the new device name that should appear here
zpool offline hermes xxxx
zpool replace hermes xxxx /dev/disk/by-id/ata-ST3500320AS_9QM03ATQ

সম্পাদনা: আমার 30 সেকেন্ড দেরি হয়েছিল ...


ধন্যবাদ। আমি নিখোঁজ ড্রাইভে একটি খালি লিঙ্ক তৈরি করার চেষ্টা করছিলাম তবে এটি বলে চলেছে no such device in pool
মার্কাস

আমার পরামর্শটি আপনি যা করেছেন তার প্রায় একই রকম। একমাত্র পার্থক্যটি হল ডিভাইস গাইডেন্স পাওয়ার উপায়। / Dev / নাল (যা একটি খালি লিঙ্ক থেকে পৃথক) তে একটি zpool status
সিমিলিংক তৈরি

এই পদ্ধতিটি ব্যবহার করে আমি আসলে "ত্রুটি" ড্রাইভটি প্রতিস্থাপন না করে অনলাইনে ফিরে পেতে পরিচালিত করেছি (সুতরাং আমি এড়িয়ে গেল offlineএবং replaceপদক্ষেপগুলি)। নাল লিঙ্কটি সরিয়ে আমি দ্বিতীয়বার পুলটি আমদানি করেছি। সম্ভবত এটি কেবল ড্রাইভ লেবেল নিয়ে সমস্যা ছিল? আসলে, ড্রাইভের নামটি একই ছিল। আমি পরে একটি সম্পূর্ণ স্ক্রাব করেছি এবং কোনও ত্রুটি পাওয়া যায় নি।
Serrano,

2

@ মার্কাস: আপনার নিজের প্রশ্নের এই দুর্দান্ত উত্তর পোস্ট করার জন্য ধন্যবাদ, এটি আমাকে অনেক সাহায্য করেছে helped

অন্য দিন আমি একটি মোচড় পেয়েছি যা আপনার আগ্রহী হতে পারে (এবং ভবিষ্যতে অন্য যে কেউ এখানে আসবেন): এই একই ত্রুটির কারণে আমার একটি ক্যাশে ডিভাইস ছিল যা পুল থেকে ফেলে দেওয়া হয়েছিল এবং "UNAVAIL" হিসাবে চিহ্নিত হয়েছে) I (জেডএফএস -8000-4 জে, "লেবেল অনুপস্থিত বা অবৈধ"), এবং এটি অফলাইন / অপসারণ / প্রতিস্থাপনের চেষ্টা করা ঠিক একই "পুলটিতে কোনও ডিভাইস" বার্তাটি দিয়ে ব্যর্থ হয়েছে।

কিন্তু, যখন আমি তোমার সমাধান প্রয়োগ করার চেষ্টা করেছিল, প্লেইন "zdb" (কোন যুক্তি সহ) হয়নি না ডিভাইস, অনেক কম তার GUID তার তালিকা দেখাবে।

কিছু খনন করার পরে, আমি দেখতে পেলাম যে "zdb -l / dev / DEVICENAME" জিইউডিটি তালিকাভুক্ত করেছে (এটি সরাসরি ডিভাইস থেকে নেওয়া, এবং পুলের রেকর্ডগুলি থেকে নয়), এবং সেই জিআইডি ব্যবহার করে আমাকে প্রতিস্থাপনটি করতে সক্ষম করে (আসলে আমি একটি কাজ করেছি "জপপুল অফলাইন" এর পরে একটি "জপপুল সরান" এবং তারপরে একটি "জপপুল অ্যাড", যা পুরোপুরি কার্যকর হয়েছিল)।


ধন্যবাদ! একটি আপনার মন্তব্যের একটি রেফারেন্স সহ আমার নিজের গৃহীত উত্তরে একটি ইঙ্গিত যুক্ত করেছে।
মার্কাস

আমার জন্য, zdb -l /dev/...সর্বদা "লেবেল আনপ্যাক করতে ব্যর্থ" দেখানো হয়েছিল।
ম্যাট

0

আমারও একি দশা:

ড্রাইভটি এমনভাবে ব্যর্থ হয়েছিল যে এটি আর BIOS- এ নিবন্ধভুক্ত হয়নি (সম্পূর্ণ মৃত)। zpool statusউল্লিখিত যে এটি ছিল UNAVAILABLE

আমি একটি অনুরূপ ধারণক্ষমতা ড্রাইভ করা, এবং আমি একটি নতুন যেমন বরাদ্দ পরিচালিত spareছিল INUSEএবং ড্রাইভ resilvered। তবে, এটি আসলে জপুলের অংশ ছিল না, বরং পুলটি হারিয়ে যাওয়া ড্রাইভের স্মৃতি ছিল, ভেবেছিল যে এটি আবার কোনও দিন উপস্থিত হবে।

সমাধানটি প্রথমে zpool থেকে নিখোঁজ ড্রাইভটি ড্রপ করা ছিল :

[root@hactar ~]# zpool detach hactar_data /dev/gptid/87410b00-adb0-11e6-9193-00241d738094  

তারপরে, চিহ্নিত চিহ্নিত ড্রাইভটিও ফেলে দিন spare-1 INUSE:

[root@hactar ~]# zpool detach hactar_data /dev/gptid/f2089b59-2654-11e5-8d99-00241d738094

একবার আমি এটি করার পরে, দেখে মনে হচ্ছে ফ্রিএনএএস আমাকে replaceকমান্ড না করেই এটি আবিষ্কার করেছিল , তবে আপনার সিস্টেমটি যদি এটি নিজেই খুঁজে না নেয় তবে নিম্নলিখিত কমান্ডটি একটি ডিভাইসটিকে অন্যটির সাথে প্রতিস্থাপন করে:

zpool replace {your_poolname} {drive to be replaced} {new drive to take its place}

উদাহরণ স্বরূপ:

zpool replace hactar_data /dev/gptid/87410b00-adb0-11e6-9193-00241d738094 /dev/gptid/87410b00-adb0-11e6-9193-00241d
738094
  • জিপিটিডস আমার zpool statusআদেশ থেকে এসেছে ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.