সিপি --reflink = অটো ডিফল্ট আচরণ নয় কেন?


31

cp --reflink=autoডিফল্ট আচরণ হয় না কেন ? এটি সক্ষম করতে কোনও ক্ষতি করতে পারে?

এটি কি সংকলনের সময়ে সক্ষম করা সম্ভব, তাই এটি কেবলমাত্র ইন্টারেক্টিভ শেলগুলিতে নয়, সমস্ত সিস্টেম জুড়ে ব্যবহৃত হয়?


4
হ্যাঁ, ভাল প্রশ্ন। এটি কেবলমাত্র বিটিআরএফএস একটি ডিফল্ট লিনাক্স ফাইল সিস্টেম হিসাবে শুরু হতে পারে IM
অ্যাডাম রাইজকোভস্কি

উত্তর:


38

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


8
(এটি একটি অনুমোদনযোগ্য উত্তর হিসাবে বিবেচনা করা যেতে পারে যেহেতু পেডেরাগ জিএনইউ কোর্টিলগুলির রক্ষণাবেক্ষণকারী)।
স্টাফেন চেজেলাস

8
আমি সন্দেহ করি যে এই উত্তরটি সঠিক, কমপক্ষে বিটিআরএস-এ। যদি ফাইলটি পরে লিখিত হয়, বিটিআরএফস কোয়ের কারণে নতুন ডেটা অন্যভাবেই আলাদা ডিস্ক সেক্টরে লিখিত হবে, সুতরাং রিফ্লিংকগুলি না করার কোনও বিলম্বতার সুবিধা নেই। NoDataCoW সেট থাকা ফাইলগুলিকে যেভাবেই রিফ্লিং করা যাবে না। এবং আপনি যদি ডেটা দুর্নীতির বিরুদ্ধে রক্ষা করতে চান তবে আপনাকে আলাদা পার্টিশনে অনুলিপি করতে হবে এবং রিফ্লিংকগুলিও কাজ করবে না।
জানকানিস

3
বিটিআরএফএসের লেখার সময় স্থান খুঁজে পেতে এবং বরাদ্দ দেওয়ার কারণে বিলম্বিত সমস্যা রয়েছে। এটি এমনকি লেখার সময় ENOSPC ত্রুটি ছুঁড়তেও উপলভ্য নয়
ব্র্যাডি

1
রিফ্লিংকের জন্য এমভি কী ব্যবহার করে?
ম্যাকিল

1
বিটিআরএস-এ ক্রস সাবভলিউমের নতুন নামগুলি
পেদ্রাগ ব্র্যাডি

17

কেন এটি ডিফল্ট নয়, হয়তো যাতে এটি অন্যান্য অনুলিপি ইউটিলিটি (হিসাবে একই আচরণ করবে কি জান না rsync, cpio, pax, tar...) যা কোন সমর্থন আছে তাদের জন্য এটা (অথবা ফাইল একটি ইন্টারফেস জুড়ে অনুলিপি করা যে অনুমতি দেয় না যে (যেমন এনএফএস, সাম্বা, ফিউজ ফাইল সিস্টেম স্তরগুলি ...)।

কয়েক বছর আগেও আমি একই পরিস্থিতিতে ছিলাম এবং GNU সিপি কোডটি দ্রুত দেখছিলাম, এখনও একইরকম, আলাদা ডিফল্ট আচরণ পেতে আপনাকে কোডটি প্যাচ করতে হবে:

--- coreutils-8.21/src/cp.c~    2013-06-22 21:50:26.265639114 +0100
+++ coreutils-8.21/src/cp.c     2013-06-22 21:51:06.880513924 +0100
@@ -775,7 +775,7 @@ cp_option_init (struct cp_options *x)
   x->interactive = I_UNSPECIFIED;
   x->move_mode = false;
   x->one_file_system = false;
-  x->reflink_mode = REFLINK_NEVER;
+  x->reflink_mode = REFLINK_AUTO;

   x->preserve_ownership = false;
   x->preserve_links = false;

4

একটি বড় সমস্যা হ'ল আপনি যখন লিখবেন তখন অনুলিপিটি করার জন্য স্থান ছাড়িয়ে যাওয়ার সম্ভাবনা।

একটি সাধারণ অনুলিপিতে, তারপরে অনুলিপিটি শেষ হওয়ার সাথে সাথে আপনাকে ফাইলের বিদ্যমান অংশগুলিতে একটি ব্যর্থতা ব্যর্থ হওয়ার বিষয়ে কখনই চিন্তা করতে হবে না: স্থানটি পুরোপুরি বরাদ্দ হয়ে গেছে এবং আপনি ফাইলটি মোছা না হওয়া পর্যন্ত চলে যাবেন না। তবে একটি রিফ্লিংক অনুলিপি সহ সর্বদা একটি ঝুঁকি থাকে যে সপ্তাহের কয়েক মাস বা কয়েক মাস রাস্তায় ফাইলের একটি বিদ্যমান অংশে লেখা ব্যর্থ হয়ে যায় কারণ অনুলিপি করার মতো পর্যাপ্ত জায়গা ছিল না।

আপনার সিস্টেমে আপনার পিঠের পিছনে রিফ্লিংক অনুলিপিগুলি করছিল তা আবিষ্কার করে যখন এর মতো কোনও ক্রিয়াকলাপ ব্যর্থ হয় তবে খুব খারাপ অভ্যাস হবে।


কমপক্ষে বিটিআরএফ-তে এমনকি ফাইলের ইতিমধ্যে বরাদ্দ করা অংশটি ENOSPC- এর মাধ্যমে ব্যর্থ হতে পারে ...
গ্রেওয়াল্ফ

2
alias cp='cp --reflink=auto --sparse=always'

কোড প্যাচিংয়ের চেয়ে ভাল ধারণা তৈরি করে


6
দেখে মনে হচ্ছে আপনি সংকলনের সময়ে এটি সক্ষম করা কি সম্ভব, তাই এটি কেবল ওপি-র প্রশ্নের ইন্টারেক্টিভ শেলগুলিতে নয়, সমস্ত সিস্টেম জুড়েই ব্যবহৃত হয়
স্টাফেন চেজেলাস

5
@ স্টাফেনচাজেলাস ওয়ান সর্বদা /bin/cpএটির নতুন নামকরণ এবং এটি একই শেল স্ক্রিপ্টের সাথে প্রতিস্থাপন করতে পারে
goncalopp

0
  1. দৃust়তার কারণে ডেটা "ক্ষতি" রোধের জন্য কেউ অনুলিপি গ্রহণ করতে পারে।

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

  2. পারফরম্যান্সের কারণে নয়।

    গুঁড়ি ঘটে যখন শুধুমাত্র একটি অংশ মুছে? ব্লক লিখিত হয়। আধুনিক! ডিস্ক সহ! ডিভাইসটি হার্ডওয়্যার ব্লকের আকার 4k এর একাধিক। 4 কে অংশ পরিবর্তন করার ফলে ড্রাইভটি পুরো 4 কে পড়তে এবং আবার এটিকে লিখতে বাধ্য করে, তবে তারপরে কার্নেল একই কাজ করবে তাই ব্লক ডিভাইস, এসএসডি বা অন্যথায় পৌঁছানোর কোনও আংশিক রাইটিং থাকবে না otherwise । কার্নেলকে একই কারণে CoW সঞ্চালন করা দরকার, যদি না আমাদের ক্যাশেড অনুলিপি না থাকে তবে আমরা ডিভাইসের অন্যান্য অংশে উপস্থিত ডেটা তৈরি করতে পারি না, কোনও ফাইলের গল্পের শেষের জন্য সংরক্ষণ করতে পারি তবে বিন্দুটি হ'ল তর্ক করা। তবে কোনও ফাইলের একটি অনুলিপি ক্যাচ করা এবং একটি ফাইল অনুলিপি করা বিভিন্ন ক্রিয়াকলাপ ভিন্ন, পূর্ববর্তীটি অনেক কম দামের।

    লেখার ঠিকানাটি অবিচ্ছিন্ন, তবে এটি নিশ্চিত করে তুলুন যে "ফাইলের ব্লকগুলি বর্তমানে কোথায় রয়েছে" তার চেয়ে "ডিভাইসের কিছু অব্যবহৃত অংশ" আবিষ্কার করা সস্তা।

সত্য যে কোনও CoW পদ্ধতি হ'ল একটি ব্লক ডিভাইস আপডেট করার তুলনায় সস্তা বা সমান। এখন আমরা যদি ব্লক ডিভাইসগুলির সাথে কথা বলছিলাম না, তবে এটি অন্য গল্প হবে ... কোথাও টেপে লিখিত।

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