একটি সম্পূর্ণ ডিস্কের ডিডি পুনরায় শুরু করা হচ্ছে


10

আমি আমার পুরানো হার্ড ড্রাইভটি পুরানো ভাল ব্যবহার করে এলোমেলো করে দিচ্ছি dd:

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512

এটি একটি 2 টিবি অ্যারে এবং আমার ম্যাকবুক (চলমান লিনাক্স, ঠিক আছে?) কেবল প্রায় 3.7MB / s তে ডেটা লিখতে পারে, যা বাড়িতে আমার ডেস্কটপটিতে 20MB / s করতে দেখে বেশ করুণ hetic আমি যখন আজ রাতে বাড়িতে যাব, আমি ddএখানে রান থামাতে চাই, বাড়িতে নিয়ে যেতে চাই এবং আরও শক্তিশালী মেশিন দিয়ে রাতারাতি কী ধরণের অগ্রগতি করা যায় তা দেখুন।

আমি একটি সাধারণ লুপ ব্যবহার করে অগ্রগতি পর্যবেক্ষণ করেছি:

while true; do kill -USR1 $PID ; sleep 10 ; done

আউটপুটটি দেখতে এটির মতো দেখাচ্ছে:

464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s

আমি যদি ddবাড়িতে পাসটি পুনরায় চালু করতে পারি তবে কীভাবে এটি পুনরায় চালু করব? আমি seekপ্যারামিটার সম্পর্কে অবহিত , কিন্তু আমি কী এটিকে নির্দেশ করব, রেকর্ড নম্বর বা বাইট গণনা?


1
আমি কি রেকর্ড নম্বরটি ব্যবহার করব? যে ব্লক লিখিত গণনা সমান?
নাফটুলি কায়

2
ব্লকের সংখ্যা = মোট বাইট / ব্লকের আকার, তত্ত্ব অনুসারে এটি 238048755782/512 = 464938976 হওয়া উচিত তবে আপনার কিছু আংশিক রেকর্ড রয়েছে তাই আমি নিরাপদ হওয়ার জন্য নম্বরটি থেকে কয়েকটি ব্লক বিয়োগ করব, যেমনseek=464938960
ডোন_ক্রিসট

উত্তর:


8

@ ডন_ক্রিসটি যেমন ইতিমধ্যে মন্তব্য করেছে, কেবল seek=পুনরায় শুরু করতে ব্যবহার করুন।

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512 seek=464938971

GNU dd বাইটগুলি সন্ধান করার ক্ষেত্রেও সমর্থন করে, তাই ব্লকসাইজ নির্বিশেষে আপনি ঠিক আবার শুরু করতে পারেন:

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=1M \
   seek=238048755782 oflag=seek_bytes

একটি বৃহত ব্লকসাইজ এমনকি ধীর ডিভাইসের মতো গতিতে সহায়তা করে /dev/urandom

আপনি যদি দ্রুত বিকল্পগুলির সন্ধান করেন তবে আপনি cryptsetup plainOpenএকটি এলোমেলো কী এবং শূন্যের সাহায্যে এটির /dev/urandomআকার বাড়িয়ে (এইএস-এনআই ছাড়াই) বা পুরো গতিতে (এইএস-এনআই সহ) চালানো উচিত।

shred -n 1আপনার ব্যবহারের ক্ষেত্রে সিউডোরান্ডম ডেটা যথেষ্ট ভাল হলে আপনিও ব্যবহার করতে পারেন। shredএমনকি খুব ধীর মেশিনেও পুরো ডিস্কের গতি ব্যবহার করতে সক্ষম হওয়া উচিত।


আমি plainOpenএখনও অবধি জানতাম না । গ্রেট! 12 টিরও বেশি ব্যবহারের মধ্যে 256GB এর বিপরীতে প্রায় 4 ঘন্টার মধ্যে আমার 2TB ড্রাইভের স্ক্র্যাম্বলিং শেষ হয়েছে /dev/urandom
নাফটুলি কে

3

শুধু যারা শুধু randomizing ডিস্ক বদলে কপি চাই জন্য একটি অনুস্মারক (যা নয় যে সাধারণ): আপনি ব্যবহার করতে পারেন skip=BLOCKSশুরু করার জন্য পড়া সঠিক অবস্থানে, এবং seek=BLOCKSশুরু করার জন্য লেখা সঠিক অবস্থানে। উভয় বিকল্পগুলি বাইটগুলি নয়, ব্লক ব্যবহার করে। ব্রেকিং / পুনঃসূচনা করার সময়, কেবলমাত্র ক্ষেত্রে একগুচ্ছ ব্লক সরিয়ে ফেলা ভাল। এটি bs512 এর উপরে মূল্য বাড়ানোর পক্ষে মূল্যবান, কারণ আপনি যদি পরপর প্রচুর ডেটা পড়ে থাকেন তবে আপনি আরও ভাল পারফরম্যান্সে পৌঁছাতে পারবেন।

আপনার ক্ষেত্রে এটি অবশ্যই একটি ব্লক মান যা আপনার পাস করতে হবে seek। আপনি bsগতি বাড়িয়ে তুলতে পারবেন কিনা তা ঠিক করার জন্য আপনার সামঞ্জস্য করার চেষ্টা করা /dev/randomউচিত, দ্রুত যেতে হবে (সিউডো-এলোমেলো এবং অ-ব্লকিং যখন এটির কোনও এন্ট্রপি উপলব্ধ নেই)


0

dd512 বাইটের মতো একটি ছোট ব্লকের আকারটি আপনার ডিস্কের সর্বোচ্চ থ্রুপুট থেকে অনেক ধীর হতে পারে। ভাল পারফরম্যান্সের জন্য একটি উচ্চতর ব্লকের আকার (একটি কুঁচকে আমি কয়েক মেগাবাইট বলব) ব্যবহার করুন। অথবা ব্যবহার করুন cat- লিনাক্সে আমিcatdd যখন একক ডিস্ক জড়িত ছিল তখন অনুকূল ব্লকের আকারের সাথে তত দ্রুত গতিতে দেখা গিয়েছিল (আমি জানি না এটি ওএসএক্সের জন্যও রয়েছে কিনা)।

কতদূর catপৌঁছেছে তা জানতে , lsof -p12341234 প্রক্রিয়াটির প্রক্রিয়া আইডি যেখানে চালান cat

কোনও অবস্থান থেকে পুনরায় শুরু করতে, ব্যবহার করুন

{ dd bs=1 seek=123456; cat /dev/urandom; } >/dev/disk/…

যেখানে 123456 বাইটে অফসেট।


0

একটি ডিস্ক ক্লোনিং:

এই থ্রেড থেকে এই উত্তরটি প্রসারিত করার সময় , কোনও ব্যক্তি পুরো ডিস্কটি ক্লোনিং করে আবার শুরু করতে পারে:

এই উদাহরণটি 5400 আরপিএম রোটারী ড্রাইভ থেকে একটি নির্দিষ্ট সিস্টেমে এসএসডি-তে অনুলিপি করার জন্য অনুকূলিত। gddপ্রতিনিধিত্ব করে GNU dd:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' bs=4M status=progress
247426187264 bytes (247 GB, 230 GiB) copied, 2082 s, 119 MB/s
59012+0 records in
59011+0 records out
247510073344 bytes (248 GB, 231 GiB) copied, 2082.92 s, 119 MB/s

আমি এটি দুটি উপায়ে একটিতে পুনরায় শুরু করতে পারি:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=59011 skip=59011 \
status=progress

বা:

> sudo gdd 'if=/dev/rdisk3' 'of=/dev/rdisk6' \
bs=4M \
seek=247510073344 skip=247510073344 \
oflag=seek_bytes iflag=skip_bytes \
status=progress

প্রথম উদাহরণে, কারণ আমরা ব্যবহার 59011এবং 59012, কারণ 59011কত ব্লক আকারের রেকর্ড সম্পূর্ণরূপে বিঘ্নিত হওয়ার আগে কপি করা হয়েছে। (রেকর্ড আউট)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.