WIUNIX ACADEMY
افزایش ظرفیت LV و فایلسیستم XFS یا ext4 بدون unmount
مسیر mount تا LV رو تأیید میکنیم، از extentهای آزاد موجود VG استفاده میکنیم و هر لایه رو تا هدف نهایی مشخص بزرگ میکنیم؛ با بررسی خطا و راه ادامه اگر فقط یک لایه رشد کرد.
محیطت رو انتخاب کنآموزش متناسب با محیط تو
کجا اجرا میکنی؟
سیستمعامل و نسخهٔ سرورت رو انتخاب کن تا مراحل، دستورها و راهحلهای همون محیط رو ببینی.
آموزش متناسب با مقادیر تو
تنظیمات این آموزش
مقادیر نمونه رو با مشخصات سرورت عوض کن تا متن و دستورها با هم تغییر کنن. رمز، کلید خصوصی و توکن اینجا وارد نکن. مقدارها فقط توی همین زبانه میمونن و به سرور یا لینک اشتراکگذاری فرستاده نمیشن. قبل از اجرا، DNS، گواهیها و تنظیمات دسترسی شبکه رو روی سرورت بررسی کن.
اگر آیپی، دامنه یا پورتهای نمونه با سرورت فرق دارن، بخش تنظیمات پایین رو باز کن. مقدارها رو عوض کن و «اعمال در آموزش» رو بزن؛ بعد دستورهای تازه رو کپی کن.
تنظیم مقادیر برای محیط من3 مقدار قابلتغییر
از اینجا شروع کن
آخر این آموزش چی خواهیم داشت؟
مسیر mount تا LV رو تأیید میکنیم، از extentهای آزاد موجود VG استفاده میکنیم و هر لایه رو تا هدف نهایی مشخص بزرگ میکنیم؛ با بررسی خطا و راه ادامه اگر فقط یک لایه رشد کرد.
سیستمعاملها و نسخههای پوششدادهشده
مسیرهای ابزار و رشد مستند در Ubuntu 26.10/26.04/24.04، Debian 13/12، خانوادهٔ RHEL/Rocky/AlmaLinux 10/9 و Arch/Manjaro rolling در ۲۰۲۶-۱۱-۰۵ بررسی شدن. LV خطی فعال و VG با extent آزاد از قبل لازم است؛ این شواهد آزمون resize روی همهٔ سیستمها نیست.
قبل از شروع
- میزبان لینوکس با Bash و sudo مجاز؛ یک LV خطی معمولیِ فعال زیر یک mount مستقیمِ XFS یا ext4 قابلنوشتن.
- VG محلیِ غیرمشترک از قبل extent آزاد کافی داره؛ همزمان mount یا چیدمان ذخیرهساز تغییر نمیکنه.
- بکاپ دادهٔ سازگار با برنامه خارج از فایلسیستم درگیر، مقصد بازیابی معلوم، زمان نگهداری و بررسی سلامت مصوب.
- بستههای lvm2، xfsprogs، e2fsprogs، util-linux و coreutils با نسخهٔ متناسب با کرنل و فایلسیستم موجود.
ظرفیت رو در لایهٔ درست زیاد کنیم
بزرگترشدن LV بهتنهایی فضای فایلسیستمِ mountشده رو زیاد نمیکنه. اول مسیر mount رو تا یک LV موجود دنبال میکنیم، بعد میبینیم VG آن از قبل فضای آزاد داره یا نه. اگر مسیر و ظرفیت درست بود، LV رو به اندازهٔ نهایی مصوب میرسونیم و بعد فایلسیستم مناسب رو بزرگ میکنیم. هر دو لایه باید جدا تأیید بشن.
در LVM، فضای یک یا چند دستگاهِ آمادهشده به نام PV داخل گروهی به اسم VG جمع میشه. از ظرفیت این گروه، حجمهای منطقی یا LV ساخته میشن و هرکدوم مثل یک دستگاه در اختیار فایلسیستم قرار میگیرن. extent واحد تخصیص این فضاست. بعد از بزرگشدن LV باید فایلسیستم رو هم جدا گسترش بدیم تا بتونه از فضای تازه استفاده کنه؛ برای همین اندازهٔ هر دو لایه رو جدا میسنجیم.
این مسیر برای یک LV معمولیِ خطی، فعال و قابلنوشتن است که مستقیم زیر یک فایلسیستم XFS یا ext4 روی یک میزبان قرار داره. thin pool، snapshot و origin آن، RAID و striped/cache/VDO، VG اشتراکی کلاستر، لایهٔ میانی LUKS یا پارتیشن، bind mount و mount همزمان چندباره، و XFS با log یا realtime device جدا رو اینجا پوشش نمیدیم. اگر کنترلها رد شدن، وسط رخداد طراحی ذخیرهسازی رو با حدس عوض نکن.
اگر فقط پیام پرشدن دیسک داری، اول معلوم کن مشکل از بلوک، inode، فایل حذفشدهٔ باز یا quota است. راهنمای مرتبط disk-full آن تشخیص رو پوشش میده. اینجا فرض میکنیم تصمیم افزایش ظرفیت گرفته شده؛ افزودن PV، بزرگکردن پارتیشن یا دیسک ابری کار جداگانهٔ مسئول ذخیرهسازی است.
اندازهٔ نهایی و راه برگشت داده رو مشخص کنیم
فرم مقادیر نمونه رو باز کن و mountpoint واقعی، مسیر LV آن و اندازهٔ نهایی مصوب بر حسب GiB رو اعمال کن. مقدار نمونهٔ ۲۰ یعنی اندازهٔ نهایی، نه اینکه ۲۰ گیگابایت اضافه کنیم. این مسیر نمونه اندازهٔ ۱ تا ۱۰۲۴ GiB رو میپذیره و هدف رو رو به بالا به تعداد کامل extent گرد میکنه. هدف کوچکتر از اندازهٔ فعلی یعنی توقف؛ قرار نیست حجم رو کم کنیم.
قبل از تغییر، بکاپ دادهای رو تأیید کن که با وضعیت برنامه سازگاره، خارج از فایلسیستم درگیر نگه داشته میشه و مقصد بازیابیش معلومه. کپی فرادادهٔ LVM، فایلها یا محتوای دیتابیس رو نگه نمیداره. snapshot داخل همان VG هم بکاپی مستقل از خرابی آن ذخیرهساز نیست و در این مسیر استفاده نمیشه.
زمان نگهداری، بررسی سلامت برنامه، فضای ذخیرهٔ لازم برای VG و مسئول رسیدگی به خطا رو از قبل مشخص کن. online یعنی امکان رشد در حالت mount وجود داره؛ نه اینکه تأخیر صفره یا بکاپ لازم نیست. مقدارها در همین تب و محیط انتخابشده میمونن؛ رمز و کلید رو وارد این فرم نکن.
قدم بعدی
میزبان و ابزارهای واقعی رو بشناسیم
از یک نشست Bash مجاز روی خود میزبانِ مالک mount شروع کن؛ کانتینر نامرتبط یا محیط rescue ممکنه فضای mount متفاوتی ببینه. نسخهٔ کرنل و بستهها رو ثبت کن. ابزار LV از lvm2 میاد، ابزار XFS از xfsprogs و ابزار ext4 از e2fsprogs؛ util-linux و coreutils هم برای دیدن mount و دستگاه استفاده میشن.
پنل پایین بستههای همین توزیع رو بررسی میکنه. محل فرمانهای مدیریتی رو با همان محیط sudo میگیریم که بعداً برای کار روی ذخیرهساز استفاده میشه؛ پس نبودن یک مسیر مدیریتی در PATH کاربر رو با نصبنبودن ابزار اشتباه نمیگیریم.
مسیر rolling در ۲۰۲۶-۱۱-۰۵ بررسی شده. از مخزن خود توزیع و بهروزرسانی کاملِ برنامهریزیشده استفاده کن؛ تازهکردن فهرست و ارتقای چند بستهٔ انتخابی میتونه سیستم رو ناسازگار کنه. Manjaro مخزن Arch نیست؛ شاخهاش رو ثبت کن و برای این کار شاخه رو عوض نکن یا بستهٔ Arch رو مستقیم وارد نکن.
همان نشست Bash روی میزبان ذخیرهساز مصوب
cat /etc/os-release
uname -r
bash --version
pacman -Q lvm2 xfsprogs e2fsprogs util-linux coreutils
pacman-mirrors -G
sudo sh -c 'command -v lvs vgs lvextend vgcfgbackup xfs_growfs xfs_info resize2fs findmnt lsblk blockdev readlink awk sort tr mktemp tee'
sudo lvm versionمیزبان و نسخهٔ ابزارها مشخصن؛ نبود بسته یا دیدن فضای mount متفاوت یعنی هنوز آمادهٔ ادامه نیستیم.
قدم بعدی
اگر ابزار کم داریم، در زمان مناسب آمادهاش کنیم
اگر ابزارها موجودن، از این پنل رد شو. در غیر این صورت، تغییر پیشنهادی مدیر بسته رو در زمان نگهداری مناسب بررسی و تأیید کن. فقط از مخزن رسمیِ فعال همین توزیع و نسخه استفاده کن. نصب ممکنه hook یا unitهای خود بسته رو اجرا کنه؛ آن رو یک بررسی فقطخواندنیِ رخداد حساب نکن.
برای این آموزش daemon تازهٔ LVM راه ننداز، VG دیگری رو فعال نکن و فیلتر یا devices file و سیاست فعلی فعالسازی و پایش رو تغییر نده. LV فعال موجود، پیشنیاز ماست. SELinux و AppArmor و دسترسی دستگاهها سر جاشون میمونن؛ اگر منع مشخصی دیدی، با مسئول میزبان حلش کن و حفاظت رو خاموش نکن.
مسیر rolling در ۲۰۲۶-۱۱-۰۵ بررسی شده. از مخزن خود توزیع و بهروزرسانی کاملِ برنامهریزیشده استفاده کن؛ تازهکردن فهرست و ارتقای چند بستهٔ انتخابی میتونه سیستم رو ناسازگار کنه. Manjaro مخزن Arch نیست؛ شاخهاش رو ثبت کن و برای این کار شاخه رو عوض نکن یا بستهٔ Arch رو مستقیم وارد نکن.
همان نشست Bash روی میزبان ذخیرهساز مصوب
sudo pacman -Syu lvm2 xfsprogs e2fsprogs util-linux coreutils
sudo sh -c 'command -v lvs vgs lvextend vgcfgbackup xfs_growfs resize2fs findmnt blockdev'فرمانهای لازم از بستههای پشتیبانیشدهٔ همین توزیع در دسترسن؛ سیاست فعالسازی ذخیرهساز عوض نشده.
قدم بعدی
mount و LV و فضای VG رو کنار هم ببینیم
خود mountpoint رو بررسی کن و منبعش رو در درخت دستگاهها دنبال کن. ممکنه mount با نام mapper دیده بشه ولی در فرم، نام VG/LV رو وارد کرده باشی؛ هر دو باید به یک دستگاه واقعی برسن. همهٔ هشدارهای LVM رو بخون. PV گمشده، فرادادهٔ ناقص یا ناسازگار و خطای ذخیرهساز یعنی قبل از افزایش ظرفیت توقف کن.
فضای آزاد VG یعنی بخشی از PVهای همین گروه که هنوز به LV اختصاص پیدا نکرده. این عدد با فضای آزاد فایلسیستم فرق داره. اگر فقط دیسک ارائهدهنده بزرگ شده یا آخر پارتیشن فضای استفادهنشده داری، تا تغییر لایهٔ پایین با روش مصوب تمام نشه، آن فضا extent آزاد VG نیست. صرف دیدن فضای آزاد دلیل نمیشه همهاش رو مصرف کنیم.
همان نشست 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'یک فایلسیستم مستقیم، یک LV خطی عادی و سالم و VG مالک آن مشخصن؛ لایهٔ خارج از دامنه یا کمبود فضای VG جلوی ادامه رو میگیره.
قدم بعدی
قبل از تغییر، قابلیت و چیدمان فایلسیستم رو ببینیم
برای XFS مشخصات فایلسیستم و بررسی بدون تغییرِ growfs رو میخوانیم. در خروجی باید log داخلی باشه و بخش realtime روی دستگاه جدا قرار نداشته باشه؛ اگر چنین دستگاههایی داری، این مسیر ساده رو ادامه نده. گزینهٔ -n رشد انجام نمیده و فقط هندسه و آرگومانها رو بررسی میکنه.
برای ext4، سربرگ و قابلیتهای فعلی رو فقط میخونیم. این خواندن جای check آفلاین یا تشخیص سلامت کامل نیست. هر خطای metadata یا I/O رو قبل از افزایش با مسئول ذخیرهساز پیگیری کن. کادر پایین برای هر نوع فقط شاخهٔ خودش رو انتخاب میکنه؛ بعدش هنوز باید تطبیق دقیق LV و mount در مرحلهٔ بعد موفق بشه.
همان نشست Bash روی میزبان ذخیرهساز مصوب
fs=$(findmnt -rn --mountpoint '/srv/data' -o FSTYPE) || exit 1
case "$fs" in
xfs) sudo xfs_info '/srv/data' || exit 1
sudo xfs_growfs -n '/srv/data' || exit 1 ;;
ext4) sudo dumpe2fs -h '/dev/vg_data/lv_data' || exit 1 ;;
*) printf '%s\n' 'STOP: this guide requires XFS or ext4.'; exit 1 ;;
esacنوع، قابلیتها و چیدمان فایلسیستم معلومه؛ XFS با دستگاه log یا realtime جدا و هر خطای حلنشده قبل از تغییر متوقف میشن.