compsize(8) btrfs compsize(8)

compsize - محاسبه نسبت فشرده‌سازی مجموعه‌ای از فایل‌ها در سیستم‌فایل btrfs

compsize file-or-dir [ file-or-dir ... ]

compsize فهرستی از فایل‌ها را روی یک سیستم‌فایل btrfs دریافت می‌کند (با پیمایش بازگشتی در دایرکتوری‌ها) و نوع فشرده‌سازی‌های به‌کاررفته و نسبت فشرده‌سازی مؤثر را اندازه می‌گیرد. علاوه بر فشرده‌سازی، compsize اثر بازپیوندها (reflinkها مانند cp --reflink، اسنپ‌شات‌ها و deduplication) و انواع مشخصی از اتلاف فضا در btrfs را نمایش می‌دهد.

این برنامه گزارشی مشابه زیر ارائه می‌دهد:

Processed 90319 files.
Type       Perc     Disk Usage   Uncompressed Referenced
TOTAL       79%      1.4G         1.8G         1.9G
none       100%      1.0G         1.0G         1.0G
lzo         53%      446M         833M         843M

فیلدهای بالا عبارتند از:

الگوریتم فشرده‌سازی.
میزان مصرف دیسک تقسیم بر حجم فشرده‌نشده (نسبت فشرده‌سازی).
بلاک‌های روی دیسک؛ هزینه واقعی ذخیره‌سازی این فایل‌ها روی دیسک (بدون در نظر گرفتن ملاحظات RAID).
اکستنت‌های فشرده‌نشده؛ فضایی که بدون فشرده‌سازی نیاز داشتید - شامل صرفه‌جویی ناشی از یکسان‌سازی (deduplication) و اتلاف فضا در اکستنت‌های سنجاق‌شده (pinned).
اندازه ظاهری فایل‌ها (بدون در نظر گرفتن حفره‌ها یا holes)؛ فضایی که یک سیستم‌فایل سنتی با پشتیبانی از حفره‌ها و بسته‌بندی کارآمد دنباله‌ها (tail packing) یا دستور tar -S برای ذخیره‌سازی این فایل‌ها نیاز دارد.

بیایید این مورد را با یک مثال بررسی کنیم: فایلی به حجم ۱۲۸ کیلوبایت به‌صورت یک اکستنت تکی A ذخیره می‌شود که پس از فشرده‌سازی به یک صفحه ۴ کیلوبایتی تبدیل شده است. سپس یک عملیات نوشتن ۳۲ کیلوبایتی در افست ۳۲ کیلوبایت دریافت می‌کند که آن هم به یک صفحه ۴ کیلوبایتی فشرده شده و به‌عنوان اکستنت B ذخیره می‌شود.

اکنون فایل به این صورت دیده می‌شود:

         +-------+-------+---------------+
extent A | used  | waste | used          |
         +-------+-------+---------------+
extent B         | used  |
                 +-------+

اتلاف فضا (waste) درون اکستنت A تا زمانی که کل اکستنت بازنویسی نشود (برای نمونه با defrag) از بین نمی‌رود. در صورت فشرده‌سازی، هر بار که آن بخش از فایل خوانده می‌شود باید کل اکستنت خوانده شود، بنابراین فضای اتلاف‌شده همچنان مورد نیاز است.

در این حالت داریم: Disk Usage: 8KB، Uncompressed: 160K، Referenced: 128K.

نمایش تعداد خام بایت‌ها به‌جای اندازه‌های خوانا برای انسان.
نادیده گرفتن فایل‌ها و دایرکتوری‌های موجود روی سیستم‌فایل‌های دیگر.

نمایش داده‌های جزئی برای فایل‌هایی که تا این لحظه پردازش شده‌اند.

فایل‌هایی که به‌تازگی نوشته شده‌اند ممکن است تا زمانی که واقعاً تخصیص نیافته و فشرده نشده‌اند، فضایی اشغال‌نکرده نشان داده شوند؛ این امر پس از همگام‌سازی (sync) یا در زمان خروج طبیعی داده‌ها به دیسک رخ می‌دهد که معمولاً در حدود ۳۰ ثانیه است.

فراخوانی‌های سیستمی (ioctls) مورد استفاده این برنامه به دسترسی ریشه (root) نیاز دارند.

اکستنت‌های درون‌خطی (Inline extents) همیشه یکتا در نظر گرفته می‌شوند، حتی اگر بایت‌های یکسانی روی دیسک داشته باشند.

این برنامه اکنون از سیستم‌فایل‌های بزرگ‌تر از ۸ ترابایت روی ماشین‌های ۳۲ بیتی پشتیبانی نمی‌کند - البته سایر ابزارهای btrfs نیز پشتیبانی نمی‌کنند.

2017-09-04 btrfs