آموزش کامل ساخت LVM در لینوکس


آموزش کامل ساخت LVM در لینوکس

LVM چیست؟

ساخت دیسک  LVM یا Logical Volume Management  تکنیکی است پر کاربرد برای مدیریت فضای یک سرور که قابلیت های خوبی را در اختیار ادمین سرور قرار می دهد. یکی از این قابلیت ها انعطاف پذیری آن است که می توان پارتیشن ها را به صورت توزیع شده، متمرکز یا ترکیبی از این دو را با استفاده از چندین دیسک ایجاد نمود که البته تاثیری در عملکرد سرور نیز نخواهد داشت. همچنین امکان اضافه کردن یا کم کردن فضای آن با کمترین ریسک نیز فراهم است.

همانطور که در شکل بالا ملاحظه میکنید ابتدا دیسک های فیزیکی به physical volume  یا همان PV  تبدیل می شوند و با استفاده از  Volume Group یا VG تمام PV ها به صورت یک گروه یکپارچه در خواهند آمد. در اینجا است که میتوان از دل این VG  اقدام به ساخت Volume Group  های مختلف نمود که می توان آنها را سایز آنها را افزایش یا کاهش داد بدون این که نیازی به فرمت کردن یا پارتیشن بندی مجدد دیسک داشته باشیم. همچنین از طریق این روش میتوان می توان I/O دیسک را نیز بهبود بخشید چرا که میتوان LV ساخت که در پشت آن چندین دیسک وجود دارد که درنتیجه عملیات خواندن و نوشت داده ها می تواند بین دیسک ها تقسیم گردد.

به صورت خلاصه قابلیت های این تکنیک به شرح زیر است.

  • قابلیت افزایش فضا در هر زمان
  • پشتیبانی از انواع مختلف File system
  • استفاده از Migration در ریکاور کرد خطاهای دیسک
  • بازگردانی فایل سیستم با استفاده از snapshot

در این آموزش من از Centos 7  با یک دیسک استفده کرده ام. در ادامه   با دستور  های زیر به ترتیب PV، VG و LV های موجود در سیستم را مشاهده خواهید کرد.

# PVS

# VGS

# LVS

 

مواردی که در شکل بالا مشخص شده اند به شرح زیر می باشند:

  • نمایش دهنده دیسکی است که در Physical Volume  مورد استفاده قرار گرفته است.
  • سایز physical disk
  • نام انتخاب شده برای Volume Group
  • سایز Volume Group
  • نمایش دهنده LV های ایجاد شده به همراه VG های آنها که همانطور که از اسم گذاری آنها مشخص است یکی برای SWAP و دیگری برای root سیستم استفاده شده است.
  • نمایش میزان سایز LV ها

با تصور پر شدن فضای دیسک ما سه دیسک مجزا برای افزایش آن به سرور اضافه میکنیم که مطابق با شکل زیر است. و همانطور که ملاحظه میکنید سه دیسک با نام ها ی sdb, sdc, sdd و با ظرفیت 20 گیگ به سرور اضافه شده اند.

#fdisk –l

 


با دستور زیر وضعیت Volume Group های ایجاد شده در سیستم قابل مشاهده است.

#vgdisplay

 

 

که در آن

VG name : نام Volume Group

Format: فرمت و ساختار استفاده شده در ساخت VG که در اینجا lvm2  است.

VG Access:  که نمایشگر Permission های VG است

VG Status: وضعیت VG  را نمایش میدهد که در اینجا  وضعیت resizable  است و در موقعی نیاز شد میتوان ظرفیت آن را افزایش داد.

Cur LV: بیانگر تعداد LV هایی است که از دل این VG ایجاد شده اند.

Cur PV and Act PV: بیانگر تعداد Physical disk  ها و فعال یا غیر فعال بودن آنها است.

PE Size: بیانگر Physical Extents است  که بلاک بندی منطقی physical Volume  برای LVM  محسوب می شود که مقدار پیش فرض آن 4 مگابایت می باشد. به عنوان مثال تصور کنید قصد ساخت LV با ظرفیت 8 گیگابایت داریم با مقدار پیشفرض 4 مگابایت PE size  در نهایت 2048  بلاک منطقی استفاده خواهد شد.

8GB = 8192 MB

8192MB /4MB=2048

Total PE: تعداد کل physical extend  ها

Alloc PE : تعداد PE های اختصاص داده شده و مورد مصرف به LV ها

Free PE: تعداد PE های آزاد و استفاده نشده

در ادامه ابتدا ما اقدام به ساخت یک PV  متشکل از سه دیسک جدید میکنیم.

توجه : پیشنهاد می گردد برای ساخت PV  ابتدا بخش مورد نظر از دیسک جدید یا کل آن  را با دستور fdisk  به یک پارتیشن جدیدی با فرمت lvm تبدیل کرده و سپس مراحل  را ادامه دهید. ساخت PV از کل دیسک به مانند دستور زیر سریعتر و آسانتر است و نیازی به ریبوت ندارد. اما با توجه به مشکلاتی که ممکن است در مدیریت آن پیش آید پیشنهاد نمی گردد. به عنوان مثال با روش زیر کل فضای دیسک برای ایجاد pv مورد استفاده قرار میگیرد و متا دیتایی مبنی بر LVM  بودن آن بر روی دیسک ایجاد نمی گردد لذا ممکن است توسط سیستم عاملی دیگر به عنوان دیسکی خالی تصور شده و از ابتدا روی آن عملیات نوشتن را انجام دهد. در آموزشی جداگانه نحوه پارتیشن کردن دیسک با استفاده از دستور fdisk  را توضیح خواهم داد.

 

# pvcreate /dev/sdb /dev/sdc /dev/sdd

 

همانطور که در شکل زیر میبینید ایجاد PV مورد نظر با موفقیت انجام شد ودر ادامه با اجرای دستور PVS نیز مشاهده خواهید کرد که سه دیسک جدید ایجاد شده اند و بر خلاف sda2  که دارای VG به نام CentOS است این physical Volume  ها فاقد VG هستند.

حال نوبت به ایجاد volume group  می رسد. که با دستور به شکل زیر ایجاد خواهد شد.

# vgcreate –s 8M [Volumegroupname] pv1 pv2 pv3 … pvn

 

که در دستور بالا –s  برای مشخص کردن PE Size  به میزان 8 مگابایت استفاده شده است در صورت عدم استفاده از این Option  سیستم از مقدار 4 مگابایتی پیش فرض استفاده خواهد کرد. [Volumegroupname] نیز نامی خواهد بود که برای volume Group  در نظر گرفته اید و PV ها بیانگر Physical Voilume  هایی است که در مرحله قل ایجاد کرده است.

ما در این مثال سایز PE را 8 مگابایت قرار خواهیم داد.

 

که در شکل بالا  #Sn  بیانگر تعداد snapshot های موجود در این Volume Group  و Attr  نیز بیانگر خصوصیات آن می باشد که میتواند Writeable, readable, resizeable, exported, partial   و clustered باشد. که در اینجا wz- – n – به معنی Writeable و  resizeable است.

لست کامل خصوصیات به شرح زیر است.

  1. Permissions: (w)riteable, (r)ead-only
  2. Resi(z)eable
  3. E(x)ported
  4. (p)artial: one or more physical volumes belonging to the volume group are missing from the system
  5. Allocation policy: (c)ontiguous, c(l)ing, (n)ormal, (a)nywhere
  6. (c)lustered, (s)hared

با استفاده از –v  در دستور vgs  نیز میتوان اطلاعات بیشتری مانند UUID و سایز PE  را نیز مشاهده کنید.

# vgs –v

 

با ساخت Volume Group  یا VG میتوانیم اقدام به ساخت LV  و اختصاص فضا به آنها از فضای موحود در Vg کنیم .

برای ساخت LV و مشخص کردن حجم آن ما چند روش پیش رو داریم یکی استفاده از PE Size  و دیگری مشخص کردن میزان حجم براساس بایت (sectore,byte,kilobyte,megabyte,….) است که در ادامه از هر چند روش برای ایجاد LV  استفاده خواهیم کرد.

روش اول استفاده از PE size

برای استفاده از PE Size  شما باید مقدار تعیین شده آن برای VG  را بدانید. مقدار تعریف شده در این آموزش 8 مگابایت بود در نتیجه با توجه به توضیحات قبل برای ساخت یک LV 20 گیگاباتی ما 2560 PE  باید اختصاص دهیم.

# lvcreate -l (Extend size) -n (name_of_logical_volume) (volume_group)

 

در دستور بالا –l  به معنی استفاده از Physical Extend  می باشد  و –n  جهت تعریف نام LV مرد استفاده قرار میگیرد.

همانطور که در شکل بالا میبینید LV به اسم PE-LV یا حجم 20 گیگابایت ایجاد شده است.

روش دوم

استفاده از سایز مشخص

# lvcreate -L 10G -n (name_of_logical_volume) (volume_group)

 


استفاده از مقداری از فضای VG  به درصد

در این روش میتوان به جای مصخ کردن مقدار دقیق درصدی از دیسک به LV  اختصاص یابد به عنوان مثال در دستور زیر ما ده درصد از فضای VG  را به یک LV اختصاص خواهیم داد.

# lvcreate -l 10%VG -n mylv  new-vg

 

توجه داشته باشید که در دستور بالا از 10 درصد فضای کل VG برای ساخت LV ساخته خواهد شد نه از فضای باقی مانده. در مثال زیر نیز با اجرای دستور، ده درصد از فضای کل و به میزان 6 گیگابایت به LV جدید اختصاص یافت.

استفاده از باقی مانده فضای آزاد VG

با اجرای دستور زیر تنها ده درصد از فضای باقی مانده و ازاد از VG  ایجاد شده برای ساخت LV  جدید مورد استفاده قرار خواهد گرفت

# lvcreate -l 10%free -n mylv  new-vg

 

با دستور بالا از 20 گیگابایت فضای باقی مانده از VG، ده درصد برای ساخت LV جدید استفاده خواهد شد. برای استفاده از کل فضای خالی VG  کافی است مقدار را برابر با 100% قرار دهید.

هدف نهایی ما در این آموزش ایجاد سه LV  با حجم 20 گیگابایت بود در نتیجه مابقی LV های ایجاد شده را حفذ میکنیم و تنها همان سه LV  را نگه میداریم و برای راحتی بهتر در ادامه کار نام آنها را نیز تغییر خواهم داد.

# lvrename VGname Old-lvname new-lvname

 

یا

# lvrename /dev/vg02/lvold /dev/vg02/lvnew

 


و در نهایت

برای این که امکان استفاده از LV  ها فراهم شود نیاز است که با یکی از انواعFile system  که ما فرمت ها آنها را فرمت کنیم در اینجا من قصد دارم از فرمت ext4  استفاده کنم. برای این کار از دستور زیر استفاده خواهیم کرد.

# mkfs.ext4 /dev/new-vg / lv1

# mkfs.ext4 /dev/new-vg / lv2

# mkfs.ext4 /dev/new-vg/ lv3

 

در نهایت Logical Volume  های ساخته شده با Mount  شدن به یک دایرکتوری قابل استفاده خواهند بود.

برای mount  کردن lv  های ساخته شده ابتدا سه دایرکتوری خواهیم ساخت سپس هر کدام را جداگانه به یکی از دایرکتوری ها mount  خواهیم کرد.

# mount /dev/new-vg/lv1       /tmp/lv1

# mount /dev/new-vg/lv2      /tmp/lv2

# mount /dev/new-vg/lv3     /tmp/lv3

 

با دستور dh  میتوانی LV  های ساخته شده و مسیری که به آنها Mount  شده اند را مشاهده کنید.

از آنجایی که دستور mount  به صورت موقت عملیات mount  کردن را انجام می دهد و با بارگزاری مجدد ماشین تغییرات اعمال شده از بین خواهد رفت، نیاز است تا هر LV  و مسیری که باید Mount شوند را در فایل fstab نیز اضافه کنیم.

ما خط های زیر را به فایل مذکور اضافه خواهیم کرد.

/dev/new-vg/lv1              /tmp/lv1             ext4       defaults               0  0

/dev/new-vg/lv2              /tmp/lv2             ext4       defaults               0  0

/dev/new-vg/lv3              /tmp/lv3             ext4       defaults               0  0

 

در صورتی که قصد  دارید تا سیستم مجدد فایل fstab  را بازخوانی کند و تغییرات جدید را اعمال کند دستور زیر را اجرا کنید در این مرحله در صورتی که اروری در خواند فایل وجود داشته باشد نیز برای شما به نمایش در خواهد آمد.

# mount -av

 

خروجی دستور mount  بعد از ریبوت ماشین.

 

تا اینجا ما با نحوه ساخت physical volume, Volume group  و logical volume  آشنا شدیم. در آموزش های بعدی نحوه resize  کردن آنها و همچنین Snapshot  گرفتن و بازگردانی آن را آموزش خواهیم داد.

امیدوارم مفید واقع شده باشد.


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *