مقدمه
به فصل پایانی دوره خوش آمدید! در این فصل به سراغ مدیریت منابع اصلی سیستم میرویم: دیسک، حافظه و
پردازنده. پس از پردازنده و حافظه، فضای ذخیرهسازی (دیسکها) یکی از حیاتیترین منابع هر سیستمی
است. مدیریت این فضا - یعنی دانستن اینکه چه دستگاههای ذخیرهسازی به سیستم متصل هستند، چقدر فضا
در دسترس است و کدام فایلها و دایرکتوریها بیشترین فضا را مصرف کردهاند - یک مهارت بنیادی برای
هر کاربر و مدیر سیستم لینوکس است.
کمبود فضای دیسک میتواند به سرعت یک سرور یا کامپیوتر شخصی را از کار بیندازد. در این درس، با سه
ابزار خط فرمان کلیدی آشنا میشویم که به ما کمک میکنند تا تصویری واضح از وضعیت دیسکهای خود
داشته باشیم و بتوانیم به صورت پیشگیرانه فضای ذخیرهسازی را مدیریت کنیم: lsblk،
df و du.
مشاهدهی دستگاههای ذخیرهسازی با lsblk
اولین قدم برای مدیریت دیسک، شناختن دستگاههای ذخیرهسازی است که به سیستم ما متصل هستند. در
لینوکس، هارد دیسکها (HDD)، درایوهای حالت جامد (SSD) و حافظههای فلش (USB) به عنوان
دستگاههای بلوکی (Block Devices) شناخته میشوند. بهترین ابزار برای مشاهدهی این
دستگاهها، دستور lsblk (مخفف List Block Devices) است. این
دستور دستگاهها و پارتیشنهای آنها را در یک ساختار درختی خوانا نمایش میدهد.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 238G 0 part /
sr0 11:0 1 1024M 0 rom
ستونهای مهم این خروجی عبارتند از:
ستون |
توضیح |
NAME |
نام دستگاه یا پارتیشن. sda اولین دیسک SATA/SCSI، sda1 اولین
پارتیشن روی آن دیسک و sda2 دومین پارتیشن است. |
SIZE |
اندازهی کلی دستگاه یا پارتیشن. |
TYPE |
نوع دستگاه، مانند disk (دیسک)، part (پارتیشن) یا rom
(درایو نوری). |
MOUNTPOINT |
نقطهی اتصال. دایرکتوریای که این پارتیشن در آن به سیستم فایل اصلی متصل (mount) شده است.
|
بررسی فضای مصرفی فایلسیستم با df
دستور df (مخفف Disk Free) به ما نشان میدهد که در هر یک از
فایلسیستمهای متصلشده (mount شده) به سیستم، چقدر فضا مصرف شده و چقدر فضای خالی باقی مانده است.
این دستور برای یک نگاه کلی به وضعیت پر شدن دیسکها عالی است.
اجرای df به تنهایی، خروجی را بر حسب کیلوبایت نمایش میدهد که خواندن آن دشوار است.
همیشه از گزینهی -h (مخفف human-readable) استفاده کنید تا اندازهها به صورت
مگابایت (M)، گیگابایت (G) و ترابایت (T) نمایش داده شوند.
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 228G 45G 172G 21% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
/dev/sda1 511M 6.1M 505M 2% /boot/efi
ستون Use% (درصد استفاده) به سرعت به شما نشان میدهد که کدام پارتیشن در حال پر شدن است
و نیاز به توجه دارد.
بررسی فضای مصرفی فایلها و دایرکتوریها با du
دستور df به ما میگوید کل پارتیشن چقدر پر است، اما نمیگوید چه چیزی این فضا را
اشغال کرده است. برای این کار، به سراغ دستور du (مخفف Disk Usage)
میرویم. این دستور حجم فضای مصرفشده توسط یک فایل یا دایرکتوری خاص (و زیرشاخههایش) را محاسبه
میکند.
اجرای du به تنهایی در یک دایرکتوری بزرگ، اطلاعات زیادی را برای تمام زیرشاخهها چاپ
میکند. معمولاً ما از گزینههای زیر برای خلاصهسازی خروجی استفاده میکنیم:
آپشن |
توضیح |
-h |
نمایش خروجی به صورت خوانا (human-readable). |
-s |
نمایش فقط خلاصهی مجموع کل (summary) برای دایرکتوری مشخص شده. |
--max-depth=N |
عمق نمایش زیرشاخهها را به N سطح محدود میکند. |
یک گردش کار رایج برای پیدا کردن مقصر پر شدن دیسک به صورت زیر است:
# first check the total size of the /var directory
$ sudo du -sh /var
12G /var
# now see which subdirectories are taking up the most space at depth 1
$ sudo du -h --max-depth=1 /var
4.0K /var/mail
8.5G /var/log
3.2G /var/lib
...
12G /var
این خروجی به وضوح نشان میدهد که دایرکتوریهای /var/log و /var/lib مقصران
اصلی هستند و باید بررسی شوند.