مقدمه
در درس قبل با پارتیشنبندی سنتی دیسکها (مانند /dev/sda1) آشنا شدیم. این روش بسیار
کارآمد است، اما یک محدودیت بزرگ دارد: انعطافناپذیری. فرض کنید شما یک پارتیشن /home
با حجم ۱۰۰ گیگابایت ایجاد کردهاید و پس از مدتی این فضا پر میشود. بزرگ کردن این پارتیشن، به
خصوص اگر فضای خالی مجاور آن روی دیسک وجود نداشته باشد، کاری بسیار پیچیده، پرخطر و معمولاً
نیازمند خاموش کردن سیستم است.
برای حل این مشکل، تکنولوژی LVM (Logical Volume Manager) یا «مدیر ولوم منطقی» به وجود آمد.
LVM یک لایهی انتزاعی (abstraction layer) بین دیسکهای فیزیکی شما و سیستم عامل ایجاد میکند. این
لایه به شما اجازه میدهد تا با فضای ذخیرهسازی خود نه به عنوان قطعات ثابت، بلکه به عنوان یک منبع
انعطافپذیر رفتار کنید. با LVM، کارهایی مانند تغییر اندازهی پارتیشنها، اضافه کردن یک دیسک جدید
برای گسترش فضای موجود و ایجاد نسخههای لحظهای (snapshots) به سادگی امکانپذیر میشود.
مفاهیم اصلی LVM
برای درک LVM، باید با سه جزء اصلی آن آشنا شویم. میتوانیم این فرآیند را مانند ساختن یک سازه با
لگو تصور کنیم.
-
ولومهای فیزیکی (Physical Volumes - PV): اینها آجرهای لگوی شما هستند. یک PV، یک دیسک
فیزیکی کامل یا یک پارتیشن سنتی (مانند /dev/sdb1) است که برای استفاده توسط LVM
«آمادهسازی» شده است. PVها منبع اصلی فضای ذخیرهسازی ما هستند.
-
گروههای ولوم (Volume Groups - VG): این مانند یک جعبهی بزرگ است که تمام آجرهای لگوی
خود را داخل آن میریزید. یک VG از ترکیب یک یا چند PV به وجود میآید و یک استخر (pool) بزرگ و
واحد از فضای ذخیرهسازی را تشکیل میدهد. شما میتوانید با اضافه کردن PVهای جدید (مثلاً یک
هارد دیسک جدید)، این استخر را در هر زمانی بزرگتر کنید.
-
ولومهای منطقی (Logical Volumes - LV): اینها سازههای نهایی هستند که شما با لگوهای
داخل جعبه میسازید. یک LV، چیزی است که سیستم عامل آن را به عنوان یک «پارتیشن» میبیند. شما
با جدا کردن بخشی از فضای داخل یک VG، یک LV میسازید. سپس روی این LV یک فایلسیستم (مانند
ext4) ایجاد کرده و آن را در یک نقطه (مانند /home) متصل (mount) میکنید. زیبایی
کار اینجاست که شما میتوانید اندازهی این LVها را به راحتی و بدون نیاز به راهاندازی مجدد
سیستم، کم یا زیاد کنید.
بنابراین، جریان کار به این صورت است: دیسک فیزیکی ⇜ پارتیشن ⇜ ولوم فیزیکی (PV) ⇜ گروه ولوم (VG)
⇜ ولوم منطقی (LV) ⇜ فایلسیستم
مشاهدهی یک ساختار LVM
بسیاری از نصبکنندههای مدرن لینوکس (بهویژه برای سرورها) به صورت پیشفرض از LVM استفاده
میکنند. حتی اگر خودتان LVM را راهاندازی نکرده باشید، دانستن نحوهی تشخیص و مشاهدهی آن ضروری
است.
ابزارهایی که در درس قبل یاد گرفتیم، ساختار LVM را به ما نشان میدهند. در خروجی lsblk،
ولومهای منطقی معمولاً به صورت تو در تو نمایش داده میشوند:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
└─sda1 8:1 0 100G 0 part
└─ubuntu--vg-root 253:0 0 100G 0 lvm /
همچنین، لینوکس مجموعهای از دستورات اختصاصی برای مشاهدهی هر جزء از LVM را فراهم میکند (اجرای
این دستورات معمولاً به sudo نیاز دارد):
- sudo pvs: نمایش ولومهای فیزیکی (Physical Volumes).
- sudo vgs: نمایش گروههای ولوم (Volume Groups) و فضای
خالی موجود در آنها.
- sudo lvs: نمایش ولومهای منطقی (Logical Volumes).
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
ubuntu-vg 1 1 0 wz--n- <100.00g 0
قدرت LVM: تغییر اندازه
همانطور که گفتیم، مزیت اصلی LVM انعطافپذیری آن است. بیایید سناریوی پر شدن پارتیشن
/home را دوباره در نظر بگیریم. اگر /home یک ولوم منطقی (LV) باشد و در گروه
ولوم (VG) شما فضای خالی وجود داشته باشد، فرآیند افزایش حجم آن بسیار ساده است:
- با یک دستور (مانند lvextend) به LVM میگویید که مثلاً ۵۰ گیگابایت از فضای خالی VG
را به LV مربوط به /home اضافه کند.
- با دستور دیگری (مانند resize2fs) به فایلسیستم روی آن LV اطلاع میدهید که اکنون
فضای بیشتری در اختیار دارد تا خود را گسترش دهد.
عملیات آنلاین (Online)
یکی از بزرگترین مزایای LVM این است که بسیاری از این عملیاتها، از جمله افزایش حجم یک ولوم
منطقی، میتوانند به صورت آنلاین انجام شوند؛ یعنی زمانی که فایلسیستم متصل (mount) است
و کاربران در حال استفاده از آن هستند. این قابلیت برای سرورهایی که باید همیشه در دسترس باشند،
حیاتی است.
LVM قابلیتهای پیشرفتهی دیگری مانند ایجاد نسخههای لحظهای (Snapshots) را نیز فراهم میکند که
برای پشتیبانگیری بدون متوقف کردن سرویسها بسیار مفید است.