একটি বিটিআরএস সাবভলিউম সরিয়ে কতটা জায়গা মুক্ত করা হবে?


11

আমি যদি কোনও বিটিআরএসএস ডিস্কের (আসলে সেগুলি অপসারণ না করে) একটি (বা বেশ কয়েকটি) সাবভলিউম সরিয়ে ফেলব তবে আমি কতটা জায়গা মুক্ত করব তা গণনা করার কোনও উপায় আছে কি? আমি জানি যে "বর্তমানে এমন কোনও কোড নেই যা আপনার জন্য গণনা করবে" , তবে আপনি কীভাবে এটি করবেন?

আমিও আশ্চর্য হই যে তারা কেন বলছে যে এটি এত ধীর হবে? উভয়েই আসলে একটি সাবভলিউম সরিয়ে ফ্রি স্পেস সম্পর্কে জিজ্ঞাসা করা আমার অভিজ্ঞতার পক্ষে খুব দ্রুত, কেন একই কাজটি অনুমান করা এত ধীর হবে?


2
আমি আশা করি আপনি জানেন যে, btrfs.wiki.kernel.org/index.php/Btrfs_mailing_list বিটিআরএফএস (বা অন্য কোনও কার্নেল উপাদান) এর অভ্যন্তরীণ কাজ সম্পর্কে প্রশ্ন জিজ্ঞাসা করার জন্য আরও ভাল জায়গা হতে পারে। উত্তর পেলে দয়া করে এখানেও পোস্ট করুন। আমি নিজেই উত্তর সম্পর্কে কৌতূহলী।
অ্যাডাম রাইজকোভস্কি

1
আপনি বলেছেন "সত্যই একটি সাবভলিউম সরিয়ে ফ্রি স্পেস সম্পর্কে জিজ্ঞাসা করা উভয়ই আমার অভিজ্ঞতায় খুব দ্রুত"। আপনি যখন একটি সাবভলিউম মুছবেন, এটি মুছে ফেলার জন্য কেবল এটি সাবভলিউমটিকে চিহ্নিত করছে, সময় পেলেই এটি কেবল সেই ব্লকগুলি মুক্ত করে (যখন আপনি এটি করবেন তখন 'নো-কমিট' বার্তাটি বোঝায়), তাই না, মুছে ফেলা হয় না অগত্যা খুব দ্রুত
etskinner

উত্তর:


3

আপনার btrfs quotaএবং btrfs qgroups(কোটা গ্রুপ) একবার দেখে নেওয়া উচিত ।

মূলত qgroupsআপনি যা অনুরোধ করেছিলেন ঠিক তেমন করুন, তারা ট্র্যাক করে যে সাবভলিউমগুলি কতটা বরাদ্দ করেছে। qgroupএকটি btrfsফাইল সিস্টেমের জন্য কার্যকারিতা সক্ষম করতে আপনাকে করতে হবে

# btrfs quota enable /path/to/btrfs/filesystem

তবে এটি করার আগে আপনাকে সতর্ক করে দেওয়া হবে যে এটি qgroupডেটাটির সম্পূর্ণ পুনরায় গণনা ট্রিগার করে যা বিশেষত অনেক সাবভলিউম সহ বড় ফাইল সিস্টেমগুলির জন্য কিছুটা সময় নেবে। এই প্রক্রিয়াটি পটভূমিতে অবিচ্ছিন্নভাবে চলে। আপনি ইতিমধ্যে এর qgroupsসাথে স্থিতি পরীক্ষা করতে পারেন

# btrfs qgroup show /path/to/btrfs/filesystem

এটি আপনাকে এরকম কিছু আউটপুট দেবে:

WARNING: rescan is running, qgroup data may be incorrect
qgroupid         rfer         excl
--------         ----         ----
0/5         843.69GiB     61.91MiB
0/4881      811.06GiB      9.34GiB
0/7990      867.32GiB    329.91MiB
0/8400      867.17GiB     37.64MiB

(যতক্ষণ না রেসান চলমান ততক্ষণ প্রথম লাইনে সতর্কতা উপস্থিত রয়েছে))

বিটিআরএফস qgroupপ্রতিটি সাবভলিউমের জন্য স্বয়ংক্রিয়ভাবে একটি তৈরি করে । এই ক্ষেত্রে সাবভলিউম আইডি 4881, 7990, এবং 8400 সহ তিনটি সাবভলিউম রয়েছে the ফরোয়ার্ড স্ল্যাশের আগের অংশটি হল স্তর qgroup। প্রতিটি উপভলিউম qgroupস্তর স্তর 0 এ থাকে। অতিরিক্ত qgroupস্তর 0 তে একটি বিশেষ রয়েছে যা সর্বদা আইডি 5 থাকে এবং বিটিআরএফএস ফাইল সিস্টেমের মূলের সাথে মিলে যায়।

qgroupউপরের প্রতিটি আউটপুট দেখায় যে এর দ্বারা কতটা স্থান রেফারেন্স করা হয়েছে। এর মানে হল যে সংশ্লিষ্ট সাবভোলিউমে এমন ফাইল রয়েছে যার মোট আকারটি দেখানো সংখ্যার সমান।

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

আপনি যদি একাধিক সাবভলিউমগুলি মুছে ফেলেন তবে আপনি কতটা জায়গা মুক্ত করবেন তা সন্ধান করতে চাইলে আপনি উপরোক্ত স্তরগুলি ব্যবহার করতে পারেন। qgroupsহয় একটি hierachy সংগঠিত উপরের স্তরে এবং দলের (0 চেয়ে উচ্চতর) নিম্ন মাত্রায় তথ্য সমষ্টি।

সুতরাং, সাবভলিউম 4881 এবং 7990 (উপরের উদাহরণে) মুছে ফেলা হবে তবে কতটা জায়গা মুক্ত হবে qgroupতা সন্ধান করতে স্তরের 1 তে একটি নতুন (নির্বিচারে আইডি 0 দিয়ে তৈরি করতে পারেন, তবে আপনি এখানে যা পছন্দ করতে পারেন) বেছে নিতে পারেন

# btrfs qgroup create 1/0 /path/to/btrfs/filesystem

তারপরে আপনি যে সাব-ভলিউমগুলি মুছতে চান qgroupতার পিতা-মাতা হিসাবে সদ্য নির্মিতটি নির্ধারণ করুনqgroups

# btrfs qgroup assign 0/4881 1/0 /path/to/btrfs/filesystem
# btrfs qgroup assign 0/7990 1/0 /path/to/btrfs/filesystem

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

# btrfs qgroup show -p /path/to/btrfs/filesystem

আপনি এই মত একটি আউটপুট পেতে:

qgroupid         rfer         excl parent
--------         ----         ---- ------
0/5           1.38TiB      2.51GiB ---
0/4881        1.11TiB     10.86GiB 1/0
0/7990        1.23TiB    502.41MiB 1/0
0/8400        1.34TiB      1.69GiB 1/0
1/0           1.51TiB    132.23GiB ---

( আউটপুটটিতে কলামটি যুক্ত করতে আমি -pপতাকাটি যুক্ত করেছি parentযা এর পিতামাতার / সন্তানের সম্পর্ক দেখায় qgroups))

এখনকার লাইনটি qgroup 1/0আপনাকে জানায় যে আপনি যে দুটি সাবভলিউমগুলি মুছতে চান তার দ্বারা কতটা স্থান রেফারেন্স করা হয়েছে এবং আরও গুরুত্বপূর্ণ এটি আপনাকে বলবে যে তাদের দ্বারা কতগুলি স্থান একচেটিয়াভাবে বরাদ্দ করা হয়েছে । এটি উভয় সাবভলিউম মুছলে এমন পরিমাণের পরিমাণ মুক্ত হবে।

আমিও আশ্চর্য হই যে তারা কেন বলছে যে এটি এত ধীর হবে?

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

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