فضای دیسک یکی از منابع حیاتی در هر سیستم لینوکسی است که مدیریت صحیح آن از بروز مشکلات جدی مانند پر شدن کامل پارتیشنها و از کار افتادن سرویسها جلوگیری میکند. در این درس، چهار ابزار کلیدی برای بررسی فضای دیسک، میزان استفاده از آن، شناسایی دستگاههای ذخیرهسازی و ویژگیهای آنها را بررسی میکنیم.
بررسی فضای سیستم فایل با df
دستور df (مخفف Disk Free) میزان فضای استفادهشده و باقیمانده در تمام سیستمفایلهای مونتشده را نمایش میدهد . این دستور برای بررسی سریع وضعیت کلی فضای دیسک در سطح پارتیشنها کاربرد دارد.
ساختار کلی:
df [options] [FILE...]
در صورت مشخص نکردن فایل، اطلاعات تمام سیستمفایلهای مونتشده نمایش داده میشود .
مهمترین گزینهها:
| گزینه | توضیح |
|---|---|
-h, --human-readable | نمایش اندازهها بهصورت قابل فهم برای انسان (مثلاً 1K، 234M، 2G) بر اساس توانهای ۱۰۲۴ |
-H, --si | مشابه -h اما بر اساس توانهای ۱۰۰۰ (مثلاً 1.1G) |
-T, --print-type | نمایش نوع سیستم فایل (مثلاً ext4، xfs، ntfs) در کنار اطلاعات فضا |
-i, --inodes | نمایش اطلاعات inode بهجای بلوکها |
--total | محاسبه و نمایش جمع کل در انتهای خروجی |
-t, --type=TYPE | محدود کردن نمایش به سیستمفایلهای با نوع مشخص |
-x, --exclude-type=TYPE | حذف سیستمفایلهای با نوع مشخص از خروجی |
مثالها:
مشاهده وضعیت تمام سیستمفایلها بهصورت خوانا:
df -h
نمونه خروجی:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 45G 55G 46% / /dev/sdb1 500G 380G 120G 76% /home tmpfs 7.8G 1.2M 7.8G 1% /run
مشاهده وضعیت یک سیستم فایل خاص به همراه نوع آن:
df -Th /dev/sda1
مشاهده مصرف inodeها در سیستم فایل /home:
df -ih /home
نکته:
dfفقط سیستمفایلهای مونتشده را نشان میدهد و نمیتواند فضای موجود روی سیستمفایلهای مونتنشده را گزارش کند .
تخمین مصرف فضای فایلها و دایرکتوریها با du
دستور du (مخفف Disk Usage) فضای دیسکی را که فایلها و دایرکتوریها اشغال کردهاند، بهصورت بازگشتی (recursive) تخمین میزند . برخلاف df که در سطح سیستم فایل کار میکند، du برای پیدا کردن مصرفکنندههای بزرگ فضا در داخل یک دایرکتوری خاص استفاده میشود .
ساختار کلی:
du [options] [FILE...]
مهمترین گزینهها:
| گزینه | توضیح |
|---|---|
-h, --human-readable | نمایش اندازهها بهصورت قابل فهم (مثلاً 1K، 234M، 2G) |
-s, --summarize | فقط جمع کل هر آرگومان را نمایش بده (بدون نمایش زیردایرکتوریها) |
-a, --all | نمایش اندازه برای همه فایلها، نه فقط دایرکتوریها |
-c, --total | محاسبه و نمایش جمع کل در انتهای خروجی |
-d, --max-depth=N | نمایش اندازه را فقط تا عمق N سطح از دایرکتوری ورودی محاسبه کن (-d 0 معادل -s است) |
--exclude=PATTERN | حذف فایلهایی که با الگوی مشخص مطابقت دارند |
-x, --one-file-system | از مرز سیستمفایلها عبور نکن |
-L, --dereference | دنبال کردن لینکهای سمبلیک |
--apparent-size | نمایش اندازه ظاهری فایل بهجای فضای واقعی اشغالشده روی دیسک |
تفاوت اندازه ظاهری با فضای دیسک: اندازه ظاهری حجم واقعی دادههای فایل است، در حالی که فضای دیسک شامل بلوکهای تخصیصدادهشده (شامل سربار، بلوکهای خالی در فایلهای Sparse و غیره) میشود .
مثالها:
نمایش اندازه کل دایرکتوری /home بهصورت خلاصه و خوانا:
du -sh /home
نمونه خروجی:
4.2G /home
نمایش اندازه زیردایرکتوریهای یک سطحی و مرتبسازی بر اساس بزرگترین:
du -h --max-depth=1 /var | sort -hr
این دستور برای پیدا کردن دایرکتوریهای پُرخوری که فضای دیسک را اشغال کردهاند بسیار مفید است .
مشاهده اندازه فایلهای .log در دایرکتوری جاری به همراه جمع کل :
du -ch *.log
مشاهده دستگاههای بلوکی با lsblk
دستور lsblk (مخفف List Block Devices) اطلاعات مربوط به تمام دستگاههای بلوکی (دیسکها، پارتیشنها، دستگاههای loop و غیره) موجود در سیستم را بهصورت درختی و خوانا نمایش میدهد . این دستور اطلاعات را از sysfs و پایگاه داده udev میخواند .
ساختار کلی:
lsblk [options] [device...]
مهمترین گزینهها:
| گزینه | توضیح |
|---|---|
-f, --fs | نمایش اطلاعات سیستم فایل (نوع، برچسب، UUID، نقطه مونت و فضای استفادهشده) |
-m, --perms | نمایش مالکیت و دسترسیهای دستگاه |
-b, --bytes | نمایش اندازهها بهبایت |
-d, --nodeps | نمایش بدون وابستگیها و دستگاههای فرزند (فقط خود دستگاه) |
-o, --output LIST | مشخص کردن ستونهای مورد نظر برای نمایش |
-p, --paths | نمایش مسیر کامل دستگاهها (مثلاً /dev/sda1) |
-l, --list | نمایش خروجی بهصورت لیستی (غیردرختی) |
-J, --json | نمایش خروجی در قالب JSON برای پردازش در اسکریپتها |
مثالها:
نمایش دستگاههای بلوکی بهصورت پیشفرض (درختی):
lsblk
نمونه خروجی (سادهشده):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 465.3G 0 part / sr0 11:0 1 1024M 0 rom
مشاهده اطلاعات کامل سیستم فایل برای تمام دستگاهها:
lsblk -f
نمونه خروجی:
NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 vfat A1B2-C3D4 /boot/efi ├─sda2 ext4 1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p /
این گزینه (-f) ترکیبی از چند ستون مفید شامل NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE%, MOUNTPOINTS است .
مشاهده فقط ستونهای نام، اندازه و نقطه مونت برای یک دستگاه خاص:
lsblk -o NAME,SIZE,MOUNTPOINT /dev/sda
شناسایی ویژگیهای دستگاه با blkid
دستور blkid برای پیدا کردن و نمایش ویژگیهای دستگاههای بلوکی مانند برچسب (LABEL)، UUID و نوع سیستم فایل استفاده میشود . این ابزار در واقع رابط خطفرمان کتابخانه libblkid است .
توصیه: برای دریافت اطلاعات کلی درباره دستگاهها، استفاده از
lsblkکه اطلاعات بیشتری ارائه میدهد و نیازی به دسترسی root برای اطلاعات واقعی ندارد، توصیه میشود.blkidبرای سرویسهای سیستمی و تست کتابخانهlibblkidطراحی شده است .
ساختار کلی:
blkid [options] [device...]
مهمترین گزینهها و کاربردها:
| گزینه | توضیح |
|---|---|
-o, --output FORMAT | تعیین فرمت خروجی (full (پیشفرض)، value، device، export، json) |
-s, --match-tag TAG | فقط برچسبهای مشخصشده را نمایش بده (مثلاً -s UUID) |
-t, --match-token NAME=value | جستجوی دستگاهی با برچسب خاص (مثلاً -t UUID=... یا -t LABEL=...) |
-L, --label LABEL | پیدا کردن دستگاهی که از این برچسب سیستم فایل استفاده میکند |
-U, --uuid UUID | پیدا کردن دستگاهی که از این UUID استفاده میکند |
-p, --probe | حالت کاوش سطح پایین (Low-level probing) با دورزدن کش |
مثالها:
نمایش تمام ویژگیهای دستگاه /dev/sda1:
blkid /dev/sda1
نمونه خروجی:
/dev/sda1: UUID="a1b2c3d4-5e6f-7g8h-9i0j-1k2l3m4n5o6p" TYPE="ext4" PARTUUID="abcd1234-01"
نمایش فقط UUID و TYPE یک دستگاه:
blkid -s UUID -s TYPE /dev/sda2
پیدا کردن دستگاهی با UUID مشخص:
blkid -t UUID="a1b2c3d4-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
پیدا کردن دستگاهی با برچسب مشخص (معادل -l -o device -t LABEL=...):
blkid -L "my_disk"
مقایسه کلی ابزارها
| ابزار | کاربرد اصلی | سطح کار | ویژگی کلیدی |
|---|---|---|---|
df | بررسی فضای خالی سیستم فایلهای مونتشده | سطح سیستم فایل | گزارش فضای استفادهشده و موجود بهصورت کلی |
du | تخمین فضای اشغالشده توسط فایلها و دایرکتوریها | سطح فایل و دایرکتوری | پیدا کردن مصرفکنندههای بزرگ فضا در یک مسیر خاص |
lsblk | لیست و نمایش دستگاههای بلوکی و روابط آنها | سطح دستگاه | نمایش درختی، اطلاعات سیستم فایل و قابلیت فرمتبندی خروجی |
blkid | نمایش ویژگیهای فراداده دستگاه (UUID، LABEL، TYPE) | سطح دستگاه | جستجوی دستگاه بر اساس UUID یا برچسب |
نکته نهایی: برای یک بررسی کامل از وضعیت فضای ذخیرهسازی، معمولاً ترکیبی از این ابزارها استفاده میشود. با
lsblk -fساختار کلی دیسکها و سیستم فایل آنها را بررسی کنید، باdf -hوضعیت فضای خالی پارتیشنها را ببینید، و در صورت نیاز به بررسی دقیقتر مصرف فضا، ازdu -shوdu -h --max-depth=1استفاده کنید.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات