منبع اصلی نوشتار زیر در این لینک قرار دارد

Oracle ASM چیست

Automatic Storage Management یک ویژگی معرفی شده از اوراکل 10g به بعد است که به عنوان Volume Management برای اوراکل عمل می کند. در صورت نیاز به افزودن دیسک یا منبع جدیدی به پایگاه داده اوراکل، در صورتی که ASM پیکربندی و نصب شده باشد، دیگر نیازی به Offline کردن پایگاه داده اوراکل نیست. در ASM مفهوم Disk Group به جای Physical Disk ها مطرح است که هر Disk Group می تواند یک یا چند دیسک فیزکی باشد. در واقع Disk Group (که از این پس گروه دیسک می نامیم) به عنوان یک واحد منطقی و متشکل از چندین دیسک فیزیکی است.یک دیسک فیزیکی می تواند یک دیسک کامل، یا پارتیشنی از دیسک و یا سیستم فایل شبکه یا NFS باشد. ASM به مدیران اجازه مدیریت ساده تر و بهتر فایل های پایگاه داده اعم از Datafile ها، Control File ها و Archive Redo Log ها را می دهد. ASM از ویژگی Oracle Managed File ها برای مدیریت و نامگذاری فایل ها بهره می برد.

ASM همانند خود پایگاه داده از یک Instance تشکیل شده است اما بر خلاف پایگاه داده، ASM فاقد Data Dictionary و همچنین فاقد هر گونه پایگاه داده و به طبع فاقد هرگونه Datafile, Control File و غیره است. با پیکربندی ASM از این پس دو Instance داریم، یکی Database Instance و دیگری ASM instance که کاملا از هم مجزا هستند و هر کدام ناحیه حافظه مختص  به خود و مجزا از دیگری را دارند.  در واقع ASM از یک Instance و یک SPFILE و یک یا چند Disk Group تشکیل شده است که خود گروه های دیسک میزبان فایل های یک یا چند پایگاه داده اعم از Datafile ها، Control File ها و Archive Redo Log های مربوط به پایگاه داده (ها) است. می توانید مطلب “مفهوم فرایند های پس زمینه و آشنایی با برخی از آنها در اوراکل” را برای آشنایی با برخی از Server Parameter File مطالعه کنید

تمایز میان Instance مختص به پایگاه داده و Instance مختص به ASM در پارامتر INSTANCE_TYPE مربوط به فایل پارامتر (SPFILE یا INIT.ORA) است که برای پایگاه داده INSTANCE_TYPE=RDBMS و برای ASM برابر INSTANCE_TYPE=ASM است. ASM Instance دارای SGA مجزا و مختص به خود که نسبت به Database Instance فضای کمتری از حافظه را طلب می کند. به طبع ASM Instance دارای چندین فرایند پس زمینه است که تعدادی از آنها با Database Instance مشترک بوده و بقیه مختص خود ASM Instance هستند. می توانید مطلب “تنظیم پارامترهای اوراکل (Oracle Paramterer File)” را برای آشنایی با برخی از فرایند های پس زمینه پایگاه داده مطالعه کنید.

oracleasmarch

تفاوت دیگر ASM Instance با Database Instance در این است که ASM بر خلاف DB حالت OPEN ندارد و تنها حالت های Shutdown Abort, NoMount و Mount را دارد. در حالت Mount گروه های دیسک و به طبع دیسک های مختص آنها Mount خواهند شد، پس از این رو برای گروه دیسک می توان آنرا Dismount نیز کرد. در حالت No Mount از ASM Instance فایل پارامتر (SPFILE یا INIT.ORA) خوانده خواهد شد.  می توانید مطلب “Oracle database Start/Shutdown” را برای آشنایی با Oracle database Start/Shutdown مطالعه کنید

ASM Instance شامل متادیتا هایی است که ازاطلاعات را درباره گروه های دیسک در خود دارند و این متادیتا ها درون خود گروه دیسک ذخیره می شوند.این فرادادها یا meta data ها شامل مواردی همچون

  • دیسک های متعلق به گروه دیسک.
  • میزان فضای قابل مصرف در گروه دیسک.
  • نام فایل ها از فایل های مجود در گروه دیسک.
  • یک redo log که اطلاعاتی درباره تغییرات خودکار بلاک های داده ای در آن ضبط و ثبت می شود.

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

همانطور که گفته شد گروه دیسک یک واحد منطقی تکی از چندین دیسک است که تحت مدیریت ASM Instance و قابل دسترسی توسط یک یا چند پایگاه داده است. یک دیسک درون گروه دیسک می تواند یکی از موارد زیر باشد

  • یکدیسک یا پارتیشن از یک storage array
  • تمام یک دیسک یا پارتیشنی از یک دیسک.
  • Logical volumes
  • Network-attached file ها یا Network File System

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

مفاهیم Mirroring و Failure Groups

در بحث گروه دیسک دو مفهوم Mirroring و Failure Group ها وجود دارد. Mirroring محافظت از یکپارچگی داده ها را توسط مرتب کردن کپی هایی بر روی چندین دیسک فراهم می کند. در زمان ایجاد یک گروه دیسک باید چندین گام را انجام دهیم.

  1. انتخاب یک نام برای گروه دیسک.
  2. انتخاب دیسک های برای عضویت در گروه دیسک.
  3. انتخاب سطح Mirroring که دو سطح Normal و High وجود دارد.

در ASM سه سطح redundancy زیر وجود دارد

  • Normal که Mirroring دو گانه نیز نام دارد و حداقل به دو دیسک برای پیاده سازی لازم است.
  • High که Mirroring سه گانه نیز نام دارد و حداقل به سه دیسک برای پیاده سازی لازم است.
  • External که هیچ ASM Mirroring ای انجام نمی دهد و برای redundancy از مکانیزم های Software RAID یا Hardware RAID استفاده می شود.

سطح redundancy تعداد disk failures هایی که در برابر خطا بدون dismount کردن گروه دیسک یا از دست رفتن خطا طاقت می آورند را کنترل می کند. ASM Mirroring به دلیل تعیین سطح redundancy به ازای هر فایل نسبت به مکانیزم RAID قابل انعطاف تر است. دو فایل می توانند در یک گروه دیسک همسان پخش می شوند و در صورت از میان رفتن یکی، دیگری استفاده می شود. در  در Normal Mirroring فایل ها را به صورت کپی اصلی (Primary Copy) و کپی دوم (Secondary Copy) را در دیسک ها کپی می کند. ASM دیسکی را برای کپی کردن نسخه دوم بر روی  Failure Group مجزا از Primary Copy انتخاب می کند.

پس از ایجاد گروه دیسک دیگر نمی توان سطح redundancy را تغغیر داد. برای تغییر سطح redundancy، باید نخست یک گروه دیسک تازه با سطح redundancy مورد نظر ایجاد کرده و سپس فایل ها را به گروه دیسک تازه متقل کرد. پیشنهاد می شود که Failure Group ها با اندازه های یکسان ایجاد کرد تا از توزیع ناهموار و غیر متعادل داده های Mirror جلوگیری و اجتناب کرد. در صورتی که دیسک های متعلق به گروه دیسک هم اندازه باشند؛ ASM فایل ها را بر روی دیسک به صورت مساوی در سرتا سر دیسک ها پخش می کند که اصطلاحا evenly distributed می گویند و باعث تعادل و همسان بودن I/O میان دیسک های درون گروه دیسک می شود.

مفهوم Allocation Units

هر دیسک ASM به allocation unit ها تقسیم می شود که به اختصار AU گفته می شود. AU واحد پایه تخصیص در گروه دیسک است. extent مربوط به فایل (file extent) شامل یک یا چند AU است و یک فایل ASM شامل یک یا چند extent است. در زمان ایجاد گروه دیسک یکی دیگر از مواردی که می توانید تعیین کنید اندازه AU است که می توانید اندازه میان 1 تا 64 مگابایت و توان هایی از دو باشد که می شود :1mb, 2mb, 4mb, 8mb, 16mb, 32mb یا 64mb. اندازه های بزرگ AU ها کارایی بالا را برای محیط های انبار داده فراهم می کنند.

فایل های درون گروه های دیسک ASM

همانطور که گفته شد فایل های یک یا چند پایگاه داده می توانند درون دیسک های متعلق به گروه های دیسک ASM ذخیره شوند که این فایل ها شاما موارد زیر هستند. این فایل ها به ASM file ها شناخته می شوند و هر ASM file درون یک گروه دیسک قرار می گیرد و نمی توان بخشی از فایل را درون یک گروه دیسک و ادامه آنرا درون گروه دیسک دیگری قرار داد.

  • Control files
  • Datafiles, temporary datafiles, and datafile copies
  • SPFILEs
  • Online redo logs, archive logs, and Flashback logs
  • RMAN backups
  • Disaster recovery configurations
  • Change tracking bitmaps
  • Data Pump dumpsets

 Extent ها

ASM file ها در غالب data extent ها ذخیره می شوند که خود data extent بر روی دیسک های متعلق به گروه دیسک ذخیره شده اند. و هر extent بر روی دیسک مجزایی ساکن است. خود extent ها از یک یا چند AU تشکیل شده اند. ASM برای تطابق با فایل های بزرگ از extent ها با اندازه متغیر (variable size extent) استفاده می کند. extent ها با اندازه متغیر از larger ASM datafile ها پشتیبانی می کند که باعث کاهش میزان فضای SGA مورد نیاز برای Dtafile های حجیم و بزرگ می شود و به طبع باعث افزایش کارایی ایجاد و باز کردن فایل ها خواهد شد.

اندازه ابتدایی extent برابر با اندازه AU بوده و بر اساس ضریبی از 8 و 64 افزایش پیدا می کند. شکل زیر ارتباط میان extent و AU را نشان می دهد. اندازه 20000 اولیه ( از extent شماره 0 تا 19999) برابر با اندازه AU است. شکل زیر هشت extent اولیه (از شماره 0 تا 7) را نشان می دهد که بر روی چهار ASM Disk توزیع شده اند. (توجه کنید که هز extent بر روی یک دیسک منفرد وجود دارد و ادامه اش در دیسک دیگر نیست). پس از 20000 تا extent نخست، اندازه 20000 تا extent بعدی (از شماره 20000 تا 39999) ضرب 8 در اندازه AU (یعنی AU*8) خواهد بود. در شکل زیر extent ها از شماره 20000 تا 20007 که به صورت قرمز رنگ مشخص شده اند، این مطلب را نشان می دهد که هر کدام از 8 تا AU تشکیل شده اند. extent ها از شماره 40000 به بعد که در شکل نشان داده نشده اند اندازه ای از ضریب 64 در AU یعنی AU*64 دارند.

oracleasmarch1

منظور از variable size extents این است که 20000 تای نخست یک اندازه و برابر با اندازه AU بوده و سپس بقیه مضربی از 8 و 64 از اندازه AU خواهند شد. همانطور که گفته شد اندازه AU در زمان ایجاد گروه دیسک تعیین می شد که تحت خصیصه AU_SIZE از گروه دیسک مشخص می شود.



برچسب ها : , , ,