مفهوم LVM در لینوکس
قبل از اینکه به سراغ مفهوم LVM در لینوکس برویم بد نیست کمی در خصوص LVM بیشتر بدانیم البته LVM ای که ما می خواهیم در خصوص آن صحبت کنیم جامع و وابسته به سیستم عامل خاصی نیست ، Logical Volume Management یا LVM یک تکنیک اختصاص فضای هارد دیسک برای استفاده در مواردی است که تعداد هارد دیسک های یک سیستم افزایش پیدا می کند و به شما قابلیت های بسیار زیادی در حوزه پارتیشن بندی هارد دیسک ها می دهد ، انعطاف پذیری بسیار زیادی که در LVM وجود دارد این امکان را به سیستم عامل ها می دهد که پارتیشن ها را بصورت متمرکز ، بصورت توزیع شده و یا ترکیبی بر روی چندین هارد دیسک ایجاد و مدیریت کنند و مهمترین نکته در استفاده از LVM این است که در چنین شرایطی سیستم عامل و کاربر به هیچ عنوان متوجه این تغییرات نخواهند شد ، شما براحتی می توانید با استفاده از تکنیک LVM فضای پارتیشن های خود را کم و زیاد کنید و یا آنها را به جای دیگری انتقال دهید بدون اینکه کوچکترین تداخلی با کارکرد سیستم عامل داشته باشید. از تکنیک LVM به عنوان یک تکنیک مجازی سازی فضای ذخیره سازی یا Storage Virtualization نیز نام برده می شود ، LVM در همان لایه ای کار می کند که درایورها کار می کنند بنابراین تا حدود زیادی درگیری با سیستم عامل ندارد.
LVM را به عنوان Dynamic Partition هم می شناسند ، Logical Volume Manager یا LVM به شما این امکان را می دهد که در سیستم عامل GNU Linux یک فایل سیستم را بصورت همزمان بر روی چندین پارتیشن قرار بدهید. اگر شما بر روی یک پارتیشن فضای کمی دارید و دچار کمبود فضا شده اید و می خواهید فضای بیشتری به پارتیشن مورد نظر بدهید شما می توانید از Logical Volume Manager یا LVM استفاده کنید. از LVM می توان به عنوان یک لایه ظریف نرم افزاری در بالای چندین هارد دیسک و پارتیشن یاد کرد که این قابلیت را به ما می دهد که بدون اینکه کاربر متوجه شود پارتیشن ها را تغییر اندازه بدهیم ، پارتیشن بندی را مجددا انجام دهیم ، هارد دیسک ها را تعویض کنیم و همچنین بکاپ گیری ها را به سادگی انجام دهیم. این قابلیت در ویندوز و سیستم عامل های دیگر هم وجود دارد اما با اسامی و اشکال مختلف ، در این مقاله می خواهیم در خصوص Linux LVM بیشتر صحبت کنیم.
LVM یا Logical Volume Management این امکان را به کرنل سیستم عامل می دهد که پارتیشن بندی هارد دیسک های موجود بر روی سیستم وابستگی به ساختار و لایه بندی دیسک های سخت افزاری روی سیستم نداشته باشند و بتوانند بصورت مستقل از دیسک عمل کنند. در ساختار پارتیشن بندی و مدیریت دیسک های سنتی که در قدیم استفاده می شد ، سیستم عامل به دنبال هارد دیسک های نصب شده بر روی دستگاه می گشت و بعد از شناسایی کردن هارد دیسک ها به سراغ شناسایی پارتیشن ها و فضاهای موجود بر روی آنها می کرد. بنابراین اگر هارد دیسک اول را به سیستم معرفی می کردید طبیعتا به شکل dev//sda// و هارد دیسک دوم به شکل dev//sdb// و .. به همین شکل شناسایی می شد و سیستم عامل بعد از شناسایی dev//sda// در داخل همان هارد دیسک به دنبال پارتیشن های dev//sda1// و dev//sda2// و … می گشت. با استفاده از LVM دیگر این وابستگی سیستم عامل به ساختار دیسک ها وجود ندارد و دیسک ها و پارتیشن ها می توانند شامل چندین دیسک و چندین پارتیشن باشند که در قالب یک پارتیشن یا فایل سیستم دیده می شوند. برای مثال شما می توانید پارتیشنی داشته باشید که 1 گیگابایت از dev//sda// و 2 گیگابایت از dev//sdb// را در قالب dev//sda1//به شما نمایش دهد. سیستم عامل به هیچ عنوان متوجه چنین تغییری نخواهد شد زیرا LVM با استفاده از مکانیزمی به نام Volume Groups و Logical Volumes که به ترتیب دیسک ها و پارتیشن ها را تشکیل می دهند این ساختار را از دید سیستم عامل پنهان می کند.
با توجه به اینکه Volume Group ها و Logical Volume ها واقعا بصورت فیزیکی بر روی هارد درایو قرار نگرفته اند ، شما می توانید با استفاده از LVM به سادگی دیسک ها و پارتیشن های جدید را ایجاد کنید و از طرفی بدون کوچکترین وقفه در سیستم می توانید اندازه Volume ها یا همان پارتیشن ها را زیاد و کم کنید. از طرفی LVM به شما امکاناتی را ارائه می دهد که در حالت عادی فایل سیستم قادر به انجام چنین کاری نمی باشد ، برای مثال Ext3 نمی تواند از قابلیت های live snapshot استفاده کند اما با استفاده از LVM شما می توانید از Logical Volume های خود بدون نیاز به اینکه Unmount شوند Backup یا Snapshot بگیرید.
چه زمانی باید از LVM استفاده کرد ؟
اولین سئوالی که قبل از پیاده سازی LVM در دیسک ها و پارتیشن ها باید از خودتان بپرسید این است که قرار است من با این پارتیشن ها چه کاری انجام بدهم ؟ برخی از توزیع های لینوکس مثل Fedora بصورت پیشفرض بر روی خودشان LVM را نصب شده دارند. اگر شما بر روی سیستم خود فقط یک هارد دیسک دارید که مربوط به هارد درایو داخلی لپتاپ شما است و قرار نیست به این هارد دیسک ظرفیتی اضافه و یا کم شود و مثلا از لینوکس توزیع Ubuntu هم استفاده می کنید و هیچ نیازی به قابلیت live snapshot هم ندارید ، نیازی به داشتن LVM هم ندارید. اما اگر شما چندین هارد دیسک دارید که می خواهید همه این هارد دیسک ها برای سیستم عامل در قالب یک پارتیشن یا فایل سیستم دیده شوند و به قول فنی تر همه هارد دیسک ها به شکل یک Storage Pool دیده شوند در این حالت بهتر است که از LVM استفاده کنید. LVM مدیریت شما بر روی هارد دیسکها را به شدت قوی می کند اما به عنوان یک مکانیزم امنیتی محسوب نمی شود ، در زیر بلوک هایی که ساختار LVM را تشکیل داده اند را مشاهده می کنید :
- Physical Volume یا PV : اولین لایه بعد از هارد دیسک های فیزیکی است ، به پارتیشن هایی که مستقیما بر روی هارد دیسک یا یک فایل loopback ایجاد می شوند و شما می توند Volume Group های LVM را در آنها ایجاد کنید PV گفته می شود. به قول دیگر PV ها در واقع اولین اطلاعات مدیریتی هستند که بر روی هارد دیسک فیزیکی نوشته می شوند تا سیستم قادر به شناسایی آنها باشد. برای درک بهتر فقط کافیست بدانید که PV ها بلوک های بزرگی هستند که برای مدیریت اولیه هارد دیسک های شما ایجاد می شوند و معمولا شامل همه فضای دیسک سخت شما می شوند.LVM از PV به عنوان نگهدارنده PE ها استفاده می کند.
- Volume Group یا VG : یک VG شامل مجموعه ای از Physical Volume ها است که در قالب یک دیسک تمایش داده می شوند یا بهتر بگوییم در قالب یک Storage Volume نمایش داده می شوند. VG ها شامل Logical Volume های ما هستند ، شما می توانید برای درک بهتر از VG به عنوان هارد درایوی که سیستم شناخته است یاد کنید.
- Logical Volume یا LV : این قسمت در واقع همان پارتیشن هایی هستند که شما می شناسید ، یک Virtual یا Logical Partition که بر روی یک Volume Group قرار گرفته است می تواند شامل چندین Physical Extents باشد. در واقع LV نتیجه کاری LVM است که قرار است ما از آن استفاده کنیم. LV ها محل ذخیره سازی داده های ما هستند.
- Physical Extent یا PE : کوچکترین اندازه یا فضایی است که می توان از Physical Volume گرفت و به Logical Volume اختصاص داد ، پیشفرض این فضا 4 مگابایت می باشد و برای درک بهتر آن کافیست را قسمتی از دیسک فرض کنید که می توان آن را به هر پارتیشنی اختصاص داد.
مزایای استفاده از Linux LVM چیست ؟
- می توانید از هر تعداد هارد دیسکی که بر روی سیستم وجود دارد در قالب یک هارد دیسک استفاده کنید
- مدیریت دیسک ها از نظر سیستم عامل ساده تر می شود زیرا سیستم عامل نمی تواند لایه پایینی را مشاهده کند
- فضای یک Logical Volume می تواند بین چندین دیسک تقسیم شود
- می توانید Logical Volume هایی با ظرفیت کم ایجاد کنید و بعدها به فضای آن در صورت نیاز اضافه کنید
- می توانید فضای پارتیشن های خود را به سادگی تغییر بدهید بدون اینکه کاربر و سیستم عامل درگیر شوند
- اضافه کردن ، حذف کردن و جایگزین کردن دیسک های فیزیکی بسیار ساده تر می شود و سرویس دهی قطع نمی شود
- قابلیت استفاده از Backup با استفاده از Snapshot ها فراهم می شود
- انتقال آنلاین دیسک ها و محتویات آنها بدون Restart کردن سرویس ها امکانپذیر می شود
در آموزش های بعدی در خصوص نحوه ایجاد کردن LVM با استفاده از تعریف کردن یک سناریوی عملی با این مورد آشنا خواهید شد ، اگر کمی با ابزار Disk Management ویندوز کار کرده باشد و مفاهیم Shrink و Extend را هم بدانید کمی با مفهوم LVM بیشتر آشنا خواهید شد هر چند پیاده سازی LVM در این دو سیستم عامل تا حدود زیادی متفاوت است. البته به این موضوع هم توجه کنید که پیاده سازی LVM چندان هم ساده نیست و پیچیدگی هایی که در پیاده سازی این مفهوم وجود دارد باعث می شود استفاده از آن راحت نباشد و این به عنوان یک نقطه ضعف برای LVM در نظر گرفته می شود.