پرش به مطلب اصلی

LVM چیست؟

در یک جمله

LVM ابزاری در لینوکس است که به شما اجازه می‌دهد فضای ذخیره‌سازی را بدون نیاز به خاموش کردن سرور یا از دست دادن داده، تغییر اندازه دهید، ترکیب کنید و مدیریت کنید.

تعریف

وقتی یک هارددیسک یا SSD را پارتیشن‌بندی می‌کنید، اندازه هر پارتیشن معمولاً ثابت است. اگر فضای یکی از پارتیشن‌ها تمام شود، تغییر دادن آن کار سختی است و ممکن است داده‌ها از بین بروند.

LVM مثل یک لایه هوشمند بین دیسک و سیستم‌عامل عمل می‌کند. با LVM می‌توانید:

  • فضای یک پارتیشن را بزرگ‌تر کنید بدون اینکه سرور را خاموش کنید
  • چند دیسک را با هم ترکیب کنید و یک فضای بزرگ‌تر بسازید
  • فضای ذخیره‌سازی را منعطف‌تر مدیریت کنید

LVM (Logical Volume Manager) یک لایه انتزاعی بین Block Deviceها (دیسک‌ها یا پارتیشن‌ها) و File System است که در سطح Kernel لینوکس کار می‌کند.

LVM امکان مدیریت پویای فضای ذخیره‌سازی را فراهم می‌کند؛ از جمله:

  • Online Resize (بزرگ و کوچک کردن Volume بدون Downtime)
  • Aggregation (ترکیب چند Physical Volume در یک Volume Group)
  • Snapshot (گرفتن تصویر لحظه‌ای از یک Volume)
  • Thin Provisioning (تخصیص بیش از ظرفیت واقعی)
  • Striping و Mirroring در سطح نرم‌افزاری

چرا LVM به وجود آمد؟

قبل از LVM، مدیریت فضای ذخیره‌سازی در لینوکس محدودیت‌های جدی داشت:

مشکلتوضیح
اندازه ثابت پارتیشنبعد از ساخت پارتیشن، تغییر اندازه آن بسیار دشوار بود
محدودیت تعداد پارتیشندر MBR حداکثر 4 پارتیشن Primary قابل ایجاد بود
عدم امکان ترکیب دیسک‌هانمی‌شد چند دیسک را به‌سادگی با هم ترکیب کرد
ریسک بالای تغییراتهر تغییر در ساختار دیسک نیاز به Downtime و ریسک از دست رفتن داده داشت

LVM این مشکلات را حل کرد و مدیریت ذخیره‌سازی را پویا و انعطاف‌پذیر کرد.


معماری LVM

LVM از سه لایه اصلی تشکیل شده است:

HDD / SSD / Logical DrivePhysical Disk / PartitionHDD / SSD / Logical DrivepvcreatePhysical Volume (PV)pvcreatevgcreateVolume Group (VG)vgcreatelvcreateLogical Volume (LV)lvcreateext4 / XFSFile Systemext4 / XFS

توضیح هر لایه

لایهنام کاملتوضیح سادهتوضیح فنی
PVPhysical Volumeدیسک یا پارتیشنی که به LVM معرفی شدهBlock Device که با pvcreate برای استفاده در LVM آماده می‌شود
VGVolume Groupیک استخر بزرگ از فضا که از یک یا چند PV ساخته شدهمجموعه‌ای از PVها که فضای آن‌ها را تجمیع می‌کند و به واحدهای PE (Physical Extent) تقسیم می‌شود
LVLogical Volumeفضایی شبیه پارتیشن که سیستم‌عامل از آن استفاده می‌کندبخشی از VG که با lvcreate ساخته می‌شود و می‌توان روی آن File System ایجاد کرد

یک مثال ساده

فرض کنید یک سرور دارای دو Logical Drive است:

  • Logical Drive 1: ظرفیت 500GB
  • Logical Drive 2: ظرفیت 500GB

بدون LVM، هر Logical Drive فقط به‌صورت جداگانه قابل استفاده است. اما با LVM:

مرحله ۱: هر دو Logical Drive را به‌عنوان PV معرفی می‌کنید.

مرحله ۲: هر دو PV را در یک VG قرار می‌دهید. حالا یک استخر 1TB دارید.

مرحله ۳: از این استخر، هر تعداد LV که نیاز دارید می‌سازید.

مثلاً:

Logical VolumeاندازهMount Pointکاربرد
lv-root100GB/سیستم‌عامل
lv-var200GB/varLogها و داده‌های متغیر
lv-data600GB/dataماشین‌های مجازی و داده‌ها
آزاد100GBبرای نیاز آینده
نکته

با LVM نیازی نیست همه فضا را از ابتدا تخصیص دهید. می‌توانید بخشی از فضا را آزاد نگه دارید و در آینده هر LV را بزرگ‌تر کنید.


LVM در مقابل پارتیشن‌بندی سنتی

ویژگیپارتیشن‌بندی سنتیLVM
تغییر اندازه آنلاین❌ معمولاً نیاز به Downtime دارد✅ بزرگ کردن آنلاین بدون Downtime
ترکیب چند دیسک❌ ممکن نیست✅ چند PV در یک VG
Snapshot❌ پشتیبانی نمی‌شود✅ قابلیت Snapshot دارد
Thin Provisioning❌ پشتیبانی نمی‌شود✅ تخصیص بیش از ظرفیت واقعی
پیچیدگی✅ ساده‌تر⚠️ نیاز به یادگیری و دقت
عیب‌یابی✅ مستقیم‌تر⚠️ لایه اضافی عیب‌یابی را پیچیده‌تر می‌کند

عملیات رایج LVM

ساخت ساختار LVM از صفر

# مرحله ۱: ساخت Physical Volume
pvcreate /dev/sdb

# مرحله ۲: ساخت Volume Group
vgcreate vg-data /dev/sdb

# مرحله ۳: ساخت Logical Volume
lvcreate -L 200G -n lv-data vg-data

# مرحله ۴: ساخت File System
mkfs.xfs /dev/vg-data/lv-data

# مرحله ۵: Mount کردن
mount /dev/vg-data/lv-data /data

بزرگ کردن یک LV (بدون Downtime)

# افزایش اندازه LV به میزان 100 گیگابایت اضافی
lvextend -L +100G /dev/vg-data/lv-data

# بزرگ کردن File System (برای XFS)
xfs_growfs /data

# بزرگ کردن File System (برای ext4)
resize2fs /dev/vg-data/lv-data

اضافه کردن دیسک جدید به VG

# معرفی دیسک جدید به‌عنوان PV
pvcreate /dev/sdc

# اضافه کردن PV جدید به VG موجود
vgextend vg-data /dev/sdc
مزیت کلیدی

با اضافه کردن یک دیسک جدید به VG، بدون هیچ Downtime‌ای ظرفیت استخر ذخیره‌سازی افزایش می‌یابد و می‌توان LVهای موجود را بزرگ‌تر کرد.

بررسی وضعیت LVM

# نمایش Physical Volumeها
pvs
pvdisplay

# نمایش Volume Groupها
vgs
vgdisplay

# نمایش Logical Volumeها
lvs
lvdisplay

LVM Snapshot

یکی از قابلیت‌های مهم LVM، امکان گرفتن Snapshot است.

Snapshot یک تصویر لحظه‌ای از وضعیت یک LV در یک لحظه مشخص است.

کاربردهای Snapshot

  • پشتیبان‌گیری بدون Downtime: قبل از Backup، یک Snapshot بگیرید و Backup را از روی Snapshot انجام دهید
  • تست تغییرات: قبل از به‌روزرسانی یا تغییر، Snapshot بگیرید. اگر مشکلی پیش آمد، به حالت قبل برگردید
  • محیط توسعه: از Snapshotها برای ساخت محیط‌های تست استفاده کنید

مثال ساخت Snapshot

# ساخت Snapshot از lv-data با اندازه 50 گیگابایت
lvcreate -s -L 50G -n lv-data-snap /dev/vg-data/lv-data
توجه

Snapshot فضای اضافی مصرف می‌کند. اگر فضای اختصاص داده شده به Snapshot پر شود، Snapshot به‌صورت خودکار غیرمعتبر می‌شود. اندازه مناسب را با توجه به حجم تغییرات انتخاب کنید.


Thin Provisioning

در حالت عادی LVM، وقتی یک LV با ظرفیت مثلاً 500GB بسازید، این فضا بلافاصله از VG رزرو می‌شود حتی اگر هنوز داده‌ای روی آن ننوشته باشید.

Thin Provisioning این مشکل را حل می‌کند:

ویژگیLVM معمولی (Thick)LVM Thin
رزرو فضابلافاصله کل فضا رزرو می‌شودفقط فضای واقعاً استفاده‌شده اشغال می‌شود
Over-Provisioning❌ ممکن نیست✅ می‌توان بیشتر از ظرفیت واقعی تخصیص داد
کارایی✅ کمی بهتر⚠️ اندکی Overhead دارد
نیاز به مانیتورینگعادی⚠️ مانیتورینگ دقیق فضا ضروری است
هشدار مهم

در Thin Provisioning اگر فضای واقعی Pool تمام شود و مانیتورینگ مناسبی وجود نداشته باشد، ممکن است از دست رفتن داده یا توقف سرویس رخ دهد.


جایگاه LVM در ساختار ذخیره‌سازی

برای درک بهتر جایگاه LVM در کل ساختار، به این دیاگرام توجه کنید:

HDD / SSDPhysical DiskHDD / SSDHardware RAIDRAID ControllerHardware RAIDVirtual DiskLogical DriveVirtual DiskLVM Layer 1PV (Physical Volume)LVM Layer 1LVM Layer 2VG (Volume Group)LVM Layer 2LVM Layer 3LV (Logical Volume)LVM Layer 3ext4 / XFSFile Systemext4 / XFS
رفع ابهام

Logical Volume در LVM با Logical Drive در RAID Controller تفاوت دارد.

  • Logical Drive توسط RAID Controller از دیسک‌های فیزیکی ساخته می‌شود
  • Logical Volume توسط LVM در سطح سیستم‌عامل ساخته می‌شود

این دو مفهوم در لایه‌های متفاوتی قرار دارند و نباید با هم اشتباه گرفته شوند.


نقش LVM در پلایوید

در معماری پلایوید، استفاده از LVM در اکثر سناریوها توصیه می‌شود.

ساختار پیشنهادی متداول:

VGLVMount Pointکاربرد
vg-oslv-root/سیستم‌عامل و فایل‌های سیستمی
vg-oslv-swapswapحافظه Swap
vg-varlv-var/varLogها و داده‌های متغیر
vg-datalv-data/dataماشین‌های مجازی و Workloadها

مزایای این طراحی

  • انعطاف‌پذیری: در آینده اگر فضای /var یا /data کم شد، بدون Downtime بزرگ‌تر می‌شود
  • جداسازی Workload: داده‌های سیستم‌عامل از داده‌های کاری جدا هستند
  • مدیریت آسان‌تر: هر VG می‌تواند روی یک Logical Drive مجزا باشد
  • Snapshot: امکان گرفتن Snapshot از LVهای حساس قبل از عملیات‌های مهم
توصیه عملی

هنگام نصب پلایوید، توصیه می‌شود ۱۰ تا ۲۰ درصد فضای هر VG را خالی نگه دارید. این فضای آزاد برای عملیات Snapshot، بزرگ کردن LVها و مدیریت بحران بسیار ارزشمند است.


نکات مهم برای کارشناسان آیتی

انتخاب File System مناسب

File Systemبزرگ کردن آنلاینکوچک کردنمناسب برای
XFS✅ بله❌ خیرWorkloadهای سنگین، Datastore
ext4✅ بله✅ بله (با احتیاط)عمومی، سیستم‌عامل
نکته

اگر احتمال می‌دهید در آینده نیاز به کوچک کردن یک LV داشته باشید، از ext4 استفاده کنید. XFS فقط قابل بزرگ شدن است.

PE Size (Physical Extent)

  • اندازه پیش‌فرض PE در اکثر توزیع‌ها 4MB است
  • برای VGهای بزرگ (چند ترابایتی)، افزایش PE Size می‌تواند مدیریت را ساده‌تر کند
  • PE Size بعد از ساخت VG قابل تغییر نیست

عملکرد LVM

  • LVM یک لایه نرم‌افزاری اضافه می‌کند، اما Overhead آن در اکثر سناریوها ناچیز است
  • در سناریوهای I/O بسیار سنگین، مطمئن شوید که Alignment درست انجام شده
  • استفاده از LVM Cache می‌تواند ترکیبی از SSD و HDD را برای بهبود Performance ممکن کند

جمع‌بندی

LVM ابزاری قدرتمند برای مدیریت انعطاف‌پذیر فضای ذخیره‌سازی در لینوکس است.

اگر بخواهیم خیلی ساده بگوییم:

  • بدون LVM: اندازه فضا ثابت است و تغییر آن سخت و پرریسک است
  • با LVM: فضا را می‌توان بدون Downtime بزرگ کرد، چند دیسک را ترکیب کرد و Snapshot گرفت
مفهومچیست؟توسط چه چیزی ساخته می‌شود؟
Physical Diskدیسک واقعی داخل سرورسخت‌افزار
Logical Driveدیسک منطقی ساخته‌شده توسط RAIDRAID Controller
PVدیسکی که به LVM معرفی شدهpvcreate
VGاستخر فضا از یک یا چند PVvgcreate
LVفضای قابل استفاده شبیه پارتیشنlvcreate
File Systemساختار فایل روی LVmkfs

در نتیجه، در زیرساخت‌های حرفه‌ای، استفاده از LVM نه یک انتخاب بلکه یک ضرورت برای مدیریت پویا و مطمئن فضای ذخیره‌سازی است.