আমার কাছে একটি জপুলে বেশ কয়েকটি মূল্যবান ব্যক্তিগত ডেটা রয়েছে যা ডেটা দুর্নীতির কারণে অ্যাক্সেস করতে পারি না। পুলটি মূলত ২০০৯ সালে আবার একটি উবুন্টু ৮.০৪ সিস্টেমের উপরে একটি ভিএমওয়্যার ভার্চুয়াল মেশিনের অভ্যন্তরে একটি ফ্রিবিএসডি .2.২ সিস্টেমে সেট আপ করা হয়েছিল। ফ্রিবিএসডি ভিএম এখনও পাওয়া যায় এবং জরিমানা চলছে, কেবলমাত্র হোস্ট ওএস এখন ডেবিয়ান to এ পরিবর্তিত হয়েছে, মোট 12 টি ভিএমওয়্যার জেনেরিক এসসিএসআই ডিভাইসের মাধ্যমে অতিথি ভিএমের কাছে হার্ড ড্রাইভগুলি অ্যাক্সেসযোগ্য করে তুলেছে।
এখানে 2 টি পুল রয়েছে:
- zpool01: 2x 4x 500GB
- zpool02: 1x 4x 160GB
যেটি কাজ করে তা খালি, ভাঙা সমস্ত গুরুত্বপূর্ণ ডেটা ধারণ করে:
[user@host~]$ uname -a
FreeBSD host.domain 7.2-RELEASE FreeBSD 7.2-RELEASE #0: \
Fri May 1 07:18:07 UTC 2009 \
root@driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
[user@host ~]$ dmesg | grep ZFS
WARNING: ZFS is considered to be an experimental feature in FreeBSD.
ZFS filesystem version 6
ZFS storage pool version 6
[user@host ~]$ sudo zpool status
pool: zpool01
state: UNAVAIL
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool01 UNAVAIL 0 0 0 insufficient replicas
raidz1 UNAVAIL 0 0 0 corrupted data
da5 ONLINE 0 0 0
da6 ONLINE 0 0 0
da7 ONLINE 0 0 0
da8 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
da4 ONLINE 0 0 0
pool: zpool02
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool02 ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da9 ONLINE 0 0 0
da10 ONLINE 0 0 0
da11 ONLINE 0 0 0
da12 ONLINE 0 0 0
errors: No known data errors
কয়েক সপ্তাহ আগে আমি পুলটি অ্যাক্সেস করতে সক্ষম হয়েছি। তার পর থেকে, আমাকে হোস্ট মেশিনের সমস্ত হার্ডওয়্যার বেশ কয়েকটি প্রতিস্থাপন করতে হয়েছিল এবং বেশ কয়েকটি হোস্ট অপারেটিং সিস্টেম ইনস্টল করতে হয়েছিল।
আমার সন্দেহ এই যে এই ওএস ইনস্টলেশনগুলির মধ্যে একটি 500 জিবি ড্রাইভের একটিতে (প্রথমটি?) একটি বুটলোডার (বা যা কিছু) লিখেছিল এবং কিছু জপুল মেটাডেটা (বা যাই হোক না কেন) নষ্ট করেছে - 'বা যাই হোক না কেন' অর্থ এই যে কেবল একটি অস্পষ্ট ধারণা এবং সেই বিষয়টি আমার দৃ side় দিক নয় ...
জেডএফএস সম্পর্কে প্রচুর ওয়েবসাইট, ব্লগ, মেলিং তালিকা ইত্যাদি রয়েছে। আমি এই প্রশ্নটি এখানে এই আশায় পোস্ট করছি যে এটি আমার ডেটা ফিরে পাওয়ার জন্য বুদ্ধিমান, কাঠামোগত, নিয়ন্ত্রিত, অবহিত, জ্ঞানীয় পদ্ধতির জন্য পর্যাপ্ত তথ্য সংগ্রহ করতে সহায়তা করে - এবং আশা করি একই পরিস্থিতিতে অন্য কাউকে সাহায্য করতে পারেন।
'Zfs পুনরুদ্ধার' জন্য গুগল করার সময় প্রথম অনুসন্ধানের ফলাফলটি সোলারিস জেডএফএস প্রশাসন গাইডের জেডএফএস ট্রাবলশুটিং এবং ডেটা রিকভারি অধ্যায়। প্রথম জেডএফএস ব্যর্থতা মোড বিভাগে এটি 'দূষিত জেডএফএস ডেটা' অনুচ্ছেদে বলেছে:
ডেটা দুর্নীতি সর্বদা স্থায়ী এবং মেরামতের সময় বিশেষ বিবেচনা প্রয়োজন। এমনকি অন্তর্নিহিত ডিভাইসগুলি মেরামত বা প্রতিস্থাপন করা হলেও মূল ডেটা চিরতরে নষ্ট হয়ে যায়।
কিছুটা হতাশাব্যঞ্জক।
তবে দ্বিতীয় গুগল অনুসন্ধানের ফলাফলটি ম্যাক্স ব্রুনিংয়ের ওয়েবলগ এবং সেখানে আমি পড়েছি
সম্প্রতি, আমি একজনের কাছ থেকে একটি ইমেল প্রেরণ করা হয়েছিল যার 10 টিবি জেডএফএস পুলে 15 বছরের ভিডিও এবং সংগীত রয়েছে যা বিদ্যুতের ব্যর্থতার পরে, ত্রুটিযুক্ত হয়ে ওঠে। দুর্ভাগ্যক্রমে তার ব্যাকআপ ছিল না। তিনি ফ্রিবিএসডি 7 তে জেডএফএস সংস্করণ 6 ব্যবহার করছিলেন [...] প্রায় 1 সপ্তাহ ডিস্কের ডেটা পরীক্ষা করার পরে, আমি মূলত এটি সমস্ত পুনরুদ্ধার করতে সক্ষম হয়েছি।
এবং
জেডএফএস আপনার ডেটা হারাতে পারলে আমি সন্দেহ করি। আমি সন্দেহ করি যে আপনার ডেটা আছে, তবে এটিতে যাওয়ার জন্য আপনার সঠিক উপায়টি খুঁজে নেওয়া দরকার।
(এটি শুনতে শুনতে আরও অনেক কিছু মনে হচ্ছে ...)
প্রথম পদক্ষেপ : সমস্যাটি আসলে কী?
ঠিক কীভাবে zpoolটি দূষিত বলে রিপোর্ট করা হয়েছে তা আমি কীভাবে নির্ণয় করতে পারি? আমি দেখতে পাই যে জেডডিবি রয়েছে যা ওয়েবের কোথাও সূর্য বা ওরাকল দ্বারা আনুষ্ঠানিকভাবে নথিভুক্ত বলে মনে হচ্ছে না। এর ম্যান পৃষ্ঠা থেকে:
NAME
zdb - ZFS debugger
SYNOPSIS
zdb pool
DESCRIPTION
The zdb command is used by support engineers to diagnose failures and
gather statistics. Since the ZFS file system is always consistent on
disk and is self-repairing, zdb should only be run under the direction
by a support engineer.
If no arguments are specified, zdb, performs basic consistency checks
on the pool and associated datasets, and report any problems detected.
Any options supported by this command are internal to Sun and subject
to change at any time.
আরও, বেন রকউড একটি বিশদ নিবন্ধ পোস্ট করেছেন এবং সেখানে ২৮ শে জুন, ২০০৮-এ প্রাগে ওপেন সোলারিস বিকাশকারী সম্মেলনে ম্যাক্স ব্রুনিংয়ের (এবং এমডিবি) কথা বলার একটি ভিডিও রয়েছে।
ভাঙা zpool এ রুট হিসাবে zdb চালনা নিম্নলিখিত আউটপুট দেয়:
[user@host ~]$ sudo zdb zpool01
version=6
name='zpool01'
state=0
txg=83216
pool_guid=16471197341102820829
hostid=3885370542
hostname='host.domain'
vdev_tree
type='root'
id=0
guid=16471197341102820829
children[0]
type='raidz'
id=0
guid=48739167677596410
nparity=1
metaslab_array=14
metaslab_shift=34
ashift=9
asize=2000412475392
children[0]
type='disk'
id=0
guid=4795262086800816238
path='/dev/da5'
whole_disk=0
DTL=202
children[1]
type='disk'
id=1
guid=16218262712375173260
path='/dev/da6'
whole_disk=0
DTL=201
children[2]
type='disk'
id=2
guid=15597847700365748450
path='/dev/da7'
whole_disk=0
DTL=200
children[3]
type='disk'
id=3
guid=9839399967725049819
path='/dev/da8'
whole_disk=0
DTL=199
children[1]
type='raidz'
id=1
guid=8910308849729789724
nparity=1
metaslab_array=119
metaslab_shift=34
ashift=9
asize=2000412475392
children[0]
type='disk'
id=0
guid=5438331695267373463
path='/dev/da1'
whole_disk=0
DTL=198
children[1]
type='disk'
id=1
guid=2722163893739409369
path='/dev/da2'
whole_disk=0
DTL=197
children[2]
type='disk'
id=2
guid=11729319950433483953
path='/dev/da3'
whole_disk=0
DTL=196
children[3]
type='disk'
id=3
guid=7885201945644860203
path='/dev/da4'
whole_disk=0
DTL=195
zdb: can't open zpool01: Invalid argument
আমি মনে করি শেষে 'অবৈধ যুক্তি' ত্রুটিটি ঘটেছিল কারণ zpool01 আসলে উপস্থিত নেই: এটি কার্যত zpool02 এ ঘটে না, তবে এর পরে আর কোনও আউটপুট বলে মনে হয় না ...
ঠিক আছে, এই পর্যায়ে, নিবন্ধটি দীর্ঘ দীর্ঘ হওয়ার আগে এটি পোস্ট করা ভাল।
হয়তো কেউ আমাকে এখান থেকে কীভাবে এগিয়ে যেতে হবে সে সম্পর্কে কিছু পরামর্শ দিতে পারে এবং আমি যখন প্রতিক্রিয়াটির জন্য অপেক্ষা করি তখন আমি ভিডিওটি দেখব, উপরের জেডডিবি আউটপুটটির বিশদটি জানব, বেনস নিবন্ধটি পড়ব এবং কী কী তা বের করার চেষ্টা করবে কি...
20110806-1600 + + 1000
আপডেট 01:
আমি মনে করি যে আমি এর মূল কারণটি পেয়েছি: ম্যাক্স ব্রুনিং খুব দ্রুত আমার একটি ইমেলের প্রতিক্রিয়া জানাতে পেরেছিলেন, এর আউটপুট চেয়েছিল zdb -lll
। পুলের 'ভাল' রেইডজ 1 অর্ধের 4 হার্ড ড্রাইভের যে কোনওটিতে, আউটপুটটি আমি উপরে যে পোস্ট করেছি তার অনুরূপ। তবে, 'ভাঙা' অর্ধে 4 ড্রাইভের প্রথম 3 টিতে, লেবেল 2 এবং 3 এর জন্য zdb
প্রতিবেদন করা failed to unpack label
হয়েছে, পুলের চতুর্থ ড্রাইভটি ঠিক আছে বলে মনে হচ্ছে, zdb
সমস্ত লেবেল দেখায়।
এই ত্রুটি বার্তাটি গুগল করা এই পোস্টটি নিয়ে আসে । এই পোস্টে প্রথম প্রতিক্রিয়া থেকে:
জেডএফএসের সাথে, এটি প্রতিটি শারীরিক ভিদেবের 4 টি অভিন্ন লেবেল রয়েছে, এক্ষেত্রে একক হার্ড ড্রাইভ। ভিদেবের শুরুতে এল 0 / এল 1 এবং ভিদেবের শেষে এল 2 / এল 3।
পুলের সমস্ত 8 ড্রাইভ একই মডেলের, সিগেট ব্যারাকুডা 500 জিবি । যাইহোক, আমার মনে আছে আমি পুলটি 4 টি ড্রাইভ দিয়ে শুরু করেছি, তার মধ্যে একজন মারা গিয়েছিল এবং সিগেটের দ্বারা ওয়ারেন্টি প্রতিস্থাপন করা হয়েছিল। পরে, আমি আরও 4 টি ড্রাইভ যুক্ত করেছি। সেই কারণে, ড্রাইভ এবং ফার্মওয়্যার শনাক্তকারীরা পৃথক:
[user@host ~]$ dmesg | egrep '^da.*?: <'
da0: <VMware, VMware Virtual S 1.0> Fixed Direct Access SCSI-2 device
da1: <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device
da2: <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device
da3: <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device
da4: <ATA ST3500418AS CC37> Fixed Direct Access SCSI-5 device
da5: <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device
da6: <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device
da7: <ATA ST3500320AS SD15> Fixed Direct Access SCSI-5 device
da8: <ATA ST3500418AS CC35> Fixed Direct Access SCSI-5 device
da9: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device
da10: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device
da11: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device
da12: <ATA SAMSUNG HM160JC AP10> Fixed Direct Access SCSI-5 device
আমার মনে আছে যদিও সমস্ত ড্রাইভের আকার একই ছিল। এখনকার ড্রাইভগুলির দিকে তাকালে এটি বোঝা যায় যে তাদের তিনটির জন্য আকার পরিবর্তন হয়েছে, তারা 2 এমবি দ্বারা সঙ্কুচিত হয়েছে:
[user@host ~]$ dmesg | egrep '^da.*?: .*?MB '
da0: 10240MB (20971520 512 byte sectors: 255H 63S/T 1305C)
da1: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da2: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da3: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da4: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da5: 476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da6: 476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da7: 476938MB (976771055 512 byte sectors: 255H 63S/T 60801C) <--
da8: 476940MB (976773168 512 byte sectors: 255H 63S/T 60801C)
da9: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da10: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da11: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
da12: 152627MB (312581808 512 byte sectors: 255H 63S/T 19457C)
সুতরাং এটির দ্বারা, এটি কোনও ওএস ইনস্টলেশন নয় যা 'একটি ড্রাইভে একটি বুটলোডার লিখেছিল' (যেমন আমি আগে ধরে নিয়েছিলাম), এটি আসলে নতুন মাদারবোর্ড (একটি আসুস পি 8 পি 67 এলই ) একটি 2 এমবি হোস্ট তৈরি করেছিল তিনটি ড্রাইভের শেষে সুরক্ষিত অঞ্চল যা আমার জেডএফএস মেটাডেটা গোলমাল করেছে।
কেন এটি সমস্ত ড্রাইভে এইচপিএ তৈরি করে নি? আমি বিশ্বাস করি এটি হ'ল কারণ এইচপিএ সৃষ্টি কেবল পুরানো ড্রাইভগুলিতে একটি বাগ দিয়ে করা হয়েছিল যা পরে একটি সিগেট হার্ড ড্রাইভ বিআইওএস আপডেট দ্বারা স্থির করা হয়েছিল: কয়েক সপ্তাহ আগে এই পুরো ঘটনাটি যখন শুরু হয়েছিল, তখন আমি সিগেটের সিটুলগুলিকে দৌড়েছিলাম কিনা তা পরীক্ষা করার জন্য ran ড্রাইভগুলির সাথে শারীরিকভাবে কোনও ভুল (এখনও পুরানো হার্ডওয়ারে থাকা) এবং আমি একটি বার্তা পেয়েছি যে আমার কিছু ড্রাইভের একটি বায়োস আপডেট দরকার। যেহেতু আমি এখন সেই বার্তাটির সঠিক বিবরণ এবং ফার্মওয়্যার আপডেট ডাউনলোডের লিঙ্কটি পুনরুত্পাদন করার চেষ্টা করছি, তাই মনে হচ্ছে যে মাদারবোর্ড এইচপিএ তৈরি করেছে, তাই সিটুলস ডস উভয় সংস্করণই প্রশ্নের হার্ডড্রাইভগুলি সনাক্ত করতে ব্যর্থ হয়েছে - একটি দ্রুত invalid partition
বা অনুরূপ কিছু তারা শুরু করার সাথে সাথে ঝলকানি, এটাই। হাস্যকরভাবে, যদিও তারা স্যামসং ড্রাইভের একটি সেট খুঁজে পায়।
(আমি একটি নন-নেটওয়ার্ক সিস্টেমে একটি ফ্রিডোস শেলটিতে প্রায় স্ক্রু করার বেদনাদায়ক, সময়সাপেক্ষ এবং শেষ পর্যন্ত ফলহীন বিবরণ এড়িয়ে গিয়েছি) শেষ পর্যন্ত, আমি সিটুলগুলি উইন্ডোজ চালানোর জন্য একটি পৃথক মেশিনে উইন্ডোজ 7 ইনস্টল করেছি) সংস্করণ 1.2.0.5। ডস সিটুল সম্পর্কে কেবল একটি সর্বশেষ মন্তব্য: এগুলি স্ট্যান্ডলোন বুট করার চেষ্টা করতে বিরক্ত করবেন না - পরিবর্তে কয়েক মিনিট বিনিয়োগ করুন এবং দারুণ আলটিমেট বুট সিডি সহ একটি বুটেবল ইউএসবি স্টিক তৈরি করুন - যা ডস সিটুলগুলি ছাড়াও আপনাকে সত্যিকার অর্থেই অনেকগুলি পেয়ে যায় দরকারী সরঞ্জাম
যখন শুরু হয়, উইন্ডোজ জন্য সিটুলস এই ডায়ালগটি নিয়ে আসে:
লিঙ্কগুলি সিরিয়াল নম্বর পরীক্ষককে নেতৃত্ব দেয় (যা কোনও কারণে ক্যাপচা দ্বারা সুরক্ষিত - আমার ছিল 'আক্রমণাত্মক ব্যবহারকারী') এবং ফার্মওয়্যার আপডেট সম্পর্কে একটি জ্ঞান বেস নিবন্ধ । সম্ভবত হার্ড ড্রাইভের মডেল এবং কিছু ডাউনলোডগুলির সাথে সম্পর্কিত আরও লিঙ্ক রয়েছে এবং কী নয় তবে আমি এই মুহুর্তটির জন্য সেই পথটি অনুসরণ করব না:
আমি এমন সময়ে তিনটি ড্রাইভের ফার্মওয়্যার আপডেট করার জন্য তাড়া করব না যা পার্টিশনগুলি কেটে ফেলেছে এবং ভাঙা স্টোরেজ পুলের অংশ pool এটা ঝামেলা চাইছে। প্রারম্ভিকদের জন্য, ফার্মওয়্যার আপডেটটি সম্ভবত পুনরায় করা যাবে না - এবং এটি আমার ডেটা ফিরে পাওয়ার সম্ভাবনাটি অকাট্যভাবে নষ্ট করে দিতে পারে।
অতএব, আমি প্রথম যা করতে যাচ্ছি তার প্রথমটি হ'ল ড্রাইভগুলির চিত্র এবং অনুলিপিগুলি সহ কাজ করা, সুতরাং কিছু ভুল হলে আবার ফিরে আসার একটি মূল কারণ। এটি একটি অতিরিক্ত জটিলতার পরিচয় দিতে পারে, কারণ জেডএফএস সম্ভবত লক্ষ্য করবে যে ড্রাইভগুলি অদলবদল হয়েছে (ড্রাইভ সিরিয়াল নম্বর বা অন্য কোনও ইউআইডি বা যা কিছু হোক না কেন), যদিও এটি একই হার্ড ড্রাইভের মডেলটিতে বিট-হুবহু ডিডি কপি করে। তাছাড়া, জিপুলটিও লাইভ নয়। ছেলে, এটা খুব কঠিন হতে পারে।
তবে অন্য বিকল্পটি হ'ল আসলগুলির সাথে কাজ করা এবং মিররড ড্রাইভগুলি ব্যাকআপ হিসাবে রাখা, তবে তারপরে আমি যখন অরিজিনালগুলির সাথে কিছু ভুল হয়ে যাই তখন সম্ভবত আমি উপরের জটিলতায় চলে আসব। না, ভাল না।
ভাঙা পুলটিতে বগি বায়োস দিয়ে তিনটি ড্রাইভের চিত্রিত প্রতিস্থাপন হিসাবে কাজ করবে এমন তিনটি হার্ড ড্রাইভ সাফ করার জন্য, আমাকে এখন সেখানে থাকা স্টাফগুলির জন্য কিছু স্টোরেজ স্পেস তৈরি করতে হবে, তাই আমি গভীর খনন করব হার্ডওয়্যার বাক্স এবং কিছু পুরানো ড্রাইভগুলি থেকে একটি অস্থায়ী zpool একত্রিত - যা আমি জেডএফএস কীভাবে ডিডি'ডি ড্রাইভের সাথে লেনদেন করে তা পরীক্ষা করার জন্য ব্যবহার করতে পারি।
এটি কিছুটা সময় নিতে পারে ...
20111213-1930 + + 1100
আপডেট 02:
এটি আসলে কিছুটা সময় নিয়েছিল। আমি আমার ডেস্কে বেশ কয়েকটি ওপেন কম্পিউটার কেস সহ কয়েক মাস অতিবাহিত করেছি হার্ডড্রাইভ স্ট্যাকগুলি ঝুলিয়ে রেখেছি এবং কয়েক রাত ইয়ারপ্লাগের সাথে ঘুমিয়েছি, কারণ আমি বিছানায় যাওয়ার আগে মেশিনটি বন্ধ করতে পারছিলাম না কারণ এটি দীর্ঘতর সমালোচনামূলক অপারেশন চলছিল। । যাইহোক, আমি শেষ পর্যন্ত পরাজিত! :-) আমি প্রক্রিয়াটিতেও অনেক কিছু শিখেছি এবং আমি সেই জ্ঞানটি এখানে একইরকম পরিস্থিতিতে ভাগ করে নিতে চাই।
এই নিবন্ধটি ইতিমধ্যে জেডএফএস ফাইল সার্ভারের কারও কারও কারও চেয়ে পড়ার সময় নেই, তাই আমি এখানে বিশদে যাব এবং আরও নীচে প্রয়োজনীয় ফলাফলগুলি সহ একটি উত্তর তৈরি করব।
ত্রুটিযুক্ত ড্রাইভগুলি মিরর করা হয়েছিল এমন একক 500 গিগাবাইট ড্রাইভ থেকে স্টাফটি সরাতে পর্যাপ্ত স্টোরেজ স্থানটি সংগ্রহ করার জন্য আমি অপ্রচলিত হার্ডওয়্যার বাক্সে গভীর খনন করেছি। আমি তাদের ইউএসবি কেস থেকে কয়েকটি হার্ড ড্রাইভ ছিনিয়ে নিতে হয়েছিল, তাই আমি এগুলি সরাসরি এসটিএ এর মাধ্যমে সংযুক্ত করতে পারি। আরও কিছু সম্পর্কযুক্ত ছিল, জড়িত ছিল না এবং পুরানো ড্রাইভগুলির কিছু ব্যর্থ হতে শুরু করে যখন আমি তাদের পুনরায় একটি জপুল প্রতিস্থাপনের প্রয়োজন হয় এমন ক্রিয়ায় ফিরিয়ে দিয়েছিলাম, তবে আমি এড়িয়ে যাব।
টিপ: কোনও পর্যায়ে, এতে প্রায় 30 টি হার্ড ড্রাইভ জড়িত ছিল। অনেক হার্ডওয়ারের সাহায্যে এগুলি যথাযথভাবে সজ্জিত করা একটি বিশাল সহায়তা; আপনার ডেস্ক থেকে পড়ে থাকা তারগুলি আলগা বা হার্ড ড্রাইভটি অবশ্যই প্রক্রিয়ায় সহায়তা করবে না এবং আপনার ডেটা অখণ্ডতার আরও ক্ষতি করতে পারে।
আমি কিছু মেক-শিফ্ট কার্ডবোর্ড হার্ড ড্রাইভ ফিক্সচার তৈরি করতে কয়েক মিনিট সময় ব্যয় করেছি যা জিনিসগুলিকে বাছাই করতে সত্যই সহায়তা করেছে:
হাস্যকরভাবে, যখন আমি প্রথমবারের সাথে প্রথমবারের ড্রাইভগুলি সংযুক্ত করেছি, আমি বুঝতে পেরেছিলাম সেখানে একটি পুরানো জপুল আছে যা আমি অবশ্যই কিছু পুরানো সংস্করণ দিয়ে পরীক্ষার জন্য তৈরি করেছি, তবে যে সমস্ত ব্যক্তিগত তথ্য হারিয়ে গেছে, তার সবগুলিই নয়, তবে ডেটা ক্ষতি ছিল কিছুটা হ্রাস পেয়েছে, এর অর্থ ফাইলগুলি পিছনে পিছনে স্থানান্তরিত করা।
অবশেষে, আমি ব্যাকবহুল ড্রাইভগুলিতে সমস্যাযুক্ত ড্রাইভগুলি মিরর করেছিলাম, zpool এর জন্য সেগুলি ব্যবহার করেছি এবং মূলগুলি সংযোগ বিচ্ছিন্ন করে রেখেছি। ব্যাকআপ ড্রাইভে একটি নতুন ফার্মওয়্যার রয়েছে, কমপক্ষে সিটুলগুলি কোনও প্রয়োজনীয় ফার্মওয়্যার আপডেটের প্রতিবেদন করে না। আমি একটি সাধারণ ডিডি সহ এক ডিভাইস থেকে অন্য ডিভাইসে মিররিংটি করেছি eg
sudo dd if=/dev/sda of=/dev/sde
আমি বিশ্বাস করি যে জেডএফএস হার্ডওয়্যার পরিবর্তনটি লক্ষ্য করে (কিছু হার্ড ড্রাইভ ইউইউডি বা যে কোনও কিছু দ্বারা), তবে সেটিকে তেমন মনে হয় না।
জিপুলটি এখনও একই অবস্থায় ছিল, অপর্যাপ্ত প্রতিলিপি / দুর্নীতিগ্রস্থ ডেটা।
যেমনটি আগে উল্লিখিত এইচপিএ উইকিপিডিয়া নিবন্ধে উল্লিখিত হয়েছে, লিনাক্স বুট করার পরে একটি হোস্ট সুরক্ষিত অঞ্চলের উপস্থিতি রিপোর্ট করা হয় এবং এইচডিপিআরএম ব্যবহার করে তদন্ত করা যায় । যতদূর আমি জানি, ফ্রিবিএসডি-তে কোনও এইচডিপারম সরঞ্জাম উপলব্ধ নেই, তবে এই সময়ের মধ্যে আমি ফ্রিবিএসডি 8.2 এবং ডিবিয়ান 6.0 ডুয়াল-বুট সিস্টেম হিসাবে ইনস্টল করেছি, তাই আমি লিনাক্সে বুট করেছি:
user@host:~$ for i in {a..l}; do sudo hdparm -N /dev/sd$i; done
...
/dev/sdd:
max sectors = 976773168/976773168, HPA is disabled
/dev/sde:
max sectors = 976771055/976773168, HPA is enabled
/dev/sdf:
max sectors = 976771055/976773168, HPA is enabled
/dev/sdg:
max sectors = 976771055/976773168, HPA is enabled
/dev/sdh:
max sectors = 976773168/976773168, HPA is disabled
...
সুতরাং স্পষ্টতই সমস্যাটি হ'ল নতুন মাদারবোর্ডটি ড্রাইভের শেষে বেশ কয়েকটি মেগাবাইটের এইচপিএ তৈরি করেছিল যা উপরের দুটি জেডএফএস লেবেলকে 'লুকিয়ে' রেখেছিল, অর্থাৎ জেডএফএসকে সেগুলি দেখতে বাধা দিয়েছে।
এইচপিএর সাথে ডাবলিং করা একটি বিপজ্জনক ব্যবসা বলে মনে হচ্ছে। এইচডিপর্ম ম্যান পৃষ্ঠা থেকে, প্যারামিটার -N:
Get/set max visible number of sectors, also known as the Host Protected Area setting.
...
To change the current max (VERY DANGEROUS, DATA LOSS IS EXTREMELY LIKELY), a new value
should be provided (in base10) immediately following the -N option.
This value is specified as a count of sectors, rather than the "max sector address"
of the drive. Drives have the concept of a temporary (volatile) setting which is lost on
the next hardware reset, as well as a more permanent (non-volatile) value which survives
resets and power cycles. By default, -N affects only the temporary (volatile) setting.
To change the permanent (non-volatile) value, prepend a leading p character immediately
before the first digit of the value. Drives are supposed to allow only a single permanent
change per session. A hardware reset (or power cycle) is required before another
permanent -N operation can succeed.
...
আমার ক্ষেত্রে, এইচপিএ এইভাবে সরানো হয়েছে:
user@host:~$ sudo hdparm -Np976773168 /dev/sde
/dev/sde:
setting max visible sectors to 976773168 (permanent)
max sectors = 976773168/976773168, HPA is disabled
এবং একইভাবে এইচপিএ সহ অন্যান্য ড্রাইভগুলির জন্য। যদি আপনি ভুল ড্রাইভ পান বা আপনার নির্দিষ্ট করা আকারের পরামিতি সম্পর্কে কিছু পাওয়া যায় তবে তা গ্রহণযোগ্য নয়, এইচডিপর্মটি যথেষ্ট স্মার্ট এটি চিত্রিত করার জন্য:
user@host:~$ sudo hdparm -Np976773168 /dev/sdx
/dev/sdx:
setting max visible sectors to 976773168 (permanent)
Use of -Nnnnnn is VERY DANGEROUS.
You have requested reducing the apparent size of the drive.
This is a BAD idea, and can easily destroy all of the drive's contents.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.
এরপরে, আমি ফ্রিবিএসডি 7.2 ভার্চুয়াল মেশিনটি পুনরায় চালু করেছি যার উপর ভিত্তি করে zpool তৈরি হয়েছিল এবং zpool স্থিতি আবার একটি ওয়ার্কিং পুলের প্রতিবেদন করেছে। হ্যাঁ! :-)
আমি ভার্চুয়াল সিস্টেমে পুলটি রফতানি করেছি এবং এটি হোস্ট ফ্রিবিএসডি 8.2 সিস্টেমে পুনরায় আমদানি করেছি।
আরও কয়েকটি বড় হার্ডওয়্যার আপগ্রেড, আরেকটি মাদারবোর্ড অদলবদল, জেডএফএস 4/15-তে একটি জেডএফএস পুল আপডেট, একটি সম্পূর্ণ স্ক্রাবিং এবং এখন আমার জিপুল 8x1TB প্লাস 8x500 জিবি রাইডজ 2 অংশ নিয়ে গঠিত:
[user@host ~]$ sudo zpool status
pool: zpool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zpool ONLINE 0 0 0
raidz2 ONLINE 0 0 0
ad0 ONLINE 0 0 0
ad1 ONLINE 0 0 0
ad2 ONLINE 0 0 0
ad3 ONLINE 0 0 0
ad8 ONLINE 0 0 0
ad10 ONLINE 0 0 0
ad14 ONLINE 0 0 0
ad16 ONLINE 0 0 0
raidz2 ONLINE 0 0 0
da0 ONLINE 0 0 0
da1 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
da4 ONLINE 0 0 0
da5 ONLINE 0 0 0
da6 ONLINE 0 0 0
da7 ONLINE 0 0 0
errors: No known data errors
[user@host ~]$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/label/root 29G 13G 14G 49% /
devfs 1.0K 1.0K 0B 100% /dev
zpool 8.0T 3.6T 4.5T 44% /mnt/zpool
শেষ কথা হিসাবে, আমার কাছে মনে হয় জেডএফএস পুলগুলি খুব মারার পক্ষে খুব শক্ত। সূর্যের ছেলেরা কে এই সিস্টেমটি তৈরি করেছিল তার সমস্ত কারণ আছে কারণেই এটি ফাইল সিস্টেমে সর্বশেষ শব্দ বলে। সম্মান!