Admin

پارتیشن بندی LVM

نویسنده: Admin ۸ بهمن ۱۴۰۲ 36 بازدید

LVM نوعی از پارتیشن بندی است که فواید زیادی دارد اما مهم ترین ان منعطف کردن مدیریت فضای سرور است. به این صورت که شما در هر زمانی می توانید به هر پارتیشن فضای اضافی بدهید بدون اینکه دیتای شما اسیب ببیند. همان طور که در شکل زیر هم به صورت شماتیک میبینید هر سرور از یک یا چند دیسک تشکیل شده است که برای تبدیل کردن به LVM ابتدا باید ان را تبدیل به Physical Volume که از این به بعد PV خواهیم گفت، کنیم. سپس این pv یا pv ها را به pool یا Volume Group که از این به بعد VG خواهیم اضافه می کنیم. بعد از ان می توانیم از طریق این vg پارتیشن یا LV ایجاد کنیم. مرحله اخر مشخص کردن نوع فایل سیستم است که بیشتر مواقع ext4 خواهد بود  (با دستور mount می توانیم فایل سیستم را مشاهده کنیم.)

با دستور lsblk میتوانیم دیسک های موجود را مشاهده کنیم. تصویر زیر متعلق به یک سرور مجازی هست که به صورت lvm پارتیشن بندی شده است. در این تصویر sda3 و 4 را مشاهده می کنیم که پارتیشن های 3 و 4 را تشکیل داده اند اما به صورت lvm هستند و باهم داخل یک vg هستند و از طریق این vg دو تا پارتیشن با نام های root و swap ایجاد شده است.

در صورتی که ما بخواهیم از اول پارتیشن بندی lvm را ایجاد کنیم باید به صورت زیر عمل کنیم:

با فرض داشتن دیسک های sda و sdb ، ما باید این دیسک ها را pv کنیم. برای این منظور از دستور زیر استفاده می کنیم:

Pvcreate /dev/sda

همین دستور را برای دیسک دوم هم انجام مینویسیم.

همچین دستورات زیر هم در رابطه با pv کاربردی هستند:

Pvs: نمایش pv ها

Pvdisplay: نمایش pv ها با جزئیات

Pvremove: حذف pv

Pvresize

مرحله بعد ساخت vg برای pv هاست. تمام دستورات بالا برای vg هم برقرار است. می توانیم به جای اضافه کردن یک به یک پی وی ها با دستور زیر یکبار pv های مورد نظر را به pool یا vg اضافه کنیم:

Vgcreate vgname /dev/sda /dev/sdb

Vgname همان نام vg هست که میخواهیم بسازیم و می تواند هر اسمی داشته باشد.

اگر بخواهیم یک پی وی را از vg حذف کنیم از دستور زیر استفاده می کنیم:

Vgreduce vgnmae /dev/sdb

اگر وی جی داشته باشیم و فقط میخواهیم یک pv اضافه کنیم با دستور زیر خواهد بود:

Vgextend vgnmae /dev/sdb

مرحله بعدی ما پارتیشن یا به عبارتی Logical Volume را می سازیم. مطابق کامند زیر:

Lvcreate –n lvname vgname –L 10G

در دستور بالا lvname نام lv که می تواند هرچیزی باشد، vgname  نام پولی که میخواهیم فضا را از ان بگیریم یا استفاده کنیم و عدد اخر مربوط به فضایی است که به پارتیشن تخصیص می دهیم.

توجه: دو دایرکتوری زیر یکی است و تقاوتی ندارند:

dev/vgname/lvname

dev/mapper/vgname-lvname

اخرین مرحله مشخص کردن فایل سیستم یا فرمت پارتیشن است که به کامند زیر انجام می شود:

Mkfs.ext4 dev/mapper/vgname-lvname

اگر فایل سیستم مثلا xfs خواستیم جای ext4 جای گذاری میکنیم.

برای فرمت ext4 لازم است در اخر این دستور وارد شود:

Resize2fs dev/mapper/vgname-lvname

برای هر فرمت دستور مجزایی وارد خواهد شد. برای xfs هم از دستور زیر استفاده می شود:

Xfs_growfs /dev/mapper/vgname-lvname

ضمنا برای مشاهده نوع فایل سیستم از دستور blkid استفاده می شود.

اگر بخواهیم به حجم lv اضافه کنیم از دستور زیر استفاده می کنیم:

Lvextend /dev/mapper/vgname-lvname –L +5G

سپس دستور مربوط به ext4 را هم وارد می کنیم:

Resize2fs dev/mapper/vgname-lvname

کم کردن فضای یک یک پارتیشن حتی در حالت lvm کار به شدت خطرناکی هست و امکان از دست رفتن اطلاعات وجود دارد. در هر حال برای کم کردن فضا از دستور زیر که پس از unmount کردن باید وارد کرد استفاده می شود:

Lvreduce /dev/mapper/vgname-lvname –L -5G

اگر پس از کاهش فضا دیتا به مشکل خورد با انجام 3 نکته می توان با حالت اولیه برگرداند.

عدم انجام write

عدم mount کردن

برگرداندن فضایی که از پارتیشن کم شده بود.

 

 

اکستند (Extend)

 

1.اکستند با اضافه کردن پارتیشن

گاها شما به سرور خودتان حجمی را اضافه می کنید اما با دستور df -h مشاهده نمی کنید. در این صورت دو اتفاق می تواند افتاده باشد. با دستور lsblk فضای اضافه شده را در مجموع دیسک می توانید مشاهده کنید یا به کل نمایش داده نمی شود. اگر نمایش داده نشود می توانیم سرر را ریبوت دهیم اما این کار مخاطرات خاص خود را دارد. با استفاده از دستور زیر دیسک اسکن شده و فضای شما به مجموع دیسک اضافه می شود:

echo 1 > /sys/block/sda/device/rescan

پس از اضافه شدن فضای جدید حالت اولی که گفته شد را داریم. با استفاده از parted ابتدا print را وارد می کنیم تا مشخصات کامل دیسک نمایش داده شود و سپس دستور زیر را تایپ میکنیم:

mkpart

در مورد سوال نرم افزار fix پاسخ می دهیم. سوال های بعدی در مورد نام پارتیشن (که میتوانی خالی بگذاریم) و نوع فایل سیستم است که جواب می دهیم.

سوال بعدی start هست که ما طبق مشخصاتی که با وارد کردن print نمایش داده شده بود پاسخ می دهیم. در واقع start باید از End پارتیشن Primary که اصولا باید پارتیشن اخر باشد برابر باشد. سپس End را می پرسد. برای پر کردن این قسمت دوباره به جایی که پرینت تایپ کرده بودیم برمیگردیم. قبل از جدول پارتیشن ها اطلاعات دیگری وجود دارد که در قسمت Disk مجموع دیسک را نوشته است. End ما به اندازه چند مگابات کمتر از ان باید باشد. مثلا اگر Disk 94.8GB بود ما End را 90.7 وارد می کنیم. در اخر با quit از نرم افزار خارج میشویم.

پس از این کار یک پارتیشن جدید اضافه می شود و در اولین گام آن را به pv تبدیل میکنیم. سپس از طریق vgextend به pool اضافه می کنیم و در مرحله بعد از lvextend استفاده می کنیم تا به پارتیشن مورد نظر اضافه کنیم.در پایان هم باید فایل سیستم را با توجه به فایل سیستم موجود اصلاح کنیم. برای مشاهده فایل سیستم از دستور mount یل blkid می توانیم استفاده کنیم و با توجه به نوع آن یکی از دستورات زیر را اجرا کنیم:

ext4:

Resize2fs dev/mapper/vgname-lvname

xfs:

Xfs_growfs /dev/mapper/vgname-lvname

با دستور df -h باید ما بتوانیم فضای اضافه شده را مشاهده کنیم.

 

2.اکستند بدون اضافه کردن پارتیشن

به صورت کلی اکستند پارتیشن های lvm اکثرا از نوع اول انجام می شود اما اشنایی با نوع دوم آن هم می تواند مفید باشد. سناریویی را فرض کنید که 4 پارتیشن MBR داریم و می خواهیم extend انجام دهیم. می دانیم که در دیسک های mbr بر خلاف gpt، محدودیت حداکثر 4 پارتیشن را داریم و نمی توانیم پارتیشن پنجم را اضافه کنیم. یا می توانید هر سناریو از دیسک gpt را فرض کنید که بنا به هر دلیلی امکان اضافه کردن پارتیشن جدید نداریم. در این حالت ما باید فضای جدید را اخرین پارتیشن اضافه کنیم که به آن Extend می گویند. در اکستند دیسک اگر دقت کافی در انجام مراحل وجود نداشته باشد می تواند به قیمت از دست رفتن دیتا منجر شود.

قبل از هر چیزی باید بدانید که در زمان حذف یک پارتیشن دیتای ان حذف نمی شود بلکه ساختار ان حذف می شود و به شرط عدم تغییرات جدید، بلافاصله بعد از حذف می توانیم ان را برگردانیم. اما اگر پس از حذف هر تغییر نادرستی انجام شود اشتباه می تواند جبران ناپذیر باشد. ما در این سناریو می خواهیم به sda5 که پارتیشن اخر هست فضا اضافه کنیم یا اصطلاحا extend کنیم.

قبل از هر کاری پارتیشن ها را print می کنیم و کل دیتا که مهم ترین قسمت ان End و Start کپی کرده و در یک فایل notepad ذخیره می کنیم. در واقع این بکاپ ما از Structure پارتیشن های ماست که اگر مشکل پیش امد بتوانیم با استفاده از start و End به حالت اولیه برگردیم. با دستور fdisk /dev/sda  سپس تایپ p که پرینت می گیرد این کار را انجام میدهیم. ممکن است پس از fdisk وارنینگ مشاهده کنیم که جای نگرانی ندارد.

با تایپ d دستور حذف را اجرا می کنیم و سپس شماره پارتیشن (که در اینجا 5 است) را وارد میکنیم. پارتیشن 5 حذف شد (دیتا هنوز موجود است و مشکل ندارد). با کاراکتر n دوباره دستور ساخت پارتیشن جدید را وارد میکنم، نرم افزار First sector را سوال می کند که ما در اینجا حتما باید start پارتیشن حذف را عینا وارد کنیم (از قبل بکاپ گرفته ایم و عدد استارت را کپی پست می کنیم). Last sector نباید End پارتیشن قبلی باشد چون ما در حال اضافه کردن فضا هستیم. اگر Enter را بزنیم خود نرم افزار End جدید را لحاظ خواهد کرد پس بدون وارد کردن عدد اینتر میزنیم.

سپس نرم افزار سوالی می پرسد که به شدت مهم است و اگر دقت نشود دیتا کاملا حذف خواهد شد. جواب سوال حتما باید N (خیر) باشد. در اخر با w رایت می کنیم و با q خارج می شویم.

با دستور lsblk میبینیم که فضا به پارتیشن اضافه شده است اما در pv اضافه نشده است. با دستور pvresize /dev/sda5 حجم جدید را روی pv اعمال می کنیم. چون pv از قبل عضو vg بوده نیازی نیست که در مورد vg کار خاضی بکنیم.

در اخر با دستور زیر تمام فضای استفاده نشده (100 درصد) موجود در vg را به پارتیشن lvm مورد نظرمان اضافه می کنیم:

lvextend -l +100%FREE /dev/mapper/vgname-lvname

پس از extend هم نیاز است فایل سیستم اصلاح شود.

 

در این مطلب به بررسی پارتیشن های lvm پرداخته شد، در صورتی که نیاز به extend پارتیشن standard دارید روی این لینک کلیک کنید.

 

کلیه حقوق مربوط به مطالب سایت متغلق به کانفیگ پلاس بوده و کپی برداری فقط با ذکر منبع مجاز است
Config Plus » پارتیشن بندی LVM

کانفیگ پلاس | مرجع آموزش های کانفیگ سرور و سایت

تماس با ما درباره ما