این پست بخش 6 از سری مطالب مربوط به LVM هست در این مطلب به شما نحوه جا به جایی logical volume های موجود به دیگر drive های جدید را بدون هیچ گونه قطعی (Down Time) نمایش خواهیم داد. قبل از اینکه شروع کنیم میخواهم درباره LVM Migration (مهاجرت یا جا به جایی LVM) و ویژگی هایش به شما توضیحاتی بدهم.
LVM Migration چیست؟
LVM migration یکی از ابزارهای بی نظیریست که با استفاده از آن میتوانیم از logical volume ها به یک دیسک جدید بدون هیچ data-loss (از دست دادن اطلاعات) و قطعی (Down Time) جا به جا و مهاجرت دهیم.
هدف این ویژگی در حقیقت انتقال اطلاعات مان از یک دیسک قدیمی به یک دیسک جدید میباشد. معمولا این مهاجرت از یک disk به دیگر disk storage صورت میگیرد و تنها زمانی که یک error در دیسک ها رخ میدهد.
ویژگی های Migration :
- جا به جایی logical volume ها از یک دیسک به دیسک دیگر
- میتوانیم هر نوعی از دیسک مانند SATA, SSD, SAN storage, iSCSI یا FC را استفاده کنیم.
- مهاجرت دیسک ها بدون data-loss و downtime
در lvm migration ما هر volume, file-system و اطلاعاتش را در storage موجود swap خواهیم کرد. برای مثال اگر ما یک logical volume مجزا داشته باشیم که به یکی از physical volume ها map شده باشد ان physical volume در حقیقت یک hard drive فیزیکال (physical) میباشد.
اکنون اگر نیاز داشته باشیم سرورمان با هارد درایور SSD آپگرید (upgrade) کنیم معمولا در ابتدا به چه چیزی فکر میکنیم؟ reformat دیسک؟ نه! ما نباید سرور را دوباره reformat کنیم lvm قابلیت انتقال و یا مهاجرت از درایورهای sata قدیمی به درایورهای ssd جدید را دارد. LVM migration هر نوعی از دیسک ها چه local drive, san و یا همچنین کانال fiber (فیبر) را ساپورت خواهد کرد.
تجهیزات :
برای جابه جایی پارتیشن های LVM دو راه موجود است. یکی استفاده از روش miroring و دیگری استفاده از دستور pvmove میباشد. در اینجا من برای مثال centos 6.5 استفاده میکنم. اما بعضی از دستور العمل ها همچنین برای RHEL, Fedora, Oracle و سایر توزیع های دیگر نیز ساپورت میشود.
تنظیمات سرور من :
مرحله 1 بررسی برای درایوهای موجود :
1 - فرض میکنیم که یک ویرچوال درایور به نام vdb داریم که به یک logical volume به نام tecmint_lv مپ (map) شده است. اکنون میخواهیم این logical volume را به storage جدید دیگر انتقال دهیم قبل از انتقال ابتدا نام virtual drive و logical volume را با استفاده از دستورهای fdisk و lvs بررسی میکنیم :
مرحله 2 چک کردن برای درایو جدید اضافه شده :
2 - به محض بررسی درایوهای موجود زمان آن میرسد که درایور SSD جدیدمان را به سیستم متصل کنیم و با استفاده از دستور fdisk آن را مشاهده نمایید :
توجه : همانطور که در تصویر بالا میبینید درایور جدید با نام /dev/sda/ با موفقیت اضافه شده است.
مرحله 3 چک کردن logical و physical volume جدید :
3 - اکنون physical volume, volume group و logical volume را به منظور migration ایجاد میکنیم. قبل از ایجاد volume ها از دیتای موجود در logical volume فعلی و تحت mount point (مانت پوینت) /mnt/lvm/ مطمین شوید. با استفاده از دستور زیر mountها را لیست کنید و همچنین data را بررسی کنید :
توجه : برای مثال ما در /mnt/lvm/ دو عدد فایل ایجاد کردیم و این دیتا را به یک درایور جدید بدون هیچگونه قطعی انتقال میدهیم.
4 - قبل از migration (انتقال) از نام logical volume و volume group مربوطه به physical volume مطمین شوید و همچنین اینکه کدام physical volume برای ایجاد این volume group و logical volume استفاده شده است را بررسی میکنیم :
مرحله 4 ایجاد physical volume جدید :
5 - قبل از ایجاد physical volume در درایو SSD جدید اضافه شده ما نیاز داریم با استفاده از fdisk پارتیشن تعریف کنیم. فراموش نکنید که نوع پارتیشن را به LVM یا همان 8e تغییر دهید :
6 - سپس physical volume جدید ایجاد شده را به volume group موجود به نام tecmint_vg با استفاده از دستور vgextend اضافه میکنیم :
7 - برای دریافت لیست کامل اطلاعات درباره volume group از کامند vgdisplay استفاده میکنیم :
توجه : در تصویر بالا همانطور که مشاهده میکنید در پایان تصویر pv ما به volume group اضافه شده است :
8 - اگر در مواقعی نیاز به اطلاعات بیشتری درباره اینکه کدام device ها map شده اند داشته باشیم از دستور dmsetup استفاده میکنیم :
در نتیجه بالا یک پیش نیاز (PV) یا (Drive) موجود است و اینجا 17 عدد لیست شده اند. برای اطمینان به device ها توجه کنید که کدام درایو ها با تعداد کمتر یا بیشتری متصل شده اند :
توجه : در دستور بالا همانطور که میبینید تعداد بالا 252 و تعداد پایین 17 به vdb1 مربوط میشود. امیدوارم از خروجی دستور بالا متوجه شده باشید.
مرحله 5 روش LVM Mirroring :
9 - اکنون میخواهیم migration را با استفاده از روش mirroring و دستور lvconvert برای انتقال اطلاعات از logical volume قدیمی به درایور جدید استفاده کنیم :
آپشن m- = mirror
1 = اضافه کردن تنها یک mirror
توجه : پروسه migration بالا مدت زمان طولانی به طول خواهد انجامید (با توجه به سایز volume مان)
10 - بعد از تکمیل پروسه انتقال mirror تبدیل شده را بررسی میکنیم :
11 - بعد از مطمین شدن از اینکه mirror تبدیل شده (convert) کامل و بدون نقص است میتوانیم virtual disk قدیمی (vdb1) را حذف کنیم. آپشن m- میرور (mirror) را حذف خواهد کرد و البته قبلا دیدیم که برای اضافه کردن 1 عدد mirror استفاده شد :
12 - بعد از حذف virtual disk قدیمی میتوانیم device ها را برای logical volume دوباره چک کنیم :
در تصویر بالا همانطور که مشاهده میکنید اکنون logical volume ما به 8,1 بستگی دارد و شامل sda1 میباشد. و این نشان میدهد که پروسه migration ما انجام شده است.
13 - اکنون فایل هایی را که از drive قدیم به جدید انتقال یا اصطلاحا migrate کردیم را چک میکنیم. اگر اطلاعات در درایور جدید موجود باشند یعنی تمام مراحل را به درستی انجام داده ایم :
14 - بعد از اینکه همه چیز به درستی ایجاد شد زمان آن است که vdb1 را از volume group حذف کنیم و بعد از آن بررسی کنیم کدام device ها به volume group ما بستگی دارند :
15 - بعد از حذف vdb1 از volume group با نام tecmint_vg هنوز هم logical volume ما در آنجا موجود است زیرا ان را از vdb1 به sda1 انتقال دادیم :
مرحله 6 روش LVM pvmove Mirroring :
16 - به جای استفاده از دستور mirroring lvconvert از دستور pvmove به همراه اپشن n- که به نام logical volume مربوط است و روشی برای mirror اطلاعات بین 2 دیوایس میباشد استفاده میکنیم :
این کامند یکی از ساده ترین راه ها برای mirror اطلاعات بین 2 دیوایس میباشد اما در محیط واقعی اغلب بیشتر از mirroring استفاده میشود.
همچنین توصیه میشود مطالعه کنید :
بخش اول : آموزش کامل پارتیشن بندی هارد با LVM
بخش دوم : How to Extend/Reduce LVM’s in Linux
بخش سوم : How to Take Snapshot of Logical Volume and Restore in LVM
بخش چهارم : Setup 4hin Provisioning Volumes in LVM
بخش پنجم : Manage Multiple LVM Disks using Striping I/O
نتیجه :
در این پست نحوه انتقال یا اصطلاحا migrate لاجیکال ولوم ها (logical volume) از یک درایو به درایو دیگر را بررسی کردیم. امیدوارم ترفند های جدید درباره مدیریت logical volume آموخته باشید. برای این چنین تنظیماتی حتما باید پست های قبلی را مطالعه کرده باشید و از مفاهیم پایه درباره LVM و مدیریت آن مطلع باشید.
موفق باشید
معصومه وحید
LVM Migration چیست؟
LVM migration یکی از ابزارهای بی نظیریست که با استفاده از آن میتوانیم از logical volume ها به یک دیسک جدید بدون هیچ data-loss (از دست دادن اطلاعات) و قطعی (Down Time) جا به جا و مهاجرت دهیم.
هدف این ویژگی در حقیقت انتقال اطلاعات مان از یک دیسک قدیمی به یک دیسک جدید میباشد. معمولا این مهاجرت از یک disk به دیگر disk storage صورت میگیرد و تنها زمانی که یک error در دیسک ها رخ میدهد.
ویژگی های Migration :
- جا به جایی logical volume ها از یک دیسک به دیسک دیگر
- میتوانیم هر نوعی از دیسک مانند SATA, SSD, SAN storage, iSCSI یا FC را استفاده کنیم.
- مهاجرت دیسک ها بدون data-loss و downtime
در lvm migration ما هر volume, file-system و اطلاعاتش را در storage موجود swap خواهیم کرد. برای مثال اگر ما یک logical volume مجزا داشته باشیم که به یکی از physical volume ها map شده باشد ان physical volume در حقیقت یک hard drive فیزیکال (physical) میباشد.
اکنون اگر نیاز داشته باشیم سرورمان با هارد درایور SSD آپگرید (upgrade) کنیم معمولا در ابتدا به چه چیزی فکر میکنیم؟ reformat دیسک؟ نه! ما نباید سرور را دوباره reformat کنیم lvm قابلیت انتقال و یا مهاجرت از درایورهای sata قدیمی به درایورهای ssd جدید را دارد. LVM migration هر نوعی از دیسک ها چه local drive, san و یا همچنین کانال fiber (فیبر) را ساپورت خواهد کرد.
تجهیزات :
برای جابه جایی پارتیشن های LVM دو راه موجود است. یکی استفاده از روش miroring و دیگری استفاده از دستور pvmove میباشد. در اینجا من برای مثال centos 6.5 استفاده میکنم. اما بعضی از دستور العمل ها همچنین برای RHEL, Fedora, Oracle و سایر توزیع های دیگر نیز ساپورت میشود.
تنظیمات سرور من :
کد PHP:
Operating System : CentOS 6.5 Final
IP Address : 192.168.0.224
System Hostname : lvmmig.linux-zone.org/forums
مرحله 1 بررسی برای درایوهای موجود :
1 - فرض میکنیم که یک ویرچوال درایور به نام vdb داریم که به یک logical volume به نام tecmint_lv مپ (map) شده است. اکنون میخواهیم این logical volume را به storage جدید دیگر انتقال دهیم قبل از انتقال ابتدا نام virtual drive و logical volume را با استفاده از دستورهای fdisk و lvs بررسی میکنیم :
کد PHP:
# fdisk -l | grep vd
# lvs
l
مرحله 2 چک کردن برای درایو جدید اضافه شده :
2 - به محض بررسی درایوهای موجود زمان آن میرسد که درایور SSD جدیدمان را به سیستم متصل کنیم و با استفاده از دستور fdisk آن را مشاهده نمایید :
کد PHP:
# fdisk -l | grep dev
توجه : همانطور که در تصویر بالا میبینید درایور جدید با نام /dev/sda/ با موفقیت اضافه شده است.
مرحله 3 چک کردن logical و physical volume جدید :
3 - اکنون physical volume, volume group و logical volume را به منظور migration ایجاد میکنیم. قبل از ایجاد volume ها از دیتای موجود در logical volume فعلی و تحت mount point (مانت پوینت) /mnt/lvm/ مطمین شوید. با استفاده از دستور زیر mountها را لیست کنید و همچنین data را بررسی کنید :
کد PHP:
# df -h
# cd /mnt/lvm
# cat tecmint.txt
توجه : برای مثال ما در /mnt/lvm/ دو عدد فایل ایجاد کردیم و این دیتا را به یک درایور جدید بدون هیچگونه قطعی انتقال میدهیم.
4 - قبل از migration (انتقال) از نام logical volume و volume group مربوطه به physical volume مطمین شوید و همچنین اینکه کدام physical volume برای ایجاد این volume group و logical volume استفاده شده است را بررسی میکنیم :
کد PHP:
# lvs
# vgs -o+devices | grep tecmint_vg
مرحله 4 ایجاد physical volume جدید :
5 - قبل از ایجاد physical volume در درایو SSD جدید اضافه شده ما نیاز داریم با استفاده از fdisk پارتیشن تعریف کنیم. فراموش نکنید که نوع پارتیشن را به LVM یا همان 8e تغییر دهید :
کد PHP:
# pvcreate /dev/sda1 -v # pvs
6 - سپس physical volume جدید ایجاد شده را به volume group موجود به نام tecmint_vg با استفاده از دستور vgextend اضافه میکنیم :
کد PHP:
# vgextend tecmint_vg /dev/sda1
# vgs
7 - برای دریافت لیست کامل اطلاعات درباره volume group از کامند vgdisplay استفاده میکنیم :
کد PHP:
# vgdisplay tecmint_vg -v
توجه : در تصویر بالا همانطور که مشاهده میکنید در پایان تصویر pv ما به volume group اضافه شده است :
8 - اگر در مواقعی نیاز به اطلاعات بیشتری درباره اینکه کدام device ها map شده اند داشته باشیم از دستور dmsetup استفاده میکنیم :
کد PHP:
# lvs -o+devices
# dmsetup deps /dev/tecmint_vg/tecmint_lv
کد PHP:
# ls -l /dev | grep vd
توجه : در دستور بالا همانطور که میبینید تعداد بالا 252 و تعداد پایین 17 به vdb1 مربوط میشود. امیدوارم از خروجی دستور بالا متوجه شده باشید.
مرحله 5 روش LVM Mirroring :
9 - اکنون میخواهیم migration را با استفاده از روش mirroring و دستور lvconvert برای انتقال اطلاعات از logical volume قدیمی به درایور جدید استفاده کنیم :
کد PHP:
# lvconvert -m 1 /dev/tecmint_vg/tecmint_lv /dev/sda1
1 = اضافه کردن تنها یک mirror
توجه : پروسه migration بالا مدت زمان طولانی به طول خواهد انجامید (با توجه به سایز volume مان)
10 - بعد از تکمیل پروسه انتقال mirror تبدیل شده را بررسی میکنیم :
کد PHP:
# lvs -o+devices
11 - بعد از مطمین شدن از اینکه mirror تبدیل شده (convert) کامل و بدون نقص است میتوانیم virtual disk قدیمی (vdb1) را حذف کنیم. آپشن m- میرور (mirror) را حذف خواهد کرد و البته قبلا دیدیم که برای اضافه کردن 1 عدد mirror استفاده شد :
کد PHP:
# lvconvert -m 0 /dev/tecmint_vg/tecmint_lv /dev/vdb1
12 - بعد از حذف virtual disk قدیمی میتوانیم device ها را برای logical volume دوباره چک کنیم :
کد PHP:
# lvs -o+devices
# dmsetup deps /dev/tecmint_vg/tecmint_lv
# ls -l /dev | grep sd
در تصویر بالا همانطور که مشاهده میکنید اکنون logical volume ما به 8,1 بستگی دارد و شامل sda1 میباشد. و این نشان میدهد که پروسه migration ما انجام شده است.
13 - اکنون فایل هایی را که از drive قدیم به جدید انتقال یا اصطلاحا migrate کردیم را چک میکنیم. اگر اطلاعات در درایور جدید موجود باشند یعنی تمام مراحل را به درستی انجام داده ایم :
کد PHP:
# cd /mnt/lvm/
# cat tecmin.txt
14 - بعد از اینکه همه چیز به درستی ایجاد شد زمان آن است که vdb1 را از volume group حذف کنیم و بعد از آن بررسی کنیم کدام device ها به volume group ما بستگی دارند :
کد PHP:
# vgreduce /dev/tecmint_vg /dev/vdb1
# vgs -o+devices
کد PHP:
# lvs
مرحله 6 روش LVM pvmove Mirroring :
16 - به جای استفاده از دستور mirroring lvconvert از دستور pvmove به همراه اپشن n- که به نام logical volume مربوط است و روشی برای mirror اطلاعات بین 2 دیوایس میباشد استفاده میکنیم :
کد PHP:
# pvmove -n /dev/tecmint_vg/tecmint_lv /dev/vdb1 /dev/sda1
همچنین توصیه میشود مطالعه کنید :
بخش اول : آموزش کامل پارتیشن بندی هارد با LVM
بخش دوم : How to Extend/Reduce LVM’s in Linux
بخش سوم : How to Take Snapshot of Logical Volume and Restore in LVM
بخش چهارم : Setup 4hin Provisioning Volumes in LVM
بخش پنجم : Manage Multiple LVM Disks using Striping I/O
نتیجه :
در این پست نحوه انتقال یا اصطلاحا migrate لاجیکال ولوم ها (logical volume) از یک درایو به درایو دیگر را بررسی کردیم. امیدوارم ترفند های جدید درباره مدیریت logical volume آموخته باشید. برای این چنین تنظیماتی حتما باید پست های قبلی را مطالعه کرده باشید و از مفاهیم پایه درباره LVM و مدیریت آن مطلع باشید.
موفق باشید
معصومه وحید