ব্যাকআপের সময় সীমাবদ্ধ ডিস্ক i / o কীভাবে করবেন?


14

আমার একটি ক্রোন রয়েছে যা মূলত রাতে একটি সাধারণ "টার জেডসিএফ" করে।

সার্ভারটি রয়েছে:

  • 8 টি কোর - ইন্টেল (আর) জিয়ন (আর) সিপিইউ E5606 @ 2.13GHz
  • 25 জিবি র‌্যাম
  • উবুন্টু 12.04.2 এলটিএস
  • দুটি 2.728TB হার্ডড্রাইভ সহ হার্ডওয়্যার র‌্যাড 1 (এলএসআই লজিক / সিম্বিওস লজিক মেগ্রেইড এসএএস এসএমসি 2108)

যেমন আপনি মনিটরিং স্ক্রিনহোস্টে দেখতে পাচ্ছেন:

http://clip2net.com/s/57YRKP

টারের প্রায় সমস্ত সময়, ডিস্ক আই / ও> 90% এ যায় এবং অন্যান্য সমস্ত অ্যাপকে (মাইএসকিএল, অ্যাপাচি) অনেক ধীর করে দেয়।

2 টি প্রশ্ন:

  • ব্যাকআপের সময় এত বেশি ডিস্ক আই / ও থাকা কি স্বাভাবিক?
  • ডিস্ক আই / ও সীমাবদ্ধ করার কোনও উপায় আছে যাতে অন্য অ্যাপ্লিকেশন সঠিকভাবে কাজ চালিয়ে যেতে পারে?

ধন্যবাদ!

উত্তর:


11

এর সাথে বরং সাধারণ পদ্ধতির পাশাপাশি ioniceএকটি দুর্দান্ত ডিভাইস ম্যাপার টার্গেট (আইওব্যান্ড) রয়েছে যা একটি (ডিএম) ব্লক ডিভাইসে ব্যান্ডউইথের উপর সুনির্দিষ্ট নিয়ন্ত্রণের অনুমতি দেয়। দুর্ভাগ্যক্রমে এটি স্ট্যান্ডার্ড কার্নেলের অংশ নয়।

তদতিরিক্ত আপনি সম্ভবত তার দ্বারা গতি বাড়িয়ে তুলতে পারেন

  1. ডিস্ক ক্যাশে ফাইলের নামগুলি পড়া: find /source/path -printf ""
  2. ডিস্ক ক্যাশে ইনোডগুলি পড়া: find /source/path -perm 777 -printf ""
  3. এমআর বাফার বা বাফার (কমপক্ষে 100 মিমি র‌্যামের সাহায্যে) সহ পাইপ ব্যবহার করে ডিস্ক থেকে এবং আরও বড় ব্লকগুলি পড়ার এবং লেখার ব্যবস্থা করা: tar ... | mbuffer -m 256M -P 100 -p 1 ...

ক্যাশে ফাইলের নাম / আইনোডগুলি পড়ার পরে কেন ডারিং করার সময় ডিস্ক আইও হ্রাস পায়? মোট সময়কে কিছুটা কমিয়ে আনতে আমি গড় আইও বাড়ানোর আশা করব।
স্কাই

3
@scai এটি এসএসডিগুলিতে সহায়তা করে না; আমার সুপারিশটি কেবল স্পিনিং হার্ডডিস্ককে বোঝায়। যাগুলির সাথে পারফরম্যান্সকে মেরে ফেলেছে তা হ'ল মাথা চলা। ফাইলের নামগুলি অবিচ্ছিন্ন ব্লকে সংরক্ষণ করা হয়, ইনোডগুলি অবিচ্ছিন্ন ব্লকে সংরক্ষণ করা হয় এবং ফাইলের সামগ্রীটি অবিচ্ছিন্ন ব্লকে সংরক্ষণ করা হয়। আপনি যদি তারপরে এটি করেন তবে আপনি একটি ডিরেক্টরি ফাইল (এবং উপ-ডিরেক্টরি) পড়েন, একটি ফাইলের জন্য ইনোড অ্যাক্সেস করতে পারেন, তারপরে ফাইলটি নিজেই, পরবর্তী ফাইলের জন্য ইনোড, তারপরে পরবর্তী ফাইলটি নিজেই ... এটি একে অপরের পরে সমস্ত নাম এবং ইনোডগুলি পড়ার চেয়ে বেশি মাথা নড়াচড়া করে।
হউক লেগেইজ

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

আমি নিশ্চিতভাবেই বুঝতে পেরেছি। ১ এবং ২ এর জন্য, আমাদের কেবল ফাইন্ড কমান্ড কল করতে হবে এবং লিনাক্স স্বয়ংক্রিয়ভাবে এটি ক্যাশে করবে?
acemtp

@acemtp এটি সঠিক। যদিও find(উদাহরণস্বরূপ) ছাড়াই -permফাইল ইনোডে অ্যাক্সেস হবে না। তবে এটি অপটিমাইজেশনকে দুটি findকল ব্যবহার করার অনুমতি দেয় । আপনি যদি একই findকলটি দু'বার করেন (মাঝখানে অল্প সময়ের সাথে) তবে দ্বিতীয়টি সাধারণত সেকেন্ডের মধ্যে শেষ হতে চলেছে (বা তারও কম)। কোনও নির্দিষ্ট বিন্দুতে মুক্ত মেমরির পরিমাণ এবং ডেটা পরিমাণের উপর নির্ভর করে ডেটা ক্যাশে থেকে ফেলে দেওয়া হয়। খুব বেশি পড়া এইভাবে অপারেশনটি ধীর করতে পারে। আপনি যদি স্টিডিনের মাধ্যমে ফাইলের নাম সহ ব্যাকআপ প্রোগ্রামটি খাওয়াতে পারেন তবে আপনি উদাহরণস্বরূপ 100 টি ফাইলের ব্লকগুলি পড়ে এটি প্রতিরোধ করতে পারেন।
হউক লেগেইজ

13

ব্যাকআপের সময় এটি উচ্চ আই / ও দেখতে পাবে বলে আশা করা হচ্ছে কারণ এগুলি সাধারণত বড় ফাইলগুলির সাথে বড় ফাইল গাছের উপরে তৈরি হয়। আপনি ioniceক্লাস এবং স্তর সহ লিনাক্সে I / O কাজের অগ্রাধিকার দিতে ব্যবহার করতে পারেন । আইআইআরসি, ক্লাস 2, স্তর 7 হ'ল সর্বনিম্ন, অনাহারে থাকা স্তর যা এটি অন্যান্য আই / ও বোঝা এবং ব্যবহারকারীদের কাছে ব্যবহারিকভাবে অদৃশ্য করে তুলবে। man ioniceব্যবহার এবং বিশদ জন্য দেখুন ।


1

আমি ডার খোলার এবং আরএসসিএনসি (ডগসবডি দ্বারা উল্লিখিত) সাথে যাওয়ার পরামর্শ দিচ্ছি। আমি আমার উইন্ডোজ এবং লিনাক্স সিস্টেমে ফাইলগুলি ব্যাকআপ করতে ব্যাকআপপিসি ব্যবহার করি এবং এটি টার ব্যবহারের পাশাপাশি আরএসসিএনকে সমর্থন করে এবং স্বয়ংক্রিয়ভাবে আপনার জন্য হার্ড লিঙ্কিংয়ের যত্ন নেয় পাশাপাশি একটি দুর্দান্ত ওয়েব ইন্টারফেস সরবরাহ করে।

http://backuppc.sourceforge.net/


0

অন্যরা যেমন জবাব দিয়েছে, হ্যাঁ এটি স্বাভাবিক, এবং ioniceএটি আপনার সিস্টেমে প্রভাবিত না করার একটি দুর্দান্ত জেনেরিক উপায়।

অনেক সময় আমি লোকদের tarজিনিসগুলি দেখেছি যখন তাদের প্রয়োজন নেই। আপনি অনুলিপি করছেন এমন কোনও শতাংশের ডেটা যদি শেষ অনুলিপি থেকে পরিবর্তিত হয় না তবে আমি rsyncচেষ্টা করার পরামর্শ দেব ।

এটি সর্বশেষ অনুলিপি থেকে পরিবর্তিত ফাইলগুলি অনুলিপি করেই আইও হ্রাস করবে। আপনি অর্ধেকেরও বেশি আইও হ্রাস করতে সক্ষম হবেন না কারণ সমস্ত ডেটা এখনও পড়তে হবে তবে আপনি লিখিত তথ্যের পরিমাণ উল্লেখযোগ্যভাবে হ্রাস করতে পারবেন (যা আপনার হার্ডওয়্যারের উপর নির্ভর করে ধীর অপারেশনও হতে পারে)।

আপনি যদি প্রতিবার এটি চালিত হয় তার জন্য পৃথক অনুলিপি / ব্যাকআপ নিতে চান তবে সর্বাধিক শক্তিশালী বিকল্প হ'লিংক-ডেস্ট যা আপনাকে আগের ব্যাকআপে অপরিবর্তিত ফাইলগুলিকে হার্ড লিঙ্ক করতে দেয়। এটি ব্যাকআপ সার্ভারে প্রচুর পরিমাণে স্থান সাশ্রয় করে। উদাহরণস্বরূপ, আমি একটি মেশিন ব্যাকআপ করি (ফ্রেড), ফ্রেডের একটি 20 গিগাবাইট এইচডি থাকে এবং আমি / ড্রাইভ এবং / দেবকে বাদ দিয়ে পুরো ড্রাইভের অনুলিপি / অনুলিপি করি। আমার এখন আমার ব্যাকআপ সার্ভারে একটি 20 জিবি ডিরেক্টরি রয়েছে। পরের দিন আমি ফ্রেডটিকে আবার ব্যাকআপ করি এবং গতকালের ব্যাকআপে লিঙ্ক-ডেস্ট dest Rsync স্থানীয় কপির সাথে দূরবর্তী ফাইলগুলির সাথে তুলনা করে এবং ঠিক যদি একই হয় তবে সেগুলি স্থানান্তর করতে বিরক্ত করবে না তবে নতুন ফাইলটিকে গতকালের ফাইলের সাথে শক্তভাবে যুক্ত করবে link যে কোনও ফাইল পরিবর্তিত হয়েছে সেগুলি একটি তাজা অনুলিপি করা হয়েছে (বা সম্ভব হলে গতকালের ব্যাকআপ ব্যবহার করে আংশিকভাবে অনুলিপি করা হয়েছে)। গতকাল থেকে যদি কেবলমাত্র 100MB ফাইল পরিবর্তিত হয় তবে আমার এখন 20 জিবি ফাইলের সাথে দুটি ডিরেক্টরি রয়েছে তবে কেবল 20 টি নিয়েছে।

আমি আশা করি এটি আপনার প্রশ্নের সহায়তা করে এবং এখনও উত্তর দেয়।

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