আমি ext4lazyinit এর অগ্রগতি আনুমানিক একটি উপায় খুঁজে পেয়েছি বলে মনে হচ্ছে।
টিএল; ডিআর: নীচে স্ক্রিপ্ট দেখুন।
এই পদ্ধতিটি ধরে নিয়েছে যে প্রথম থেকেই পার্টিশনটি মাউন্ট হওয়ার পরে ডিস্কটি কখনও সংযোগ বিচ্ছিন্ন হয়নি (না সিস্টেমটি পুনরায় চালু করা হয়নি) এবং আপনি পার্টিশনটিতে যেমন ব্যবহার করছেন তেমন তথ্য লিখেছেন (সুতরাং মুছে ফেলা হবে না) বা ফাইল পরিবর্তন)।
পদক্ষেপ 1 : fdisk এ পার্টিশনের আকারের (কিবি রূপান্তরিত) ডিএফ-তে প্রদর্শিত 1 কে-ব্লকের সংখ্যার সাথে তুলনা করুন। (ইনোড টেবিলের আনুমানিক আকার) পেতে (কিবিতে পার্টিশনের আকার) থেকে বিয়োগ করুন (1 কে-ব্লকের সংখ্যা) t
সম্পাদনা: উদাহরণ, fdisk:
Sector size (logical/physical): 512 bytes / 4096 bytes
(...omitted...)
Device Start End Sectors Size Type
/dev/sdd1 2048 11720978398 11720976351 5.5T Linux filesystem
ডিএফ:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/workbackup 5813233164 1217095176 4596121604 21% /mnt/backup_work
11720976351 সেক্টর * 512 বাইট / সেক্টর / 1024 = 5860488175.5 কিবি (প্রায় 5.5 টিবি, যেমন fdisk বলে)। আনুমানিক ইনোড টেবিল আকারের জন্য মাইনাস ডিএফ এর 5813233164 সমান 47255011.5 কিবি (প্রায় 45 জিআইবি)।
পদক্ষেপ 2 : পান (পার্টিশনে লিখিত মোট কিবি):
awk '{ print $3"\t"$10 }' /proc/diskstats
আপনার বিভাজনের জন্য সঠিক লাইনটি চয়ন করুন এবং এটিকে কিবিতে রূপান্তর করুন।
সম্পাদনা: উদাহরণ:
sdb 260040
sdb1 260040
sdd 2530109116
sdd1 2530108940
আমার ক্ষেত্রে sdd1 ব্যবহার করে, মোট কিবি লিখিত = 2530108940 সেক্টর * 512 বাইট / সেক্টর / 1024 = 1265054470 কিবি (প্রায় 1.2 টিআইবি)।
পদক্ষেপ 3 : কেবলমাত্র যদি আপনি ইতিমধ্যে ফাইল সিস্টেমে কোনও ডেটা লিখে থাকেন তবে প্রয়োজন। (আনোড টেবিলের কাছে আনুমানিক কিবি লিখিত) পেতে (পার্টিশনে মোট কিবি লেখা আছে) থেকে বিয়োগ করুন (1K- ব্লকের ইউএসএইডের সংখ্যা, ডিএফ এ দেখানো হয়েছে)
সম্পাদনা: উদাহরণ: আনোড টেবিলে লিখিত আনুমানিক কিবি = 1265054470 (পদক্ষেপ 2 থেকে) - 1217095176 (ধাপ 1 এ ডিএফ আউটপুট দেখুন) = 47959294 কিবি (45.7 জিআইবি)
পদক্ষেপ 4 : ভাগ করুন (আনুমানিক টেবিলের কাছে আনুমানিক কিবি লিখিত) দ্বারা (কিবিতে ইনোড টেবিলের আনুমানিক আকার) এবং শতাংশ হিসাবে অগ্রগতি পেতে 100 দ্বারা গুণিত করুন।
সম্পাদনা: উদাহরণ: আনুমানিক অগ্রগতি = 47959294 / 47255011.5 * 100% = 101.5%
লিপি
অথবা এটি আংশিক স্ক্রিপ্ট হিসাবে লিখতে (যেখানে আমি সুরক্ষার কারণে, fdisk এ কল স্ক্রিপ্ট করতে অস্বীকার করেছি):
let sectorsize=$(cat /sys/block/sda/queue/hw_sector_size)
let partsize=$2*$sectorsize/1024
let fssize=$(df -- "$3" | tail -n -1 | awk '{print $2}')
let approxinodetablesize=$partsize-$fssize
let tkw=$(awk "/$1/"' {print $10}' /proc/diskstats | head -n 1)*$sectorsize/1024
let used=$(df -- "$3" | tail -n -1 | awk '{print $3}')
let tkw_inodetable=$tkw-$used
echo "Approximate progress: $(bc -l <<< "$tkw_inodetable*100.0/$approxinodetablesize") %"
Partition 1 = "পার্টিশনের নাম" (যেমন sdd1), $ 2 = "fdisk অনুসারে পার্টিশনের ক্ষেত্রগুলি", $ 3 = "স্ল্যাশ অনুসরণ না করে মাউন্ট পয়েন্ট" সহ কল করুন
পরীক্ষার ফলাফল
আমি কেবল একবার আমার পদ্ধতি পরীক্ষা করেছি। সেটআপ:
6 টিবি বিভাজন
ক্রিপ্টসেটআপ ব্যবহার করে এনক্রিপশন
ফাইল-সিস্টেম -m 0 ব্যতীত ডিফল্ট পরামিতিগুলির সাথে তৈরি
Ext4lazyinit শেষ হওয়ার আগে পার্টিশনে লিখিত 279 GiB ফাইল।
ফলাফল : সমাপ্তির সময় 99.7% এর পাঠ্য :-)
সম্পাদনা: একই ডিস্ক, এটিতে প্রায় অন্য টিআইবি ডেটা লেখার পরে, এখন 101.5% এর অনুমান পাওয়া যায়। দরকারী হিসাবে যথেষ্ট সঠিক, আমি মনে করি।