در این مقاله قصد داریم نحوه write کردن اطلاعات توسط logical volume ها روی disk و با استفاده از striping I/O را مورد بحث قرار دهیم. مدیریت logical volume دارای یکی از ابزارهای بی نظیری است که میتواند اطلاعات را روی چندین دیسک با استفاده از strip کردن I/O رایت (write) کند.
Strip کردن LVM یعنی چی ؟
LVM Striping یکی از ابزارهایی است که data را به جای اینکه روی یک physical volume مجزا به صورت ثابت write شود روی چندین دیسک write خواهد کرد.
ویژگی های striping :
- performance دیسک (disk) را افزایش خواهد داد.
- ذخیره از روی هارد و رایت روی یک دیسک مجزا به صورت متوالی
- با استفاه از strip کردن روی چندین دیسک امکان پر شدن هارد کم خواهد شد
در مدیریت logical volume اگر ما نیاز به ایجاد یک logical volume داشته باشیم extended volume به صورت کامل به volume group و physical volume مپ (map) خواهد شد در چنین شرایطی اگر یکی از PV ها پر شود ما نیاز داریم که فضاهای اضافه بیشتری از سایر physical volume ها اضافه کنیم. به جای افزودن فضای بیشتر به pv میتوانیم به logical volume مان بگوییم که از physical volume های خاصی برای write کردن I/O استفاده کنند.
فرض میکنیم 4 دیسک درایو داریم که به 4 تا physical volume معطوف شدند اگر هر physical volume ظرفیت 100 عدد I/O را داشته باشند volume group ما جمعا 400 تا I/O را دریافت خواهد کرد.
اگر ما از روش strip استفاده نکنیم فایل سیستم روی physical volume مربوطه write خواهد کرد. برای مثال بعضی اطلاعات که در physical volume رایت میشوند 100 عدد I/O تنها به اولین pv (مثلا sdb1) رایت خواهند شد. اگر ما logical volume را با گزینه strip در زمان write کردن ایجاد کنیم اطلاعات در هر 4 تا drive و با استفاده از تقسیم 100 عدد I/O رایت خواهند شد این بدان معنی است که هر کدام از 4 درایو 25 عدد I/O دریافت خواهند کرد.
این پروسه به صورت round robin انجام خواهد شد. اگر هر کدام از logical volume ها نیاز به افزایش داشته باشند در این چنین شرایطی ما نمیتوانیم یک یا 2 تا pv اضافه کنیم. ما باید همه 4 تا pv برای افزایش سایز logical volume اضافه کنیم این مورد یکی از اشکالات و نکات منفی در ویژگی های strip میباشد. از این نکته ما در میابیم که به هنگام ایجاد logical volume ها نیاز داریم که سایز strip یکسانی به همه logical volume ها اختصاص دهیم.
مدیریت logical volume ها قابلیت این را دارد که اطلاعات روی چندین pv در زمان یکسان strip کند. اگر شما با logical volume آشنا باشید میتوانید logical volume strip را هم راه اندازی کنید. در صورتی که آشنایی نداشته باشید باید پست شماره 1 و 2 را مطالعه بفرمایید.
تنظیمات سرور من :
سیستم عامل من cnetos 6.5 میباشد و مراحل یکسانی با آنچه که در زیر مشاهده میکنید برای REHL, Oracle Linux و اکثر توزیع های لینوکسی مورد استفاده قرار میگیرد :
مدیریت Logical volume با استفاده از Strip کردن I/O :
من 4 هارد درایو استفاده کردم و برای هر درایو 1 گیگابایت فضا در نظر گرفتم. در اینجا با دستور fdisk درایوها را مشاهده خواهیم کرد :
اکنون برای این 4 هارد درایو (sdb, sdc, sdd, sde) با استفاده از دستور fdisk پارتیشن میسازیم. برای ایجاد پارتیشن لطفا مراحل مطرح شده در مرحله 4 از پست اول را دنبال کنید. دقت کنید که نوع پارتیشن را به LVM یعنی 8e تغییر دهید.
بعد از اینکه پارتیشن ها با موفقیت ایجاد شد شروع به ایجاد physical volume با استفاده از این 4 درایو میکنیم.
برای ایجاد pv از دستور pvcreate استفاده میکنیم :
به محض اینکه pv ساخته شد با دستور pvs آن را لیست میکنیم :
اکنون ما باید با استفاده از این 4 عدد physical volume باید volume group تعریف کنیم. در اینجا volume gorup که من میخواهم تعریف کنم با 16MB از physical extended size یا PE و نام vg_strip از طریق دستور زیر امکان پذیر میباشد :
توضیح آپشن های دستور بالا به شرح زیر میباشد :
- 1[b-e] مشخص کننده نام هارد درایوها از قبیل sdb1, sdc1, sdd1, sde1
- آپشن s- تعریف اندازه physical extend یا PE
- آپشن v- یا verbose
سپس volume group جدید ایجاد شده را با استفاده از دستور زیر بررسی میکنیم :
برای دریافت اطلاعات بیشتر درباره VG در دستور vgdisplay از آپشن v- استفاده میکنیم. که به ما هر physical volume که در volume group مورد نظر استفاده شده است را نمایش خواهد داد :
به موضوع اصلی برمیگردیم اکنون زمان ایجاد logical volume میباشد و ما باید مقدار strip را تعریف کنیم و اینکه چگونه data باید با استفاده از روش strip در logical volume ها ما write شوند.
در اینجا با دستور زیر logical volume با نام lv_tecmint_strp1 و با سایز 900MB ایجاد میکنیم که باید در volume group با نام vg_strip باشد همچنین 4 تا strip تعریف میکنیم این یعنی اطلاعاتی که در logical volume مان write میشود باید روی 4 تا pv استریپ (strip) شوند :
آپشن L- : سایز logical volume
آپشن n- : نام logical volume
آپشن i- : تعداد strip ها
در تصویر بالا میتوانیم ببینیم که اندازه پیشفرض strip-size برابر با 64KB بود اگر ما بخواهیم مقدار strip مورد نظر خودمان را تعریف کنیم باید از آپشن l- (ال کوچک) استفاده کنیم. برای بررسی و اطمینان حاصل کردن از logical volume ایجاد شده دستور زیر را اجرا کنید :
اکنون سوال بعدی این خواهد بود چگونه ما میفهمیم که strip ها در حال write شدن به 4 درایو هستند؟ در اینجا میتوانیم از دستور lvdisplay به همراه اپشن m- (برای نمایش maping مربوط به logical volume ها) استفاده کرد.
برای ایجاد strip size تعریف شده مان نیاز به ایجاد یک logical volume با سایز 1GB و با استفاده از strip size تعریف شده برابر با 256KB خواهیم داشت. اکنون قصد داریم تنها روی 3 تا PV استریپ(strip) کنیم.
با استفاده از دستور زیر میتوانیم تعریف کنیم که میخواهیم کدام یک از pv ها strip شود :
سپس سایز strip و اینکه کدام volume استریپ(strip) میشود را بررسی میکنیم :
اکنون زمان آن رسیده که از یک device maper استفاده کنیم برای این منظور از دستور dmsetup استفاده میکنیم که یک ابزار مدیریت logical volume در سطح پایین بوده و logical device ها را مدیریت میکند و از درایور device-maper استفاده میکند. با استفاده از کامند dmsetup میتوانیم اطلاعات lvm را مشاهده کنیم تا بدانیم کدام strip مربوط به کدام درایو میباشد :
در تصویر بالا میتوانیم ببینیم که strp1 به 4 تا drive و strp2 به 3 تا device بستگی دارند.
همچنین توصیه میشود مطالعه کنید :
بخش اول : آموزش کامل پارتیشن بندی هارد با 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
بخش ششم : Migrating LVM Partitions to New Logical Volume (Drive)
امیدوارم چگونگی strip کردن از طریق logical volume ها برای write کردن data را متوجه شده باشید. به منظور این تنظیمات باید مفاهیم پایه مدیریت logical volume را بدانید. در مقاله بعد به شما نشان خواهم داد که چگونه میتوانید به مدیریت logical volume مهاجرت کنیم. همچنان با ما در ارتباط باشید تا از تمامی پست های جدید و با ارزش در این زمینه مطلع بمانید.
موفق باشید
معصومه وحید
Strip کردن LVM یعنی چی ؟
LVM Striping یکی از ابزارهایی است که data را به جای اینکه روی یک physical volume مجزا به صورت ثابت write شود روی چندین دیسک write خواهد کرد.
ویژگی های striping :
- performance دیسک (disk) را افزایش خواهد داد.
- ذخیره از روی هارد و رایت روی یک دیسک مجزا به صورت متوالی
- با استفاه از strip کردن روی چندین دیسک امکان پر شدن هارد کم خواهد شد
در مدیریت logical volume اگر ما نیاز به ایجاد یک logical volume داشته باشیم extended volume به صورت کامل به volume group و physical volume مپ (map) خواهد شد در چنین شرایطی اگر یکی از PV ها پر شود ما نیاز داریم که فضاهای اضافه بیشتری از سایر physical volume ها اضافه کنیم. به جای افزودن فضای بیشتر به pv میتوانیم به logical volume مان بگوییم که از physical volume های خاصی برای write کردن I/O استفاده کنند.
فرض میکنیم 4 دیسک درایو داریم که به 4 تا physical volume معطوف شدند اگر هر physical volume ظرفیت 100 عدد I/O را داشته باشند volume group ما جمعا 400 تا I/O را دریافت خواهد کرد.
اگر ما از روش strip استفاده نکنیم فایل سیستم روی physical volume مربوطه write خواهد کرد. برای مثال بعضی اطلاعات که در physical volume رایت میشوند 100 عدد I/O تنها به اولین pv (مثلا sdb1) رایت خواهند شد. اگر ما logical volume را با گزینه strip در زمان write کردن ایجاد کنیم اطلاعات در هر 4 تا drive و با استفاده از تقسیم 100 عدد I/O رایت خواهند شد این بدان معنی است که هر کدام از 4 درایو 25 عدد I/O دریافت خواهند کرد.
این پروسه به صورت round robin انجام خواهد شد. اگر هر کدام از logical volume ها نیاز به افزایش داشته باشند در این چنین شرایطی ما نمیتوانیم یک یا 2 تا pv اضافه کنیم. ما باید همه 4 تا pv برای افزایش سایز logical volume اضافه کنیم این مورد یکی از اشکالات و نکات منفی در ویژگی های strip میباشد. از این نکته ما در میابیم که به هنگام ایجاد logical volume ها نیاز داریم که سایز strip یکسانی به همه logical volume ها اختصاص دهیم.
مدیریت logical volume ها قابلیت این را دارد که اطلاعات روی چندین pv در زمان یکسان strip کند. اگر شما با logical volume آشنا باشید میتوانید logical volume strip را هم راه اندازی کنید. در صورتی که آشنایی نداشته باشید باید پست شماره 1 و 2 را مطالعه بفرمایید.
تنظیمات سرور من :
سیستم عامل من cnetos 6.5 میباشد و مراحل یکسانی با آنچه که در زیر مشاهده میکنید برای REHL, Oracle Linux و اکثر توزیع های لینوکسی مورد استفاده قرار میگیرد :
مدیریت Logical volume با استفاده از Strip کردن I/O :
من 4 هارد درایو استفاده کردم و برای هر درایو 1 گیگابایت فضا در نظر گرفتم. در اینجا با دستور fdisk درایوها را مشاهده خواهیم کرد :
کد PHP:
# fdisk -l | grep sd
اکنون برای این 4 هارد درایو (sdb, sdc, sdd, sde) با استفاده از دستور fdisk پارتیشن میسازیم. برای ایجاد پارتیشن لطفا مراحل مطرح شده در مرحله 4 از پست اول را دنبال کنید. دقت کنید که نوع پارتیشن را به LVM یعنی 8e تغییر دهید.
بعد از اینکه پارتیشن ها با موفقیت ایجاد شد شروع به ایجاد physical volume با استفاده از این 4 درایو میکنیم.
برای ایجاد pv از دستور pvcreate استفاده میکنیم :
کد PHP:
# pvcreate /dev/sd[b-e]1 -v
به محض اینکه pv ساخته شد با دستور pvs آن را لیست میکنیم :
کد PHP:
# pvs
اکنون ما باید با استفاده از این 4 عدد physical volume باید volume group تعریف کنیم. در اینجا volume gorup که من میخواهم تعریف کنم با 16MB از physical extended size یا PE و نام vg_strip از طریق دستور زیر امکان پذیر میباشد :
کد PHP:
# vgcreate -s 16M vg_strip /dev/sd[b-e]1 -v
- 1[b-e] مشخص کننده نام هارد درایوها از قبیل sdb1, sdc1, sdd1, sde1
- آپشن s- تعریف اندازه physical extend یا PE
- آپشن v- یا verbose
سپس volume group جدید ایجاد شده را با استفاده از دستور زیر بررسی میکنیم :
کد PHP:
# vgs vg_strip
برای دریافت اطلاعات بیشتر درباره VG در دستور vgdisplay از آپشن v- استفاده میکنیم. که به ما هر physical volume که در volume group مورد نظر استفاده شده است را نمایش خواهد داد :
کد PHP:
# vgdisplay vg_strip -v
به موضوع اصلی برمیگردیم اکنون زمان ایجاد logical volume میباشد و ما باید مقدار strip را تعریف کنیم و اینکه چگونه data باید با استفاده از روش strip در logical volume ها ما write شوند.
در اینجا با دستور زیر logical volume با نام lv_tecmint_strp1 و با سایز 900MB ایجاد میکنیم که باید در volume group با نام vg_strip باشد همچنین 4 تا strip تعریف میکنیم این یعنی اطلاعاتی که در logical volume مان write میشود باید روی 4 تا pv استریپ (strip) شوند :
کد PHP:
# lvcreate -L 900M -n lv_tecmint_strp1 -i4 vg_strip
آپشن n- : نام logical volume
آپشن i- : تعداد strip ها
در تصویر بالا میتوانیم ببینیم که اندازه پیشفرض strip-size برابر با 64KB بود اگر ما بخواهیم مقدار strip مورد نظر خودمان را تعریف کنیم باید از آپشن l- (ال کوچک) استفاده کنیم. برای بررسی و اطمینان حاصل کردن از logical volume ایجاد شده دستور زیر را اجرا کنید :
کد PHP:
# lvdisplay vg_strip/lv_tecmint_strp1
اکنون سوال بعدی این خواهد بود چگونه ما میفهمیم که strip ها در حال write شدن به 4 درایو هستند؟ در اینجا میتوانیم از دستور lvdisplay به همراه اپشن m- (برای نمایش maping مربوط به logical volume ها) استفاده کرد.
کد PHP:
# lvdisplay vg_strip/lv_tecmint_strp1 -m
برای ایجاد strip size تعریف شده مان نیاز به ایجاد یک logical volume با سایز 1GB و با استفاده از strip size تعریف شده برابر با 256KB خواهیم داشت. اکنون قصد داریم تنها روی 3 تا PV استریپ(strip) کنیم.
با استفاده از دستور زیر میتوانیم تعریف کنیم که میخواهیم کدام یک از pv ها strip شود :
کد PHP:
# lvcreate -L 1G -i3 -I 256 -n lv_tecmint_strp2 vg_strip /dev/sdb1 /dev/sdc1 /dev/sdd1
سپس سایز strip و اینکه کدام volume استریپ(strip) میشود را بررسی میکنیم :
کد PHP:
# lvdisplay vg_strip/lv_tecmint_strp2 -m
اکنون زمان آن رسیده که از یک device maper استفاده کنیم برای این منظور از دستور dmsetup استفاده میکنیم که یک ابزار مدیریت logical volume در سطح پایین بوده و logical device ها را مدیریت میکند و از درایور device-maper استفاده میکند. با استفاده از کامند dmsetup میتوانیم اطلاعات lvm را مشاهده کنیم تا بدانیم کدام strip مربوط به کدام درایو میباشد :
کد PHP:
# dmsetup deps /dev/vg_strip/lv_tecmint_strp[1-2]
در تصویر بالا میتوانیم ببینیم که strp1 به 4 تا drive و strp2 به 3 تا device بستگی دارند.
همچنین توصیه میشود مطالعه کنید :
بخش اول : آموزش کامل پارتیشن بندی هارد با 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
بخش ششم : Migrating LVM Partitions to New Logical Volume (Drive)
امیدوارم چگونگی strip کردن از طریق logical volume ها برای write کردن data را متوجه شده باشید. به منظور این تنظیمات باید مفاهیم پایه مدیریت logical volume را بدانید. در مقاله بعد به شما نشان خواهم داد که چگونه میتوانید به مدیریت logical volume مهاجرت کنیم. همچنان با ما در ارتباط باشید تا از تمامی پست های جدید و با ارزش در این زمینه مطلع بمانید.
موفق باشید
معصومه وحید