লিনাক্সে কীভাবে হার্ড ড্রাইভ পূরণ করতে হয়


24

আমি কিছু অংশের কোডের পরীক্ষা নিরীক্ষা করছি এবং ডেটা সহ একটি হার্ড ড্রাইভ পূরণ করতে চাই। আমি খুঁজে পেয়েছি যে ddতাত্ক্ষণিকভাবে বিশাল ফাইল তৈরি করতে পারে, তবে dfএকমত নয়। আমি যা চেষ্টা করেছি তা এখানে:

dd if=/dev/zero of=filename bs=1 count=1 seek=$((10*1024*1024*1024))

ls -lhএকটি 10 ​​জি ফাইল প্রদর্শন করে। তবে df -hদেখায় যে পার্টিশনটি সঙ্কুচিত হয়নি। dfএখন ডেটা সনাক্ত করার জন্য আমার কী করা দরকার ? আমি এমন কিছু প্রত্যাশা করছি যা আমি ইউনিট পরীক্ষায় কোড করি।


আপনি সার্ভারফল্ট.কম

বিটিডাব্লু, 10 * 1024 * 1024 * 1024 10 * 2 ** 30, কিছুটা সহজ।
ডেল্টারে

উত্তর:


26

seek=<big number>কৌতুকটি নিয়ে সমস্যাটি হ'ল ফাইল সিস্টেমটি (সাধারণত) চতুর: কোনও ফাইলের অংশটি যদি কখনও লিখিত না হয় (এবং তাই সমস্ত শূন্য হয়) তবে এটির জন্য কোনও স্থান বরাদ্দ করা বিরক্ত করে না - সুতরাং আপনি যেমন ' দেখা গেছে, আপনার কাছে একটি 10 ​​গিগাবাইট ফাইল থাকতে পারে যা কোনও স্থান গ্রহণ করে না (এটি "স্পার্স ফাইল" হিসাবে পরিচিত, এবং কিছু ক্ষেত্রে যেমন খুব কার্যকর হতে পারে, যেমন নির্দিষ্ট ডাটাবেস বাস্তবায়ন)।

আপনি স্থানটি জোর করে বরাদ্দ করতে পারেন (উদাহরণস্বরূপ):

dd if=/dev/zero of=filename bs=$((1024*1024)) count=$((10*1024))

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


আমি সাধারণত বিএস = ব্যবহার করি (যে ড্রাইভে আমি লিখছি তার অর্ধেক ক্যাশে আকারই থাকুক)। পরবর্তীতে পুনরায় আকার দেওয়ার জন্য বৃহত্তর হার্ড ড্রাইভে পার্টিশনগুলি ইমেজ করার সময় এটি আজও ভাল কাজ করেছে। ইটিএ: সমালোচনামূলক শব্দ HALF।
atroon

20

এটির অন্য বিকল্প হিসাবে, আপনি একক স্ট্রিংয়ের সাথে হ্যাঁ ব্যবহার করতে পারেন এবং এর থেকে dd চালানোর চেয়ে প্রায় 10 গুণ বেশি গতিতে চলতে হবে যদি = / dev / urandom = লার্জফাইলে। এটার মত

yes abcdefghijklmnopqrstuvwxyz0123456789 > largefile

এটি আশ্চর্যজনকভাবে, dd if = / dev / শূন্যের = ফাইলের নাম বিএস = 1 এম ব্যবহার করার মতোই দ্রুত।
ভিনসলে

বাক্য গঠনটিও মনে রাখা সহজ।
এডব্লিউটি

7

আপনি "স্পার্স ফাইল" নামে পরিচিত যা তৈরি করেছেন - এমন একটি ফাইল যা এর বেশিরভাগটি খালি থাকে (উদাহরণস্বরূপ \ 0 হিসাবে আবার পড়ে), ডিস্কে স্থানটি গ্রহণ করে না যা আসলে লেখা আছে (1 বি, 10 জিবি পরে) ফাঁক)।

আমি বিশ্বাস করি না যে আপনি তাত্ক্ষণিকভাবে প্রকৃত ডিস্কের স্থান গ্রহণ করে বিশাল ফাইল তৈরি করতে পারবেন - দৈহিক স্থান গ্রহণের অর্থ ফাইল সিস্টেমে আপনার ফাইলটিতে ডিস্ক ব্লক বরাদ্দ করা দরকার।

আমি মনে করি আপনি পুরানো ফ্যাশনযুক্ত "ডিডি if = / dev / শূন্য = ফাইল নাম বিএস = 100 এম কাউন্ট = 100" এর সাথে আটকে আছেন যা আপনার ড্রাইভের অনুক্রমিক লেখার গতি দ্বারা সীমাবদ্ধ।


6

আপনি যদি ভরাট ফাইল সিস্টেমের ক্ষেত্রে কেবল পরীক্ষাগুলি করে থাকেন, তবে ফলোকট যথেষ্ট ভাল। এবং দ্রুত! যেমন

ফলোকট -l 150 জি


3
এই ফাইলের নাম উল্লেখ করা দরকার: fallocate -l 150G foo। তবুও সরঞ্জামটির উল্লেখ করার জন্য +1।
কামিল ম্যাকিয়েরোস্কি

3

seekখুব বড় bsএবং / অথবা ব্যবহার এবং ব্যবহার বন্ধ করুন count। এটি যেমন আপনি একটি বিচ্ছিন্ন ফাইল তৈরি করছেন এবং অবশ্যই আপনার এটি করা দরকার নেই।


3

আপনি যদি আক্ষরিকভাবে হার্ড ড্রাইভটি পূরণ করতে চান তবে এটি করুন:

dd if=/dev/zero of=zeros bs=1M

আপনি আকারটি সীমাবদ্ধ করতে চাইলে আপনি countচ্ছিকভাবে গণনা নির্দিষ্ট করতে পারেন তবে আপনি যদি গণনাটি বাদ দেন তবে ডিস্কের জায়গা ছাড়াই এটি চলবে।

dd if=/dev/zero of=zeros bs=1M count=10240

স্মরণার্থে উল্লিখিত হিসাবে, আপনি যদি ব্লকের আকার 1 বি (বিএস = 1) এর পরিবর্তে 1 এমবি (বিএস = 1 এম) তে সেট করেন তবে আপনি আরও ভাল পারফরম্যান্স পাবেন। এটি এখনও কিছু সময় নিতে পারে তবে আপনি যদি আপনার আদেশের অগ্রগতি পরীক্ষা করতে চান তবে একটি পৃথক কনসোল খুলুন এবং এই আদেশগুলি চালনা করুন:

ps aux | grep dd

এই কমান্ডে ডিডির পিআইডি ব্যবহার করুন (পিআইডিকে ডিডির পিআইডি দিয়ে প্রতিস্থাপন করুন):

kill -USR1 PID

তারপরে আপনার ডিডি টার্মিনালটি দেখুন। অবশ্যই, যখন আপনি কেবল ড্রাইভটি পূরণ করার চেষ্টা করছেন তখন এটি সীমিতভাবে ব্যবহৃত হয় (যথাক্রমে ফ্রি ডিস্কের স্থান বা ফাইলের আকার পরীক্ষা করার জন্য আপনি কেবল df বা du ব্যবহার করতে পারেন)। যাইহোক, অন্যান্য সময় আছে যখন এটি ডিডি আউটপুটটিকে অগ্রগতি করতে কার্যকর হয়।

অতিরিক্ত ক্রেডিট: ফাঁকা স্থান শূন্য করার জন্য একটি ব্যবহারিক ব্যবহার হ'ল, এরপরে আপনি "শূন্য" ফাইলগুলি মুছুন এবং একটি ডিস্ক চিত্র ফাইলটিতে পুরো পার্টিশনটি (বা ডিস্ক, যদি আপনি সমস্ত পার্টিশনকে শূন্য করেছেন) ডিডি করতে পারেন (বলুন , ডিস্ক-ব্যাকআপ.ডিডি), তারপরে ফাইলটি সংকুচিত করুন। মুক্ত স্থানটি এখন অত্যন্ত সংকোচনযোগ্য, সুতরাং আপনার সঙ্কুচিত ডিডি চিত্রটি মূল ব্লক ডিভাইসের তুলনায় অনেক ছোট হবে যার বিষয়বস্তু রয়েছে।

শেনানিগানস: একটি বড় জিরো ফাইল জিপ আপ করুন এবং আপনার সমস্ত বন্ধুদের এটি ইমেল করুন। তাদের বলুন এটি সত্যিই দুর্দান্ত কিছু।


2

আপনি নিম্নলিখিত কমান্ডটি দিয়ে একটি বিচ্ছিন্ন 1 টিবি ফাইল তৈরি করুন:

dd if=/dev/zero of=bigfile1 bs=10000000000 count=512

কোটা অতিমাত্রায় পৌঁছে গেলে বা কোনও ফাইল সিস্টেম ভরাট হলে কী ঘটে তা পরীক্ষার ক্ষেত্রে এটি দরকারী ছিল।

df -h উপলভ্য স্থান আরও কম হওয়া দেখায়।

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