কম সময়ে একটি বড় আকারের ফাইল তৈরি করা হচ্ছে


17

আমি জিরো এবং এলোমেলো মান ভরা একটি বড় ফাইল 10 ডলার তৈরি করতে চাই। আমি ব্যবহার করে চেষ্টা করেছি:

dd if=/dev/urandom of=10Gfile bs=5G count=10

এটি প্রায় 2 জিবি ফাইল তৈরি করে এবং প্রস্থান স্থিতি '0' দিয়ে প্রস্থান করে। আমি কেন বুঝতে ব্যর্থ?

আমি ফাইলটি তৈরি করেও চেষ্টা করেছিলাম:

head -c 10G </dev/urandom >myfile

এটি তৈরি করতে এটি প্রায় 28-30 মিনিট সময় নেয়। তবে আমি এটি দ্রুত তৈরি করতে চাই। কারও সমাধান আছে?

এছাড়াও আমি তুলনা করার জন্য একই (সিউডো) র্যান্ডম প্যাটার্ন সহ একাধিক ফাইল তৈরি করতে চাই। কেউ কি এটি করার একটি উপায় জানেন?


AskUbuntu স্বাগতম! ddব্লকের আকারের কারণে আপনি সম্ভবত একটি ত্রুটি পেয়ে যাচ্ছেন। আপনি এই পোস্টটি stackoverflow.com/questions/6161823/… দেখতে চাইতে পারেন এটির সর্বোত্তম ব্লকের আকার, পাশাপাশি কিছু ব্যবহারকারীর স্ক্রিপ্ট / প্রোগ্রাম এবং অন্যান্য পরামর্শ ব্যবহার করে কীভাবে তা গণনা করা যায় তার কয়েকটি ভাল উত্তর রয়েছে dd
সময় নেই

উত্তর:


12

ফ্যালোকট ব্যবহার সম্পর্কে কীভাবে, এই সরঞ্জামটি আমাদের কোনও ফাইলের জন্য স্থান পূর্বপলোকিত করতে দেয় (যদি ফাইল সিস্টেমটি এই বৈশিষ্ট্যটি সমর্থন করে)। উদাহরণস্বরূপ, 'উদাহরণ' নামে পরিচিত একটি ফাইলে 5 গিগাবাইট ডেটা বরাদ্দ করা, কেউ এটি করতে পারেন:

fallocate -l 5G example

এটি ডিডির চেয়ে অনেক দ্রুত, এবং স্থানটি খুব দ্রুত বরাদ্দ করবে।


এই ফাইলটিতে কি এলোমেলো ডেটা রয়েছে বা বরাদ্দ ডিস্কের জায়গাতে যা ঘটেছিল তা এতে রয়েছে?
সিআরপিএন

এতে সমস্ত জিরো থাকবে। মূলত, স্থানটি পূর্বনির্ধারিত এবং আপনি যদি ডেটা পরিবর্তন না করেন তবে এটি শূন্য বলে ধরে নেওয়া হবে।
কলিন ইয়ান কিং

কীভাবে এটি /dev/zeroতখন ডাম্পিংয়ের চেয়ে দ্রুত হতে পারে ?
সিআরপিএন

1
এটি খুব দ্রুত কারণ এটি একটি সিস্টেম কল যা প্রিলোকেশন অবরুদ্ধ করে (যেমন এটি স্থান সংরক্ষণ করে তবে ন্যূনতম I / O করে), যেখানে / dev / শূন্য থেকে কোনও ফাইলের ডিডিং হিসাবে পড়ার / লেখার একটি বোঝা জড়িত।
কলিন ইয়ান কিং

আমি এই এক আপ করছি। যদিও একটি সর্বশেষ প্রশ্ন আমি truncateঅতীতে ব্যবহার করেছি এবং এটি জানতে পেরেছিলাম যে এটি শারীরিকভাবে ডিভাইসে ফাইল বরাদ্দ করে না এবং উপলব্ধ স্থান নির্বিশেষে অ্যাক্সেস না করা পর্যন্ত কেবল একটি স্বেচ্ছাসেবী বড় ফাইল তৈরি করে। আপনি কি নিশ্চিত যে এটি ঘটেনি fallocate? আমি এটি যাচাই করতাম তবে আমি একটি মোবাইলে ...
সিআরপিএন

8

আপনি ddসম্পূর্ণ শূন্য সমন্বিত একটি ফাইল তৈরি করতে ব্যবহার করতে পারেন । উদাহরণ:

dd if=/dev/zero of=zeros.img count=1 bs=1 seek=$((10 * 1024 * 1024 * 1024 - 1))

এটি খুব দ্রুত কারণ শুধুমাত্র একটি বাইট সত্যই শারীরিক ডিস্কে লেখা হয়। তবে কিছু ফাইল সিস্টেম এটি সমর্থন করে না।

আপনি যদি ছদ্ম-এলোমেলো বিষয়বস্তুযুক্ত একটি ফাইল তৈরি করতে চান তবে চালান:

dd if=/dev/urandom of=random.img count=1024 bs=10M

আমি আপনাকে বাফার আকার হিসাবে 10M ব্যবহার করার পরামর্শ দিচ্ছি ( bs)। এটি কারণ 10 এম খুব বেশি বড় নয় তবে এটি আপনাকে একটি ভাল বাফার আকার দেয়। এটি বেশ দ্রুত হওয়া উচিত, তবে এটি সর্বদা আপনার ডিস্কের গতি এবং প্রক্রিয়াকরণ শক্তির উপর নির্ভর করে।


5

ডিডি ব্যবহার করে, এটি এলোমেলো ডেটা ভরা একটি 10 ​​জিবি ফাইল তৈরি করা উচিত:

dd if=/dev/urandom of=test1 bs=1M count=10240

count মেগাবাইটে

উত্স: স্ট্যাকওভারফ্লো - লিনাক্সে প্রদত্ত আকার সহ একটি ফাইল কীভাবে তৈরি করবেন?


আমি কেবল চেষ্টা করেছি dd if=/dev/urandom of=10Gfile bs=500M count=20, যা আমাকে মাত্র 20 মিনিটের মধ্যে 10237226010 বাইট দিয়েছে।
জোস

1

আপনার প্রশ্নের প্রথম অংশের উত্তর:

একবারে 5 গিগাবাইটের একটি বাফার লেখার চেষ্টা করা ভাল ধারণা নয় কারণ আপনার কার্নেল সম্ভবত এটি সমর্থন করে না। এটি আপনাকে কোনও ক্ষেত্রে কোনও কার্যকারিতা সুবিধা দেয় না। একসাথে 1 এম লেখা ভাল সর্বোচ্চ।


0

এই প্রশ্নটি 5 বছর আগে খোলা হয়েছিল। আমি কেবল এটি পেরেছি এবং আমার অনুসন্ধানগুলি যুক্ত করতে চেয়েছি।

আপনি যদি সহজভাবে ব্যবহার করেন

dd if=/dev/urandom of=random.img count=1024 bs=10M

জিয়াওডংজি দ্বারা বর্ণিত হিসাবে এটি উল্লেখযোগ্যভাবে দ্রুত কাজ করবে। তবে, আপনি এটি ব্যবহার করে আরও দ্রুত করতে eatmydataপারেন

eatmydata dd if=/dev/urandom of=random.img count=1024 bs=10M

এটি কী eatmydataকরে এটি ডিস্কটি দ্রুত লেখার জন্য ফাইএনসিচকে অক্ষম করে।

আপনি এ সম্পর্কে আরও জানতে https://flamingspork.com/projects/libeatmydata/ এ পড়তে পারেন ।


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