← شروع آموزش

WIUNIX ACADEMY

افزایش ظرفیت LV و فایل‌سیستم XFS یا ext4 بدون unmount

صفحهٔ 3 از 3؛ قبل از ادامه، مراحل قبلی و چیزهایی رو که لازم داری مرور کن.

آموزش متناسب با محیط تو

کجا اجرا می‌کنی؟

سیستم‌عامل و نسخهٔ سرورت رو انتخاب کن تا مراحل، دستورها و راه‌حل‌های همون محیط رو ببینی.

Rocky Linux 10بررسی‌شده با مستندات رسمی ·

آموزش متناسب با مقادیر تو

تنظیمات این آموزش

مقادیر نمونه رو با مشخصات سرورت عوض کن تا متن و دستورها با هم تغییر کنن. رمز، کلید خصوصی و توکن اینجا وارد نکن. مقدارها فقط توی همین زبانه می‌مونن و به سرور یا لینک اشتراک‌گذاری فرستاده نمی‌شن. قبل از اجرا، DNS، گواهی‌ها و تنظیمات دسترسی شبکه رو روی سرورت بررسی کن.

اگر آی‌پی، دامنه یا پورت‌های نمونه با سرورت فرق دارن، بخش تنظیمات پایین رو باز کن. مقدارها رو عوض کن و «اعمال در آموزش» رو بزن؛ بعد دستورهای تازه رو کپی کن.

تنظیم مقادیر برای محیط من3 مقدار قابل‌تغییر
11

قدم بعدی

هم ظرفیت رو تأیید کنیم، هم کار برنامه رو

گزارش هویت و ظرفیت رو دوباره بگیر. اندازهٔ LVM و دستگاه با اندازهٔ فایل‌سیستم یک معیار نیست؛ فراداده، فضای رزروشده و واحد گزارش باعث می‌شن عددها دقیقاً یکی نباشن. وضعیت قبل و بعد هر لایه رو مقایسه کن، نه اینکه از df انتظار برابری با تعداد بایت خام دستگاه داشته باشی.

بررسی خواندن/نوشتن یا سلامت موجودِ برنامه رو در همان دامنهٔ مصوب انجام بده. دسترسی به داده، خطا و تأخیر رو ببین؛ برای پُرکردن فضای تازه بار نوشتن مصنوعی نساز. افزایش ظرفیت به‌تنهایی quota، رشد بی‌مهار فایل‌ها، فشار inode یا خطای I/O لایهٔ پایین رو درست نمی‌کنه.

bash

همان نشست Bash روی میزبان ذخیره‌ساز مصوب

findmnt --mountpoint '/srv/data' -o TARGET,SOURCE,FSTYPE,FSROOT,OPTIONS
sudo lvs --segments -o lv_path,lv_attr,segtype,lv_size,vg_name,lv_health_status,devices '/dev/vg_data/lv_data'
sudo vgs -o vg_name,vg_attr,vg_size,vg_free,vg_extent_size,vg_free_count
lsblk -o NAME,TYPE,FSTYPE,SIZE,MOUNTPOINTS
df -hT -- '/srv/data'
df -i -- '/srv/data'
sudo journalctl -k --since '-15 min' --no-pager -n 80
از کجا بفهمم درست انجام شده؟

فایل‌سیستم فضای قابل استفادهٔ بیشتری داره، نقشهٔ دستگاه عوض نشده و بررسی خود برنامه موفقه؛ خطای حل‌نشده همچنان ثبت می‌شه.

قبل از تکرار، لایهٔ نیمه‌تمام رو پیدا کنیم

پنل‌های پایین فقط وضعیت فعلی رو می‌خونن؛ ذخیره‌ساز رو دوباره نمی‌سازن و فایل‌سیستم رو تعمیر نمی‌کنن. خروجی‌ها رو خصوصی نگه دار و خطای اول، مدارک قبل و هدف نهایی مصوب رو حفظ کن.

کنترل، mount یا LV رو نمی‌پذیره

پوشه‌ای که داخل یک فایل‌سیستم قرار داره لزوماً mountpoint نیست. منبع mount، FSROOT و درخت دستگاه‌ها رو ببین؛ bind mount، لایهٔ LUKS، فضای نام متفاوت یا نوع دیگری از فایل‌سیستم خارج از این مسیر است. فقط بعد از تأیید نقشهٔ واقعی توسط مسئولش، فرم رو اصلاح کن؛ کنترل رو دور نزن.

bash
findmnt --mountpoint '/srv/data' -o TARGET,SOURCE,FSTYPE,FSROOT,OPTIONS
sudo lvs --segments -o lv_path,lv_attr,segtype,lv_size,vg_name,lv_health_status,devices '/dev/vg_data/lv_data'
sudo vgs -o vg_name,vg_attr,vg_size,vg_free,vg_extent_size,vg_free_count
lsblk -o NAME,TYPE,FSTYPE,SIZE,MOUNTPOINTS
df -hT -- '/srv/data'
df -i -- '/srv/data'
extent آزاد کافی نداریم

تخصیص LV و VG رو دوباره بخون. PV ناقص یا گم‌شده یا تخصیص هم‌زمان می‌تونه علت باشه. سراغ +100%FREE نرو و PV کورکورانه اضافه نکن. تغییر لایهٔ پایین یا هدف کوچک‌ترِ همچنان افزایشی باید جدا با مسئول ذخیره‌ساز مشخص بشه.

bash
sudo lvs --segments -o lv_path,lv_size,vg_name,segtype,devices '/dev/vg_data/lv_data'
sudo vgs -o vg_name,vg_attr,vg_free,vg_extent_size,vg_free_count
LV بزرگ شده اما df هنوز همان اندازه رو می‌گه

mount دقیق، اندازهٔ دستگاه و نوع فایل‌سیستم رو بررسی کن. وقتی LV به هدف رسیده، بعد از رفع خطا فقط شاخهٔ همان فایل‌سیستم رو تکرار کن. هدف نهاییِ بدون علامت جمع باعث می‌شه تخصیص دوباره لازم نباشه. اگر نقشه عوض شده یا از هدف مصوب بزرگ‌تره، طرح تازه لازم داریم.

bash
findmnt --mountpoint '/srv/data' -o TARGET,SOURCE,FSTYPE,FSROOT,OPTIONS
sudo lvs --units b --nosuffix -o lv_path,lv_size '/dev/vg_data/lv_data'
sudo blockdev --getsize64 '/dev/vg_data/lv_data'
df -B1 -- '/srv/data'
فایل‌سیستم فقط‌خواندنی شده یا خطای I/O و منع رشد داریم

خطای کرنل رو با همین دستگاه و زمان تلاش تطبیق بده. رشد رو متوقف کن و مسیر رخداد برنامه و ذخیره‌ساز رو دنبال کن. remount تحمیلی، پاک‌کردن خطا، خاموش‌کردن حفاظت و check یا repair روی فایل‌سیستم mountشده راه ادامه نیست. موفقیت افزایش LV، سلامت فایل‌سیستم رو ثابت نمی‌کنه.

bash
findmnt --mountpoint '/srv/data' -o TARGET,SOURCE,FSTYPE,OPTIONS
sudo journalctl -k --since '-30 min' --no-pager -n 100
sudo lvs -o lv_path,lv_attr,lv_health_status '/dev/vg_data/lv_data'

از لایهٔ درست ادامه بدیم یا داده رو بازیابی کنیم

اگر افزایش LV خطا داد، قبل از تلاش بعدی اندازهٔ واقعی رو بخون؛ فرض نکن یک کار چندلایهٔ ناموفق حتماً همه‌چیز رو دست‌نخورده گذاشته. فقط بعد از فهم علت، همان هدف نهایی مصوب رو دوباره استفاده کن. اگر LV بزرگ‌تر شده ولی فایل‌سیستم رشد نکرده، معمولاً راه ادامه حفظ LV بزرگ‌تر و رفع همان مرحلهٔ فایل‌سیستم است.

اگر خرابی داده یا دستگاه یا چیدمان پشتیبانی‌نشده در میونه، این مسیر رو متوقف کن و برنامهٔ موجودِ بازیابی دادهٔ سازگار با برنامه رو دنبال کن. داده رو روی مقصد سالمی که جدا آماده شده و ظرفیت کافی داره بازیابی کن؛ بعد از تأیید داده و رفتار برنامه، جابه‌جایی کنترل‌شدهٔ خود برنامه رو انجام بده. دستگاه اصلی و مدارک فراداده رو تا تصمیم مسئول ذخیره‌ساز حفظ کن.

اینجا XFS رو کوچک نمی‌کنیم. کوچک‌کردن آفلاین ext4 هم کار دیگری با ترتیب و زمان توقف مشخصه، نه برگشت این تغییر. اگر نقشهٔ قدیمی VG رو زیر فایل‌سیستمی که بزرگ شده برگردونی، ممکنه بخشی از بلوک‌های زنده دیگر در دسترس نباشن. فرمان عمومی برای vgcfgrestore، lvreduce، mkfs، fsck/repair، غیرفعال‌سازی یا reboot در این مسیر بازیابی نداریم.

تغییر واقعی و فضای باقی‌مانده رو ثبت کنیم

هدف گرد‌شدهٔ extent، اندازهٔ LV و فایل‌سیستم قبل و بعد، هویت دقیق دستگاه، نسخهٔ بسته و کرنل، مرجع بکاپ، نتیجهٔ فرمان‌های اصلی و بررسی برنامه رو نگه دار. فقط وقتی هر دو لایه و برنامه درستن، تغییر رو تمام‌شده حساب کن؛ در غیر این صورت محل توقف و مسئول ادامه رو روشن بنویس.

با پایش موجود، بلوک و inode و quota فایل‌سیستم رو جدا از extent آزاد VG دنبال کن. فضای احتیاط رو متناسب با بار همین برنامه تعیین کن، نه با مصرف همهٔ VG یا فرض اینکه ظرفیت بیشتر علت رشد قبلی رو برطرف کرده. مسیرهای محیط با مستندات اصلی بررسی شدن؛ آزمون عملی همهٔ توزیع‌ها یا تضمین برای مقدارهای شخصی ادعا نمی‌کنیم.

منابع این آموزش

منابع رسمی

بالای صفحه می‌بینی که هر محیط چطور بررسی شده. بررسی مستندات به معنی اجرای عملی همهٔ نسخه‌ها نیست.

ادامهٔ مسیر

قدم بعدی تو

همهٔ آموزش‌های آکادمی ↗