LVM

از ویکی فارسی اوبونتو
نسخهٔ تاریخ ‏۷ اسفند ۱۴۰۲، ساعت ۱۲:۲۷ توسط EsmaeelE (بحث | مشارکت‌ها) (ساخت یک حجم منطقی logical volume)
پرش به: ناوبری، جستجو

LVM سرواژگان Logical Volume Manager به معنای «مدیر حجم منطقی»، راهکاری برای انتزاع حجم‌های منطقی از فضای فیزیکی است که بر افزایش انعطاف تمرکز دارد. با LVM می‌توان کارهایی مثل افزودن دیسک‌های جدید، انتقال داده‌ها به آن‌ها، برداشتن دیسک‌های قدیمی و تغییر اندازهٔ حجم‌های منطقی را به سرعت و بدون پیاده کردن حجم‌ها انجام داد.

مفاهیم

این انعطاف از طریق سطحی از انتزاع به دست می‌آید که شامل سه مفهوم است:

حجم فیزیکی

حجم فیزیکی یا PV سرواژگان Physical Volume و نزدیک‌ترین مفهوم به سخت‌افزار است. این حجم می‌تواند یک دیسک کامل، افرازی از دیسک یا هر افزارهٔ بلوکی دیگری (برای نمونه یک آرایهٔ RAID) باشد.

به خاطر داشته باشید هنگامی که عنصری فیزیکی برای PV بودن در LVM برپا شد، باید فقط از طریق LVM مدیریت شود؛ در غیر این صورت، ممکن است موجب خرابی داده‌ها شود. به عبارت دیگر با فعال‌سازی این ویژگی، LVM مدیریت دستگاه‌های فیزیکی را برعهده می‌گیرد.

گروه حجمی

تعدادی از حجم‌های فیزیکی می‌توانند در یک گروه حجمی یا VG سرواژگان Volume Group قرار گیرند که مانند دیسکی مجازی و قابل گسترش است.

گروه‌های حجمی انتزاعی بوده و در پروندهٔ افزاره‌ای در ‪/dev‬ ظاهر نمی‌شوند، پس خطر استفادهٔ مستقیم از آن‌ها وجود ندارد.

حجم منطقی

سومین مفهوم، حجم‌های منطقی یا LVها سرواژگان Logical Volume هستند که بخشی از یک گروه حجمیند. اگر قیاس «گروه حجمی به مثابه دیسک» را در نظر بگیریم، حجم منطقی به مثابه یک افراز است.

حجم‌های منطقی به عنوان یک افزارهٔ بلوکی در ‪/dev‬ قرار گرفته و می‌توانند مانند یک افراز عادی استفاده شوند.

نکات

نکتهٔ مهم این است که بخش کردن گروه حجمی به حجم‌های منطقی، کاملاً مستقل از مولفهٔ فیزیکی آن است. گروه حجمی‌ای با فقط یک مولفهٔ فیزیکی (مثلاً یک دیسک) می‌تواند به ده‌ها حجم فیزیکی تقسیم شود. به طور مشابه، یک گروه حجمی می‌تواند از چندین دیسک فیزیکی استفاده کرده و به شکل یک حجم منطقی بزرگ ظاهر شود. تنها محدودیت، این است که به شکل واضحی، مجموع حجم تخصیصی به حجم‌های منطقی نمی‌تواند بیش‌تر از ظرفیت کل حجم‌های فیزیکی در گروه حجمی باشد.

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

در هر صورت، به خاطر داده باشید که یک حجم منطقی به هیچ حجم فیزیکی خاصی متّصل نیست. امکان تعیین دقیق این که داده‌های یک حجم منطقی به صورت فیزیکی در کجا قرار دارند وجود دارد، ولی این این امکان برای استفادهٔ روزمره کارایی ندارد. به طور خلاصه: هنگام استفاده از حجم‌های فیزیکی مختلف، یک حجم منطقی می‌تواند بین فضاهای فیزیکی مختلف آن گروه حجمی، جابه‌جا شود.

نصب

با فرمان زیر ابزار مدیریت lvm را نصب می‌کنیم.


$ sudo apt install lvm2

نمونه

فرض کنید یک دیسک به اندازهٔ حجمی 2TB در اختیار داریم که می‌خواهیم آن را با lvm مدیریت کنیم.


اخطار:

با توجه به حساسیت کار و امکان از دست دادن داده‌ها پیش از شروع گام‌ها بررسی‌های لازم را انجام دهید.

بهتر است پیش از شروع کار اهداف و نتیجهٔ دلخواه نهایی را یادداشت کنید و براساس آن‌ها گام‌های مورد نظر را تنظیم کنید تا از برداشت‌های نادرست و نتایج نامناسب پیشگیری شود.

با فرمان lsblk یا fdisk می‌توان از متصل بودن دیسک به سامانه و اینکه می‌خواهیم روی کدام یک از دیسک‌ها کار کنیم اطمینان حاصل کرد.


$ lsblk -f


$ fdisk -l

فرض کنیم دیسک مورد نظر به عنوان sdb شناخته شده است.

هدف مدیریت یک دیسک به حجم 2TB است که در سامانه با نام sdb شناسایی شده است.

افرازش دیسک

نخستین گام افراز بندی دیسک است.


$ fdisk /dev/sdb

تمام فضای دیسک را به یک قسمت افراز می‌کنیم.(sdb1)

اگر دیسک‌های دیگری هم داریم به همین شکل کار را ادامه می‌دهیم.

ساخت یک حجم فیزیکی physical volume

برای هریک از افرازها یک حجم فیزیکی با فرمان زیر می‌سازیم.

$ pvcreate /dev/sdb1


با فرمان pvdisplay از ساخت حجم فیزیکی اطمینان حاصل می‌کنیم.


$ pvdisplay


ساخت یک گروه منطقی logical group

دسته‌ای از حجم‌های فیزیکی را در یک گروه منطقی قرار می‌دهیم.


$  vgcreate mynew_vg /dev/sdb1 

اگر دو حجم داشته باشیم به این شکل از آنها یک گروه منطقی می‌سازیم.


$ vgcreate mynew_vg /dev/sdb1 /dev/sdc1 


ساخت یک حجم منطقی logical volume

روی گروه منطقی mynew_vg یک حجم منطقی به اندازهٔ 1000GB با نام database می‌سازیم.


$ lvcreate -L 1000G -n database mynew_vg

در این مرحله می‌توان گروه‌های منطقی را با فرمان vgdisplay بررسی کرد.


$ vgdisplay

قالب‌بندی(format)

برای ساخت سیستم‌فایل روی حجم‌های منطقی قالب‌بندی(format) انجام می‌دهیم.


$ mkfs.ext4 -m 0 /dev/mynew_vg/database 

سوارکردن حجم‌ها روی فایل سیستم

$ mkdir /mnt/database 
$ mount /dev/mynew_vg/database   /mnt/database 

برای دائمی کردن این تنظیم پروندهٔ fstab را ویرایش می‌کنیم.

خطوط لازم را از فایل /etc/mtab می‌خوانیم.


/dev/mapper/mynew_vg/database /home/database xfs rw,seclabel,relatime,attr2,inode64,noquota 0 0

و در پروندهٔ /etc/fstab قرار می‌دهیم.


/dev/mapper/mynew_vg/database /home/database xfs defaults 0 0

بررسی سوار شدن صحیح گروه حجمی


$ mount -a

به این شکل پس از باز راه‌اندازی سامانه سوارشدن‌ها نیز به صورت خودکار انجام می‌شود.

تغییر اندازهٔ گروه حجمی

نمونهٔ پرتکرار

فرض کنید فضای ذخیره‌سازی روی var/ کافی نیست و نیاز به افزایش دارد. با استفاده از امکانات lvm می‌توان از فضای خالی home/ کاست و به var/ افزود.

کاستن از فضای یک گروه حجمی (home)


$ lvreduce --resizefs -L 20G  /dev/alert-vg/home

فرمان بالا میزان دیسک را روی 20GB تنظیم می‌کند.


افزودن فضای بدست آمده به گروه حجمی var


$ lvextend --resizefs -l +100%FREE /dev/alert-vg/var

فرمان بالا فضای آزاد شده از دیسک را(همهٔ فضای ممکن) به var اضافه می‌کند. می‌توانید با تنظیم عدد درصد مقدار مورد نظر را به گروه بیفزایید.


دفت کنید استفاده از انتخاب resizefs در هر دو فرمان الزامی است در غیر این صورت فایل سیستم خراب می‌شود.