কেন 50mb ফাইল সহ কোনও বাহ্যিক স্টোরেজ ড্রাইভে (ইউএসবি সংযুক্ত, টাইপ ফিউজব্ল্যাক) আরএম ধীর গতিতে চলছে?


21

ব্যাকআপগুলি তৈরি করার জন্য আমি আরএসএন্যাপশটটি ব্যবহার করার চেষ্টা করছি, তবে আমি এটি অকেজো হয়েছি। যদিও এটি কোনও ডিরেক্টরি (50gb) আলাদা করতে সক্ষম হয় এবং কয়েক মিনিটের মধ্যে এটি (প্রতিটি ফাইলকে হার্ডলিঙ্কিং) অনুলিপি করতে সক্ষম হয় এবং আমি পুরো ডিরেক্টরিটি প্রায় অর্ধ ঘন্টার মধ্যে সিপি করতে পারি, এটি মুছতে এক ঘন্টারও বেশি সময় লাগে। এমনকি সরাসরি ব্যবহার করেও rm -rfv, আমি দেখতে পেলাম যে এটি একটি একক ফাইলের আরএম হতে আধা সেকেন্ড পর্যন্ত সময় নিতে পারে, যেখানে cpএবং linkকমান্ডগুলি তাত্ক্ষণিকভাবে সম্পূর্ণ হয়।

আরএম এত ধীর কেন? পুনরাবৃত্তভাবে হার্ডলিঙ্কগুলি অপসারণ করার আরও কি দ্রুত উপায় আছে? এটি আমার কাছে বোধগম্য নয় যে কোনও ফাইল অনুলিপি করা অপসারণের চেয়ে কম সময় নেয় take

আমি যে ফাইল সিস্টেমে কাজ করছি তা হ'ল একটি বাহ্যিক স্টোরেজ ড্রাইভ, যা ইউএসবি মাধ্যমে সংযুক্ত এবং টাইপ ফিউজব্ল্যাক (যার অর্থ আমি মনে করি এটি এনটিএফএস)। আমার কম্পিউটারে উবুন্টু লিনাক্স চলছে।

শীর্ষ থেকে আউটপুট:

Cpu(s):  3.0%us,  1.5%sy,  0.0%ni, 54.8%id, 40.6%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8063700k total,  3602416k used,  4461284k free,   557604k buffers

1
মাউন্ট হিসাবে fuseblkচালিত হওয়া মানে ড্রাইভটি এনটিএফএস নয়, এর অর্থ কেবল এটি একটি ফুস ব্লক ডিভাইস হিসাবে মাউন্ট করা হয়েছে। যে প্রায় কিছু হতে পারে।
ক্রিস ডাউন

1
@ ক্রিসডাউন সত্য, তবে আমি জানি এটি হয় এনটিএফএস বা এক্সট3, এবং আমি দৃ sure়রূপে নিশ্চিত যে এটি যদি এক্সট3 হয় তবে এটিকে মাউন্ট দ্বারা কোনও যুক্তি ছাড়াই মাউন্ট করা হত।
বেনুবার্ড

1
এটি ডিরেক্টরিতে কতগুলি ফাইল রয়েছে তা নির্ভর করে (আপনি কতটি বলেননি) এবং বিশেষত এনটিএফএস ডিরেক্টরিতে কেবল> 3 কে ফাইল দিয়ে ধীর করে দেয়। খুব সুন্দর প্রতিটি অন্যান্য ফাইল সিস্টেম আরও পারফরম্যান্ট। ফাইল সিস্টেমের পারফরম্যান্সে ফাইলের সংখ্যার প্রভাব সম্পর্কে এসও / এসইতে আরও অনেকগুলি পোস্ট দেখুন।
smci

উত্তর:


28

শেষ পর্যন্ত, আপনি যা কিছু করেন না কেন, আপনি মুছে ফেলতে চান এমন প্রতিটি ফাইল rmচালাতে unlinkহবে (এমনকি আপনি যদি rm -rপ্যারেন্ট ডিরেক্টরিতে কল করেন)। যদি সরানোর জন্য প্রচুর ফাইল থাকে তবে এটি দীর্ঘ সময় নিতে পারে।

আপনি চালানোর সময় দুটি বিশেষত সময় গ্রহণের প্রক্রিয়া থাকে rm -r:

  1. readdir, অনুসরণ করেছে,
  2. কল করার একটি নম্বর unlink

সমস্ত ফাইল সন্ধান করা, এবং তারপরে এটি মুছে ফেলার জন্য প্রতিটি ফাইলের মধ্য দিয়ে যাওয়া, সত্যই, সত্যই দীর্ঘ সময় নিতে পারে।

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

Assuming যে ফাইল সিস্টেম সত্যিই হয় এনটিএফএস (এটা আপনার প্রশ্নের থেকে স্পষ্ট নয়), এনটিএফএস সাধারণত ফাইল বৃহৎ swathes মোছার বেশ ধীর। আপনি আপনার উদ্দেশ্যে আরও উপযুক্ত ফাইল সিস্টেম ব্যবহার করার বিষয়টি বিবেচনা করতে পারেন (আপনার যদি অন্য কোনও বিশেষ চাহিদা না থাকে তবে অতি সাম্প্রতিক এক্স ফাইল সিস্টেমগুলিতে মুছে ফেলা পারফরম্যান্স রয়েছে)। FUSE নিজেও সাধারণত সাধারণভাবে দ্রুত হয় না। আপনি FUSE ব্যবহার না করে এমন কোনও উপায়ে এটি করতে পারেন কিনা তা বিবেচনা করতে পারেন।


2
+1 সত্যিই অনেকগুলি সঠিক ফাইল সিস্টেমের উপর নির্ভর করে - অনেকেরই অন্যের সাথে আলস্য থাকার সময় কিছু ক্রিয়াকলাপের জন্য সত্যই ভাল অভিনয় করার ঝোঁক থাকে (প্রায়শই এটি ফাইল তৈরি বনাম অপসারণ বনাম ডেটা অ্যাক্সেসের জন্য)।
পিটারফ

15

আরএম এত ধীর কেন? আমার কোন ধারণা নাই. তবে আমি একটি দ্রুত উপায় জানি:

mkdir blank
rsync -a --delete blank/ test/

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


1
আপনি কি এর সাথে বেঞ্চমার্ক করেছেন এবং তুলনা করেছেন rm -rf? rsyncএখনও unlink()সব ফাইল আছে test/এবং এটি সম্ভবত সময় লাগে।
ম্যাটবিয়ানকো

আমি এটি আনুষ্ঠানিকভাবে বেঞ্চমার্ক করি নি, তবে অন্য কারও মানদণ্ড পড়ার পরে আমি চেষ্টা করেছিলাম, এবং তফাতটি যথেষ্ট ছিল। আমি আর সেই পোস্টটি খুঁজে পাচ্ছি না, তবে সার্ভারফল্টে এই উত্তরটির আরও দ্রুত মুছে ফেলার প্রোগ্রামটির ব্যাখ্যা এবং উত্স রয়েছে।
rjmunro

তবে দ্রুততম পদ্ধতিটি অবশ্যই unlink(2)ডিরেক্টরিতে থাকতে হবে (এবং fsckপরে করার কথা মনে রাখবেন ) ...
ম্যাটবিয়ানকো

একটি সত্য ঘটনা। এটি ঠিক সময়সাপেক্ষ, এবং এটি প্রায় দ্বিগুণ দ্রুত। জিএনইউ কোর্টিলস আরএম কোড পড়ার পরে, এটি আমার অবাক করেও দেয় না ...
ডোমিনিক জর্জ

1

ভাল, আমি একবার আপনার সাথে একই সমস্যা ছিল। আমি দেখতে পেয়েছি যে আপনার "ওয়া" উচ্চ, আপনি ব্যবহার করতে পারেন

iostat -x 1

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

সরলতার জন্য, ব্যবহার করুন

vmstat 1

কি না চেক করতে উচ্চ বা হয় < । এটি কিছু ভুল নির্দেশ করে। আপনার পরিস্থিতিতে, আমি মনে করি ডিস্ক io মূল কারণ।

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