اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

ایجاد Thin Provisioning volume در LVM (بخش 4)

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    ایجاد Thin Provisioning volume در LVM (بخش 4)

    LVM ابزارهای بی نظیری همانند Snapshot و Thin Provisioning را داراست. در پست قبل در مورد snapshot توضیح دادیم در این مقاله قصد داریم نحوه ایجاد volume های thin provisioning در lvm را توضیح دهیم.
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Setup-Thin-Provisioning-in-LVM.jpg مشاهده: 1 حجم: 38.8 کیلو بایت





    thin provisioning چیست ؟
    thin provisioning در lvm برای ایجاد virtual disk ها درون یک thin pool مورد استفاده قرار میگیرد. فرض کنید که من یک ظرفیت storage 15 GB در سرور خود دارم همچنین 2 کلاینت که هر کدام 5 گیگابایت storage دارند نیز موجود هستند. شما کلاینت سوم هستید و درخواست 5 گیگابایت storage دارید در نتیجه ما باید برای شما 5 گیگابایت کامل (Thick Volume) فراهم کنیم. اما شما ممکن است از این 5 GB تنها 2 GB را مصرف کنید و 3 GB آن خالی خواهد ماند که بعدا میتوانید آن را پر کنید.

    اما آنچه که ما در thin provisioning انجام میدهیم این است که یک thin pool درون یک volume group بزرگ تعریف میکنیم و یک thin volume درون آن thing pool نیز تعریف خواهیم کرد. به طوری که هر فایلی که شما write میکنید ذخیره خواهد شد و storage شما 5 GB نمایش داده خواهد شد. اما 5 GB کامل برای کل دیسک اختصاص داده نخواهد شد. پروسه یکسانی برای کلاینت های دیگر نیز انجام خواهد شد همانطور که گفتم 2 کلاینت دیگر دارم و شما سومین کلاینت من هستید.

    خب حالا کل GB که من برای کلاینت ها اختصاص دادم 15 GB بود و اگر کس دیگری پیش من بیاید و از من درخواست 5 GB داشته باشد میتوانم به او هم فضا اختصاص دهم؟ بله میتوانم. در thin provisioning میتوانم 5 GB برای هر 4 کلاینت اختصاص بدهم در حالیکه تنها 15 GB دارم.

    هشدار : اگر از 15 GB بیشتر provisioning داشته باشیم در حقیقت over provisioning نامیده میشود.


    نحوه کار آن چگونه است؟ و چگونه برای کلاینت های جدید storage فراهم میکند؟
    من برای شما 5 GB فراهم کردم اما شما ممکن است تنها 2 GB استفاده کنید و 3 GB آزاد خواهد ماند. در thick provisioning نمی توانیم این کار را انجام دهیم زیرا در ابتدا تمامی فضا را به خودش اختصاص میدهد.

    اما در thin provisioning من برای شما 5 GB تعریف میکنم که کل فضا را اختصاص نمیدهد. در حالی که یک volume تعریف میشود و تنها تا مرز 5 GB با توجه به حجم اطلاعات شما پیشرفت میکند. امیدوارم منظورم رو متوجه شده باشید. همانند شما دیگر کلاینت ها نیز تمامی حجم خود را استفاده نخواهند کرد در نتیجه شانس برای اضافه کردن 5 GB به یک کلاینت جدید وجود خواهد داشت که به آن over provisioning میگویند.

    اما اجباریست که هر گونه افزایش volume مانیتور شود و اگر این کار صورت نگیرد احتمال دارد که فاجعه ای رخ دهد. در صورتی over provisioning رخ میدهد که هر 4 کلاینت اطلاعات خود را به صورت کامل در فضای خود پر کنند و از حد 15 GB فراتر روند و این باعث بروز مشکل در volume خواهد شد.


    تجهیزات و تنظیمات سرور :
    سیستم عامل : CentOS 6.5 با LVM
    Server IP : 192.168.0.200


    مرحله اول :
    ایجاد thin pool و volume ها :

    در ابتدا سایز زیادی از volume group نیاز داریم در اینجا من volume group با فضای 15 GB ایجاد کردم و با استفاده از دستور زیر volume group را لیست خواهم کرد :
    کد PHP:
    # vgcreate -s 32M vg_thin /dev/sdb1 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Listing-Volume-Group-linux-zone-forums.jpg مشاهده: 1 حجم: 19.9 کیلو بایت




    سپس سایز logical volume در دسترس را قبل از ایجاد thin pool و volume ها بررسی میکنیم :
    کد PHP:
    # vgs
    # lvs 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: check-Logical-Volume-linux-zone-forums.jpg مشاهده: 1 حجم: 61.5 کیلو بایت




    همانطور که میبینید تنها logical volume های پیش فرض برای سیستم عامل و swap در خروجی کامند lvs موجود هستند.

    ایجاد یک thin pool :
    برای ایجاد یک thin pool به ازای 15 GB در volume group با نام vg_thin دستور زیر را اجرا میکنیم :
    کد PHP:
    # lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin 
    آپشن L- : سایز volume group
    آپشن thinpool- : برای ایجاد یک thinpool
    tp_tecmint_pool : نام انتخابی برای thin pool
    vb_thin : نام volume grop که برای ایجاد pool نیاز داریم.
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-Thin-Pool-linux-zone-forums.jpg مشاهده: 1 حجم: 83.0 کیلو بایت




    برای دریافت اطلاعات بیشتر دستور lvdisplay را اجرا میکنیم :
    کد PHP:
    # lvdisplay vg_thin/tp_tecmint_pool 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Logical-Volume-Information-linux-zone-forums.jpg مشاهده: 1 حجم: 117.6 کیلو بایت




    اینجا ما virtual thin volume ها را در این thin pool ایجاد نکرده ایم همانطور که در تصویر میبینیم allocated pool data مقدار 0.00٪ را نمایش میدهد.


    ایجاد thin volume :
    اکنون میتوانیم thin volume ها را درون thin pool با کمک دستور lvcreate به همراه آپشن v- (یعنی virtual) تعریف کنیم :
    کد PHP:
    # lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool 
    من یک thin virtual volume با نام thin_vol_client1 درون tp_tecmint_pool در vg_thin volume group خودم ایجاد کردم اکنون با استفاده از دستور زیر لیست logical volume ها را میبینیم :
    کد PHP:
    # lvs 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: List-Logical-Volumes-linux-zone-forums.jpg مشاهده: 1 حجم: 95.2 کیلو بایت




    اکنون thin volume بالا ایجاد شد میخواهم 2 عدد thin volume برای 2 کلاینت دیگر ایجاد کنم. در اینجا شما میبینید که 3 عدد thin volume تحت pool (با نام tp_tecmint_pool) ایجاد شده است. در نتیجه از این نکته میفهمیم که من تمام 15 گیگابایت pool را استفاده کردم :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-Thin-Volumes-linux-zone-forums.jpg مشاهده: 1 حجم: 74.8 کیلو بایت





    ایجاد فایل سیستم :
    اکنون mount point ها را ایجاد میکنیم و این 3 عدد thin volume را به آنها mount کرده و یکسری فایل در آنها کپی میکنیم :
    کد PHP:
    # mkdir -p /mnt/client1 /mnt/client2 /mnt/client3 
    با دستور زیر دایرکتوری های ایجاد شده را لیست میکنیم :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Creating-Mount-Points-linux-zone-forums.jpg مشاهده: 1 حجم: 60.1 کیلو بایت




    با استفاده از دستور mkfs برای این thin volume های ایجاد شده فایل سیستم میسازیم :
    کد PHP:
    # mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-File-System-linux-zone-forums.jpg مشاهده: 1 حجم: 78.0 کیلو بایت




    تمام 3 عدد volume کلاینت ها را به mount point های ایجاد شده با استفاده از دستور زیر mount میکنیم :
    کد PHP:
    # mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/ 
    با استفاده از دستور df لیست mount point ها را مشاهده میکنیم :
    کد PHP:
    # df -h 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Print-Mount-Points-linux-zone-forums.jpg مشاهده: 1 حجم: 131.4 کیلو بایت




    اینجا میتوانیم ببینیم که هر 3 عدد volume کلاینت ها mount شده اند و در نتیجه تنها 3 درصد از اطلاعات در volume هر کلاینت استفاده شده است. بنابراین فایل های بیشتری به هر 3 عدد mount point از دسکتاپ خودم اضافه میکنم تا فضای بیشتری پر کنم :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Add-Files-To-Volumes-linux-zone-forums.jpg مشاهده: 1 حجم: 106.0 کیلو بایت




    اکنون mount point ها را لیست کرده و فضای استفاده شده در هر کدام را بررسی میکنیم همچنین thin pool را برای مشاهده سایز استفاده شده در pool را لیست میکنیم :
    کد PHP:
    # df -h
    # lvdisplay vg_thin/tp_tecmint_pool 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Check-Mount-Point-Size-linux-zone-forums.jpg مشاهده: 1 حجم: 180.2 کیلو بایت



    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Check-Thin-Pool-Size-linux-zone-forums.jpg مشاهده: 1 حجم: 88.2 کیلو بایت




    دستور بالا هر 3 عدد mount point به همراه سایز آنها به درصد نمایش میدهد :
    کد PHP:
    13of datas used out of 5GB for client1
    29
    of datas used out of 5GB for client2
    49
    of datas used out of 5GB for client3 
    در حالی که thin pool را بررسی میکنیم میبینیم که تنها 30٪ از data جمعا write شده است. که این میزان کل هر 3 عدد virtual volume کلاینت ها میباشد.


    over provisioning :
    اکنون چهارمین کلاینت از من درخواست 5 GB درخواست فضای storage میکند آیا می توانم به او بدهم؟ از آنجایی که قبلا 15 گیگابایت pool را به 3 کلاینتم دادم آیا ممکن است بتوان 5 GB بیشتر به کلاینت دیگری داد؟ اینجاست که از over provisioning استفاده میکنیم که به معنای دادن فضا بیشتر از آن چیزیست که داریم.

    با دستور زیر 5 GB برای کلاینت چهارم میسازیم و سایز را نیز با دستور lvs بررسی میکنیم :
    کد PHP:
    # lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
    # lvs 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-thin-Storage-linux-zone-forums.jpg مشاهده: 1 حجم: 104.2 کیلو بایت




    من تنها 15 GB در pool دارم اما 4 عدد volume درون thin-pool ایجاد کردم که تا 20 GB پیش میرود. اگر همه 4 کلاینت شروع به write دیتا بر روی volume هایشان کنند تا فضا را پر کنند در آن زمان ما با وضعیت بحرانی روبه رو خواهیم شد و اگر چنین نشود مشکلی پیش نخواهد آمد.

    من فایل سیستم در thin_vol_client4 ایجاد کردم سپس تحت /mnt/client4/ مانت کردم و یک سری فایل در آن کپی کردم :
    کد PHP:
    # lvs 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Verify-Thing-Storage-linux-zone-forums.jpg مشاهده: 1 حجم: 83.4 کیلو بایت




    در تصویر بالا ما میتوانیم ببینیم که کل فضای استفاده شده در کلاینت چهارم جدید ایجاد شده بالغ بر 89.34٪ میباشد و سایز thin pool استفاده شده 59.19٪ است. اگر همه این یوزر ها بدین گونه دیتا روی volume هایشان write نکنند pool لبریز نمیشود و در نتیجه به مشکل برنخواهد خورد. برای جلوگیری از لبریز شدن pool ما نیاز داریم که سایز thin pool را افزایش دهیم.

    مهم : thin pool ها تنها یک logical volume هستند بنابراین اگر بخواهیم سایز thin pool را افزایش دهیم میتوانیم کامند های یکسانی مانند آنجه برای افزایش logical volume ها استفاده کردیم به کار ببریم اما دقت کنید که سایز thin pool را نمیتوان کم کرد :
    کد PHP:
    # lvextend 
    اینجا میتوانیم ببینیم که چگونه logical thin pool با نام tp_tecmint_pool را افزایش دهیم :
    کد PHP:
    # lvextend -L +15G /dev/vg_thin/tp_tecmint_pool 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Extend-Thin-Storage-linux-zone-forums.jpg مشاهده: 1 حجم: 37.4 کیلو بایت




    سپس سایز thin pool را لیست خواهیم کرد :
    کد PHP:
    # lvs 
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Verify-Thin-Storage-linux-zone-forums.jpg مشاهده: 1 حجم: 87.5 کیلو بایت




    قبلا سایز tp_tecmint_pool برابر با 15 GB بود و چهار عدد thin volume که تا 20 گیگابایت over provisioning داشتن. اکنون تا 30 GB ان را افزایش دادیم در نتیجه over provisioning ما normal شد و thin volume ها محال است که لبریز شود و به دنبال آن به مشکل بربخورند. به این طریق حتی میتوان thin volume های بیشتری به pool اضافه کرد.

    همچنین توصیه میشود مطالعه کنید :

    بخش اول : آموزش کامل پارتیشن بندی هارد با LVM

    بخش دوم : How to Extend/Reduce LVM’s in Linux

    بخش سوم : How to Take Snapshot of Logical Volume and Restore in LVM

    بخش پنجم : Manage Multiple LVM Disks using Striping I/O

    بخش ششم : Migrating LVM Partitions to New Logical Volume (Drive)




    در اینجا دیدیم چگونه با استفاده از یک سایز بزرگ از volume group یک thin pool بسازیم و درون آن thin volume را با استفاده از over provisioning ایجاد کنیم و حتی pool را افزایش دهیم. در مطلب بعدی خواهیم دید که چگونه یک lvm striping ایجاد کنیم.
    با ما بمانید ....


    موفق باشید
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 10-21-2019, 07:05 AM.

درباره انجمن منطقه لینوکسی ها

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

شبکه های اجتماعی
در حال انجام ...
X