ডিড্রেসকিউ দ্রুত করার কোনও উপায় আছে কি?


26

আমার প্রায় 5 দিন আগে 500 গিগাবাইট ড্রাইভ এইচডিডি ক্রাশ হয়েছিল। আমি ddrescueকিছু দিন আগে গুরুত্বপূর্ণ পার্টিশনটিতে ব্যবহার করেছি এবং এটি প্রায় 2 দিন ধরে "ট্রিমিং ব্যর্থ ব্লক" এ চলেছে।

মূল আদেশ:

ddrescue -n /dev/rdisk1s2 /Volumes/OSXBackup/rdisk1s2.img /Volumes/OSXBackup/rdisk1s2.log

বর্তমান আউটপুট:

Initial status (read from logfile)
rescued:   248992 MB,  errsize:   1007 MB,  errors:   15867
Current status
rescued:   249021 MB,  errsize:    978 MB,  current rate:    17408 B/s
   ipos:    44405 MB,   errors:   15866,    average rate:     2784 B/s
   opos:    44405 MB,     time from last successful read:       0 s
Trimming failed blocks...

আসল কমান্ডটি ddrescue -nপ্যারামিটারটি ব্যবহার করেছিল এবং আমি প্রয়োজন হিসাবে কয়েকবার প্রক্রিয়াটি পুনরায় শুরু করেছি (এবং মনে হয়েছে এটি প্রতিটি সময় ছেড়ে গেছে ঠিক সেখানেই উঠে গেছে)।

এই প্রক্রিয়াটি দ্রুত করার কোনও উপায় আছে কি?

সম্পাদনা: ছয় ঘন্টা পরে, এটি বর্তমান অবস্থা:

rescued:   249079 MB,  errsize:    920 MB,  current rate:      409 B/s
   ipos:    39908 MB,   errors:   15851,    average rate:     2698 B/s
   opos:    39908 MB,     time from last successful read:       0 s
Trimming failed blocks...

এটি প্রদর্শিত হয় যে "ত্রুটিগুলি" ধীরে ধীরে ধীরে ধীরে গণনা করছে, আইপোস / অপোসগুলি এটিতে যে পরিমাণ ডেটা মন্থন করতে হবে তা গণনা করছে এবং এটি 750 এমবি / ঘন্টা বেগে কাজ করছে বলে মনে হচ্ছে। এই হারে, এটি 53 ডলারে সম্পূর্ণ হবে। বাবা।

সম্পাদনা # 2: দু'দিন পরে, এখনও চলছে। তবে, আশা আছে। এটি "ট্রিমিং ব্যর্থ ব্লকস" অংশটি সরিয়ে নিয়েছে এবং পরবর্তী পর্যায়ে "স্প্লিটিং ব্যর্থ ব্লকস" এ গেছে। যদি কিছু হয় তবে এই প্রশ্নটি দেখার থেকে কী দূরে নেওয়া উচিত তা হ'ল যখন যথেষ্ট পরিমাণে ডেটা / ত্রুটি জড়িত তখন এটি অবশ্যই দীর্ঘ সময় নেয়। আমার একমাত্র আশা হ'ল সমস্ত কিছু বলা হয়ে গেলে এবং করা শেষ হয়ে আমি সফলভাবে কিছু গুরুত্বপূর্ণ ডেটা পুনরুদ্ধার করতে পারি।

rescued:   249311 MB,  errsize:    688 MB,  current rate:        0 B/s
ipos:    26727 MB,   errors:   15905,    average rate:     1331 B/s
opos:    26727 MB,     time from last successful read:      20 s
Splitting failed blocks...

2
এটি নকশা দ্বারা, সম্ভবত। যতটা সম্ভব তথ্য বের করার জন্য এটি একাধিক পাস করে
জার্নম্যান গিক

17
পরের বার একটি ছোট হার্ড ড্রাইভ ক্রাশ করুন ;-)
জো

আমার 4 টিবি ট্রিমিং পর্যায়ে যেতে 3 সপ্তাহ সময় নিয়েছে ... (আমি নিশ্চিত যে এটির সমস্ত ব্যাক আপ হয়েছে তবে উদ্ধারে কোনও ক্ষতি হয় না;)) ... এবং @ এনজাকে ধন্যবাদ, আমি কেবল আশা করছি আমি ক্রিসমাসের মাধ্যমে শেষ করব
স্টিফেন

আচ্ছা ... আজ সকালে আমি গণনা করেছি এটি ছাঁটাইয়ের গতির উপর ভিত্তি করে যেতে এক সপ্তাহ সময় লেগেছে, এবং ভয়েলা! হয়ে গেল! তাই ছাঁটাই করতে ~ 3 সপ্তাহ এবং weeks 3 সপ্তাহ ট্রিমিং। স্ক্র্যাপিংটি ডেটাটির 1.93% হওয়া সত্ত্বেও সত্যিই দ্রুত ছিল - আমার ধারণা ভাল এবং খারাপ ডেটা খুব দ্রুত ... কেবলমাত্র ভয়াবহভাবে ধীর গতির মধ্যে? (আমি -Mএই সকালে সকালের রিবুটগুলি এবং ডিস-আপগ্রেড কিছুটা বিশৃঙ্খলা তৈরির ক্ষেত্রে আবার নিয়ে দৌড়াচ্ছি )
স্টিফেন

উত্তর:


14

আমি লক্ষ্য করেছি যে -n(নো-বিভক্ত) বিকল্পটি একসাথে -r 1(একবার চেষ্টা করুন) এবং -cএকটি ছোট মান হিসাবে সেট (ক্লাস্টার আকার) সাহায্য করতে পারে।

আমার ধারণাটি যে বিচ্ছিন্ন পদক্ষেপটি খুব ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ddrescueবিচ্ছিন্ন হয়ে যায় এবং ক্ষতিগ্রস্থ অঞ্চলগুলি আবার বিভক্ত হয়। এটি অনেক সময় নেয় কারণ ddrescueখুব অল্প পরিমাণে ডেটা পুনরুদ্ধার করার চেষ্টা করে। তাই, আমি ব্যবহার করতে পছন্দ -nএকসঙ্গে (কোন-বিভক্ত) সঙ্গে -c 64, -c 32, -c 16, Aso

সম্ভবত -n(নো-বিভক্ত) সর্বদা একটি প্রথম পাসের জন্য এগিয়ে এবং বিপরীত দিকগুলির জন্য ব্যবহার করা উচিত। দেখে মনে হচ্ছে যে যত বেশি ডেটা বিভক্ত হয়েছিল, ক্লোনিংটি ধীরে ধীরে, যদিও আমি এই সম্পর্কে নিশ্চিত নই। আমি অনুমান করি যে চিকিত্সাবিহীন অঞ্চলগুলি বৃহত্তর, ddrescueআবার দৌড়ানোর সময় সবচেয়ে ভাল , কারণ আরও স্বচ্ছল ক্ষেত্রগুলি ক্লোন করতে হবে।

যেহেতু আমি কোনও লগফিল ব্যবহার করছি, যখন ডেটা পড়ার গতি দুটি কম হয়ে যায় তখন আমি Ctrl+ দিয়ে কমান্ডটি বাতিল করতে দ্বিধা করি না C

আমি -R(বিপরীত) মোডটিও ব্যবহার করি এবং প্রথম পাসের পরে এটি প্রায়শই আমাকে সামনের চেয়ে পিছনের দিকে উচ্চ গতি দেয়।

কমান্ডটি আবার -r Nচালানোর সময় কীভাবে ইতিমধ্যে পুনরায় চেষ্টা করা ক্ষেত্রগুলি ( ) পরিচালনা করা হয় তা আমার কাছে স্পষ্ট নয় ddrescue, বিশেষত যখন ফরোয়ার্ড (ডিফল্ট) এবং বিপরীত ( -R) ক্লোনিং কমান্ডগুলিকে পর্যবসিত করা হয়। আমি নিশ্চিত না যে তাদের চেষ্টা করাবারের সংখ্যাটি লগফাইলে সংরক্ষণ করা হয়েছিল এবং সম্ভবত কাজটি আবার অকেজো হয়ে গেছে।

সম্ভবত -i(ইনপুট অবস্থান) পতাকা জিনিসগুলিকেও গতি বাড়িয়ে তুলতে সহায়তা করতে পারে।


8

এর অগ্রগতিটি দেখতে খুব কঠিন হতে পারে ddrescueতবে এর মধ্যে আরও একটি কমান্ড রয়েছে যার নাম রয়েছে ddrescuelog

একটি সাধারণ কমান্ড ddrescuelog -t YourLog.txtএই দুর্দান্ত ইনফসগুলি আউটপুট দেবে:

current pos:     2016 GB,  current status: trimming
domain size:     3000 GB,  in    1 area(s)
rescued:     2998 GB,  in 12802 area(s)  ( 99.91%)
non-tried:         0 B,  in    0 area(s)  (  0%)

errsize:     2452 MB,  errors:   12801  (  0.08%)
non-trimmed:   178896 kB,  in 3395 area(s)  (  0.00%)
non-split:     2262 MB,  in 9803 area(s)  (  0.07%)
bad-sector:    10451 kB,  in 19613 area(s)  (  0.00%)

এমনকি ddrescueচলমান অবস্থায় আপনি এটি ব্যবহার করতে পারেন ...


ট্রিমিংয়ে যাওয়ার জন্য আমার 4 টিবি পাওয়ার জন্য 3 সপ্তাহ:: errsize: 289420 MB, errors: 34926 ( 7.23%) non-trimmed: 288130 MB, in 105407 area(s) ( 7.20%) non-split: 1243 MB, in 185 area(s) ( 0.03%) bad-sector: 47490 kB, in 92728 area(s) ( 0.00%)(... তবে কমান্ডটির জন্য ধন্যবাদ!
স্টিফেন

4

Ddrescue এর অগ্রগতি নিরীক্ষণের আরও একটি উপায় (লিনাক্স-এ, কমপক্ষে) স্ট্রেসের ব্যবহারের মাধ্যমে।

প্রথমে "পিএস অক্স | গ্রেপ ডিড্রেসিকিউ" ব্যবহার করে ডিড্রেসকিউ প্রক্রিয়াটির জন্য পিআইডি সন্ধান করুন

root@mojo:~# ps aux | grep ddrescue
root     12083  0.2  0.0  15764  3248 pts/1    D+   17:15   0:04 ddrescue --direct -d -r0 /dev/sdb1 test.img test.logfile
root     12637  0.0  0.0  13588   940 pts/4    S+   17:46   0:00 grep --color=auto ddrescue

তারপরে সেই প্রক্রিয়াটির বিরুদ্ধে "স্ট্রেস" চালান। আপনি এরকম কিছু দেখতে পাবেন:

root@mojo:~# strace -p 12083
Process 12083 attached - interrupt to quit
lseek(4, 1702220261888, SEEK_SET)       = 1702220261888
write(4, "\3101\316\335\213\217\323\343o\317\22M\346\325\322\331\3101\316\335\213\217\323\343o\317\22M\346\325\322\331"..., 512) = 512
lseek(3, 1702220261376, SEEK_SET)       = 1702220261376
read(3, "\3101\316\335\213\217\323\343o\317\22M\346\325\322\331\3101\316\335\213\217\323\343o\317\22M\346\325\322\331"..., 512) = 512
lseek(4, 1702220261376, SEEK_SET)       = 1702220261376
write(4, "\3101\316\335\213\217\323\343o\317\22M\346\325\322\331\3101\316\335\213\217\323\343o\317\22M\346\325\322\331"..., 512) = 512
^C

... ইত্যাদি। আউটপুটটি দ্রুত এবং কুরুচিপূর্ণ, তাই আমি তারপরে যে জিনিসগুলি যত্ন করি সেগুলি ফিল্টার করার জন্য "গ্রেপ" এর মাধ্যমে পাইপ দিন:

root@mojo:/media/u02/salvage# nice strace -p 12083 2>&1|grep lseek
lseek(4, 1702212679168, SEEK_SET)       = 1702212679168
lseek(3, 1702212678656, SEEK_SET)       = 1702212678656
lseek(4, 1702212678656, SEEK_SET)       = 1702212678656
lseek(3, 1702212678144, SEEK_SET)       = 1702212678144
lseek(4, 1702212678144, SEEK_SET)       = 1702212678144
lseek(3, 1702212677632, SEEK_SET)       = 1702212677632
lseek(4, 1702212677632, SEEK_SET)       = 1702212677632
lseek(3, 1702212677120, SEEK_SET)       = 1702212677120
lseek(4, 1702212677120, SEEK_SET)       = 1702212677120
lseek(3, 1702212676608, SEEK_SET)       = 1702212676608
^C

উদাহরণস্বরূপ, "1702212676608" "যে পরিমাণ 2 টিবি ডিস্ক আপনি উদ্ধার করার চেষ্টা করছেন তার উপর এখনও প্রক্রিয়া করা দরকার এমন ডেটার সাথে সমান।" (হ্যাঁ। আউচ।) Ddrescue এর স্ক্রিন আউটপুটে "1720 গিগাবাইট" হিসাবে হলেও - অনুরূপ সংখ্যা বের করে দিচ্ছে।

স্ট্রেস আপনাকে পরীক্ষা করার জন্য একটি উচ্চতর গ্রানুলারিটি ডেটা স্ট্রিম দেয়; এটি ddrescue গতি মূল্যায়ন এবং একটি সমাপ্তির তারিখ অনুমান করার আরও একটি উপায়।

এটি নিয়মিত চালানো সম্ভবত একটি খারাপ পরিকল্পনা কারণ এটি সিপিইউ সময়ের জন্য ড্রেসস্কুতে প্রতিযোগিতা করবে। আমি এটি "মাথা" তে পাইপিংয়ের চেষ্টা করেছি যাতে আমি প্রথম 10 টি মান ধরতে পারি:

root@mojo:~# strace -p 4073 2>&1 | grep lseek | head

আশা করি এটি কাউকে সাহায্য করবে।


আছে strace -e lseek …যে জন্য - যদিও pv -d <pid>সুন্দর হতে পারে।
মাধ্যাকর্ষণ

3

যদি আপনার লক্ষ্যটি হ'ল বিপুল পরিমাণ ডেটা অক্ষুণ্ণ থাকে, তবে আপনি এর নিষ্কাশনকে গতি বাড়িয়ে দিতে পারেন। তবে আপনি যদি যথাসম্ভব যথাসম্ভব ডেটা উদ্ধার করতে চান, তবে প্রতিটি এবং প্রত্যেককে ডিড্রেকু স্তনবৃত্তি করা অবলম্বন করা পথ।


2
ঠিক কীভাবে করব?
উইলিয়াম এন্টারিকেন

3

আমি খুঁজে পেয়েছি যে -K প্যারামিটার দিয়ে খেলে আপনি জিনিসগুলিকে গতিময় করতে পারেন। আমি যা দেখেছি তা থেকে যদি ডি-ড্রেসকিউ একটি ত্রুটি খুঁজে পায় যখন -n বিকল্পটি চালানোর সময় একটি নির্দিষ্ট পরিমাণের সেক্টরগুলিতে ঝাঁপিয়ে পড়ার চেষ্টা করে। এটি এখনও পড়তে না পারলে এটি দ্বিগুণ আকারের লাফ দেয়। আপনার যদি বৃহত ক্ষতিগ্রস্থ অঞ্চল রয়েছে তবে আপনি একটি বড় কে মান (উদাহরণস্বরূপ 100 এম) ইঙ্গিত করতে পারেন এবং তাই ত্রুটির উপরের জাম্পটি প্রথমবারের চেয়ে বড় হবে এবং সমস্যাযুক্ত অঞ্চলগুলি দ্রুত প্রথম এড়ানো সহজ হবে avoid

উপায় দ্বারা, লগ বিশ্লেষণ করার জন্য একটি দুর্দান্ত গ্রাফিকাল অ্যাপ্লিকেশন রয়েছে।

http://sourceforge.net/projects/ddrescueview/


0

হার্ড ডিস্কের ফাইল সিস্টেমটি কী যেখানে আপনি উদ্ধার চিত্র এবং লগফিল সংরক্ষণ করেন? আমি কেবল অভিজ্ঞতাটি তৈরি করেছি যে একটি ইউএসবি স্টিক থেকে লিনাক্স মিন্ট চলমান একটি ল্যাপটপে একটি 500 গিগাবাইট অভ্যন্তরীণ হার্ড ড্রাইভ (এসএটিএর মাধ্যমে সংযুক্ত) উদ্ধার করা, উদ্ধার চিত্রটি এবং exFatফর্ম্যাটযুক্ত ইউএসবি হার্ড ড্রাইভে লগফিল সংরক্ষণ করা ধীরে ধীরে শুরু হয়েছিল (1-2MB / সেকেন্ড) তবে প্রায় 250 গিগাবাইটের পরে এটি কেবল <100KB / সেকেন্ডে ক্রলিং করছিল। মনে হচ্ছে উদ্ধার চিত্রের ফাইলটি যত বড় হচ্ছে ধীরে ধীরে become

তারপরে আমি রেসকিউ চিত্রটি এবং লগফিলকে অন্য অস্থায়ী স্থানে সরিয়ে নিয়েছি, ইউএসবি হার্ড ড্রাইভটি ext4ফাইল সিস্টেমের সাথে পুনরায় ফর্ম্যাট করেছি , ফাইলগুলি এতে আবার সরিয়ে নিয়েছি এবং ddrescue প্রক্রিয়াটি আবার শুরু করেছি - এবং এখন এটি আবার 1-20MB / সেকেন্ড দিয়ে চলেছে (ওঠানামা করছে) তবে গড়ে প্রায় 7MB / সেকেন্ড)!

দেখে মনে হচ্ছে exFatখুব বড় ফাইল (কয়েকশ গিগাবাইট) খুব ভাল খেলছে না।


0

ডিস্কটি উদ্ধার করার জন্য দ্রুত এবং দ্রুত বিকল্পের জন্য আপনি একটি sh স্ক্রিপ্ট ফাইল ব্যবহার করতে পারেন এবং "sh filename.sh" দিয়ে ফাইলটি চালাতে পারেন। এতে প্রদর্শিত এই লাইনটি রয়েছে, কেবল "sudo ddrescue" এবং "ঘুম 3" আরও কয়েকবার পুনরাবৃত্তি করুন, ঘুমটি ড্রাইভকে কয়েক সেকেন্ড বিশ্রামে রাখতে ব্যবহৃত হয়, এটি কিছু কারণে ভাল হতে পারে:

#! /bin/sh -e  
sudo ddrescue -d -r0 -e +0 -T 1s -n /dev/drivepartition file.img log.logfile 
sleep 3

-R0 কোন উত্তর নেই। -E +0 1 ত্রুটিতে প্রস্থান করার জন্য। -T 1s 1 সেকেন্ড ব্যর্থ পড়ার সাথে প্রস্থান করে। এমন বিকল্প রয়েছে যেগুলি সরাসরি -d হিসাবে ব্যবহার করতে পারে এবং কোনও স্ক্র্যাপের জন্য -n ব্যবহার করতে পারে যা গতি বাড়িয়ে তুলতে পারে।

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


-1

dd_rhelp হ'ল একটি শেল স্ক্রিপ্ট যা আপনার সম্পূর্ণ ডিস্কে dd_rescue "[...] ব্যবহার করে, তবে এটি ব্যাডসেক্টরগুলির গুচ্ছগুলিতে যুগে যুগে চেষ্টা করার আগে সর্বোচ্চ বৈধ ডেটা সংগ্রহ করার চেষ্টা করবে"

এটি বেশ পুরানো (২০১২) তবে এখনও কার্যকর। ddrescue এখনও চেষ্টা করেন নি।


প্রশ্নটি GNU ddrescue (not dd_rescue) সম্পর্কে, যা স্পষ্টভাবে এই স্ক্রিপ্টটির একটি উন্নত প্রতিস্থাপন।
কিনোকিজুফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.