قسمت قبل: مروری اجمالی بر سختافزاریهای مورد نیاز کلاستر - قسمت اول
همیشه اینو یادتون باشه اگه io خیلی زیادی دارید best practice اینه که نوع OS شما windows / linux نباشه و بهتره از سختافزارهای RACK Oracle/Sun و OS Sun Solaris استفاده کنید همچنین استفاده از IBM AIX و HP-UX هم توصیه میشه
اوراکل توی چند ساله اخیر اومد گفت که دیگه نسخه 11g به بعد رو برای HP-UX نمیده پس بهتره از Oracle Sun Solaris استفاده کنید
یادتون باشه بسته به TPSهاتون (Transaction Per Seconds) باید سرور رو مشخص کنید مثلاً سرورهای dl محدودیتهایی از لحاظ آدرسدهی و معماری دارند چون Intel بیساند پس در شرایطی که tpsهاتون وحشتناک زیاده (مثلاً در هر ثانیه ۱۰ تا رکورد insert بشه) از dl استفاده نکنید
معمولاً در سازمانها مخلوطی از سرورها با برندهای مختلف رو استفاده میکنن مثلاً برای core banking از HP-UX و ماشینهای IBM و برای سیستم مالی از سرورهای dl و لینوکس استفاده میکنن
یادتون باشه برای DBA فرقی نمیکنه نوع سیستمعامل چیه و کامل بلد بودن لینوکس برای کار با همه سیستمعاملها کفایت میکنه
هارد دیسک
هر هاردی یک صفحه دیسک داره که بهش میگیم plate و به خود اون دیسک میگن platter پس ممکنه یک هارد چندین platter داشته باشه
تقسیمبندی بالا که به صورت sector و track است بیشتر intel بیسه ولی توی IBM تقسیمبندیها عوض میشه و به صورت بلاک/بلاک هستش
به هر قطاع یک سکتور گفته میشه و تمام سکتورها باهم سایزشون یکیه اونهایی که به مرکز نزدیکتراند تراکم بیشتری دارند و اونهایی که به لبه نزدیکتراند تراکم کمتری دارند
همچنین سرعت خوندن اطلاعات در مرکز سریعتره چون چرخش دیسک سریعتره
اگه به شکل بالا دقت کنید هد و platter رو میبینید، که هد به صورت یک اهرم ثابت فقط بالا و پایین میره و سکتورهای platter رو میخونه
پس اگه اطلاعات در مرکز ذخیره شده باشند سریعتر خوانده میشوند
نکته: توی ASM میتونید تنظیم بکنید که اطلاعات توی مرکز بشینه یا بره لبهی دیسک بشینه
معمولا سکتورها ۵۱۲ بایت هستند ولی سکتورهای EMC فرق میکنند و بالاتر از ۵۱۲ بایتاند پس نمیشه به همین راحتی هارد به SAN Storageها اضافه کرد و به برند SAN Storage خیلی ارتباط داره
مجوعه trackها که روی هر platter است را یک cylinder میگویند همچنین هر platter دارای ۲ هد است یکی بالای platter و یکی پایین
مواقعی که خوندن اطلاعات باید خیلی سریع اتفاق بیوفته باید جوری ASM رو کانفیگ کنید که اطلاعات رو روی لبهی داخلی بنویسه و نزدیک کنه
انواع و اقسام هارد دیسکها
IDEها به صورت Master, Slave هستند و حداکثر ۴ تا دستگاه رو توی هر مادربرد pc ساپورت میکنند.
EIDE نسخه بهبود یافتهی IDE
SATAها ظرفیتهای بالا رو ساپورت میکنن ولی سرعت و کاراییشون پایینه (بیشتر pcها و لپتاپهای امروزی از تکنولوژی SATA ی ۵۴۰۰ دور در دقیقه(rpm) استفاده میکنند
(بالاترین سرعت در تکنولوژی SATA همان ۷۲۰۰ دور در دقیقه است)
PATA توی SAN Storageها ارتباط بین هاردها بیشتر با PATA صورت میگیره
SCSI که حداکثر ۱۶ تا خروجی دارند
SAS یا همون نسخهی بهبود یافتهی SCSI که به صورت سریالی کار میکنند (SASها ۲ نوع سرعت دارند 10K و 15K دور در دقیقه (خوندن نوشتن بین 10Kو 15K تنها در میلیثانیه فرق دارد و در بیشتر کارها 10K جوابگو است) در SASها سرعت بالا ولی ظرفیتها پایین است)
SSD کلاً بار مکانیکی ندارند و تمام تکنولوژی آن به صورت چیبپستی است در این تکنولوژی سرعت بسیار بالا و بین 6 تا 10 برابر SASها است ولی یادتون باشه براساس هاردی که میخرید اینها یک طول عمری دارند و به تعداد مشخصی میشه روشون read و wriite کرد
اگه دیتابیستون oltp ه و تعداد تراکنشهاتون خیلی بالاست معمولاً بهتره از هاردهای SAS استفاده کنید
جاهایی که میخواین بکآپهاتون رو نگهداری کنید بهتره از SATA استفاده کنید
و برای کشها از SSD استفاده کنید
تویSAN Storageها قابلیت این هست که از ترکیبی از تکنولوژیها در هاردها استفاده کنید
مثلاً موقع خوندن دیتا جاهایی که دسترسی باید خیلی سریع انجام بشه دیتا رو ببرید رو SSD
اگه بعد مدتی کوئریتون دیگه اجرا نشد و نیازی به اطلاعات اون کوئری نیست بهتره اطلاعات رو بیارید بذارید تو SAS
مثال: تو اتوماسیون اداریها به اطلاعات ۵ سال قبل زیاد نیازی نیست پس بهتره دیتاهایی که زیاد استفادهای ازشون نیست رو روی SATA بذارید و هر وقت اطلاعات رو نیاز داشتیم SAN Storage دیتا رو بیاد بذاره تو SSD
تمام این کارها به طور خودکار میتونه توسط نرمافزار خود SAN Storage انجام بگیره و نیاز به هیچ کانفیگی از طرف شما نیست
نکته: از اوراکل 11.2 به بعد قابلیتی اضافه شد که شما میتونید از SSD به عنوان فضایی برای cache استفاده بکنید (Using the Oracle 11GR2 database flash cache)
با این اوصاف برای خود سرور هارد SAS میخریم و برای SAN Storage امون از هاردهای ترکیبی استفاده میکنیم
یادتون باشه بسته به حجم دیتا و تراکنشها پیشنهاد سختافزار بدید و به صورت ON Demand پیشنهادتون رو بدید چون ۱۰ سال دیگه همه چی عوض میشه و حتی ممکنه خود SAN Storage رو عوض کنید بر طبق قانون کشور برای سیستمهای مالی و اتوماسیونها ۶ ماه دیتا باید به صورت آنلاین موجود باشه و تا ۱۰ سال هم باید به صورت آرشیو دیتاها باشند.
برای اون ۶ ماه از SAS استفاده میکنیم و برای اون ۱۰ سال فقط از tape چون هر مدیای ذخیرهسازی دیگهای به شدت برامون گرون تموم میشهبه این کارها میگن soultion for backup پس DBA حتماً باید بتونه پلن برای بکآپها بچینه
انواع RAID
آرایه چندگانه از دیسکهای مستقل (RAID)
لولهایی که برای raidها داریم 0,1,5,6,10 اینها اونهایی هستند که بیشتر از همه کاربرد دارند
RAID 0
توی سرور اگه هاردها رو باهم 0 raid نکنیم دسترسی به دیسکها به صورت جدا از هم صورت میگیره و دور ریختگی اطلاعات اینجوری زیاد میشه
وقتی میخوایم تمام دیسکها رو یکی کنیم که سیستمعامل فقط یک دیسک ببینه از raid 0 استفاده میکنیم
۲ نوع raid داریم:
- سختافزاری
- نرمافزاری
سختافزاری: یعنی خود سرور یک کارت raid داره (raid controller) و تمام هاردها به این raid controller وصل میشن
پس زمانی که سرور رو بوت میکنیم مثلا در dl380 موقع بوت کلید f8 رو میزنیم وارد raid controller میشیم
حالا توی اون raid controller میایم میگیم براساس اون raidهایی که اون سرور ساپورت میکنه raid رو میبندیم
پس raid 0 برای چسبوندن تمام هاردها و دیدن یک تیکه توی سیستمعامل است
ذخیره داده در raid 0 به صورت تیکه تیکه است مثلاً اگه شما یک هارد ۴۰ گیگی raid 0 شده دارید وقتی یک فایل رو درون دیسک کپی میکنید اطلاعات براساس بلاکهای سیستمعامل تیکه تیکه میشه و هر تیکه درون یک هارد raid 0 میشینه پس فایل شما تو تمام دیسکها پخش میشه
در raid 0 سرعت خواندن/نوشتن بالاتر میره چون هر دیسک یک کنترلر بیشتر نداره و با چند دیسک ما عملاً چندتا کنترلر فیزیکی داریم
اشکال raid 0
اگه یکی از هاردها بسوزه اطلاعاتتون خراب میشه پس تحمل خرابی تو raid 0 نداریم
raid 1
در این raid اطلاعات mirror هم هستند این اتفاق به صورت همزمان اتفاق میافته
از لحاظ سیستمعامل شما یک دیسک میبینید ولی از لحاظ فیزیکی در حقیقت چندتا هارد هستند (raid controller خودش اینکارو میکنه)
تحمل خرابی تو این روش به تعداد دیسکهای mirror ما بستگی داره در شکل پایین تحمل خرابی ما ۱ دیسک است
اشکال این روش اینه که شما از تمام فضای هاردهاتون نمیتونید استفاده کنید
نکته: یادتون باشه DBA ها از گرونترین نیروهای یک سازمان هستند پس خودتون رو ارزون نفروشید امنیت دیتای سازمان دست شماست
نکته: برای نصب oracle بهترین raid پیشنهادی raid 1 است حداقل ۲ تا هارد ۱۴۶ گیگ برای هر سرور فیزیکی کافیه
نکته: یادتون باشه به هیچ عنوان بکآپ رو روی لوکال نگهداری نکنید
RAID 5
در raid 5 حداقل 3 تا دیسک نیازه و شما نمیتونید با ۲ تا هارد raid 5 راه بندازید و اگه وارد raid controller سرور با ۲ تا هارد بشید کلاً raid 5 غیرفعاله
نحوه کار
اطلاعاتی که میخواد بیاد رو دیسک بشینه به ۲ تیکه تقسیم میشه یه تیکه رو دیسک ۱ میشینه و یه تیکه رو دیسک ۲
همون موقع برای اون دیتا میاد یه parity روی دیسک ۳ میذاره
دوباره باقی همون اطلاعات رو میخواد ذخیره بکنه ولی این بار parity رو روی دیسک ۱ میذاره و دیتاهای تیکه تیکه شده رو روی دیسکهای ۲و۳ میذاره
به همین ترتیب parity با یک الگوریتمی پخش میشه
پس تحمل خرابی raid 5 یک دیسک است
وقتی یک دیسک fail شود و شما اون دیسک رو جایگزین کنید raid controller میره parityها رو میخونه و دو معادله یک مجهول درست میشه
براساس فرمولی که درست میکنه اطلاعات رو از دیسکهای دیگه پیدا میکنه و روی دیسک جدید مینویسه
اگه سیستمتون آنلاین باشه و هارد رو بکشید جا بزنید یکسری اعتراض میکنن که کند شدیم و این به این خاطره که build raid controller داره اطلاعات رو build میکنه
معمولاً بهتره این recovery رو بذارید شبها انجام بشه
تفاوت بین RAID 5 و RAID 1
هر جفت raidها تحمل خرابیشون یک دیسک است
تفاوتها
فضا: تو raid 5 در حد 1/3 فضا میره ولی تو raid 1 همون 1/2 از فضا است
اونجایی که سرعت مهمه raid 1 مهمه چون raid 5 به خاطر الگوریتم محاسباتیش کندتره
best practice اینه که جاهایی که تراکنشهای بسیار بالا دارید توصیه اینه که دیتابیس رو raid 1 ببندید
در کل raid 5 در جایی که از دست دادن هارد مسئلهای نیست سرعت خوندن/نوشت نهم مهم نیست مثل محیطهای backup
پس اگه هارد SATA خریدید و روی SAN Storage گذاشتید بهتره raid 5 ببندید
RAID 6
RAID 6 در حقیقت RAID 5 ای هست که تحمل خرابیش ۲ تا دیسکه
پس یعنی ۲ تا parity رو نگه میداره
پس حداقل ۴ تا دیسک مورد نیاز است
RAID 1+0, RAID 0+1
بیشتر از این raid استفاده میشه
RAID 0+1
تو این raid شما ۴ تا دیسک دارید
تو raid 0+1 اطلاعات هر ۲ دیسک ۲ دیسک مثل raid 0 عمل میکنن و درنهایت گروههای دیسک به هم RAID 1 بسته میشن
پس اصطلاحاً پایین رو raid 0 میبندند و بالا رو raid 1
RAID 1+0
تو این raid سطوح پایین ۲ تا ۲ تا میشن raid 1 و سطوح بالا میشن raid 0
پس اگه خواستین raid0+1 ببندید تو raid controller وارد بشید و raid 10 رو انتخاب کنید
تحمل خرابی این raid یکدونه توی هر zone . کلاً ۲ هارد است
حداقل تعداد دیسکها در این raid 4 دیسک است
یادتون باشه باید براساس raid controller سرور raid ببندید
برای همین گاهی اوقات اگه بدون دونستن raid ماشین یکی درمیون هاردها رو بکشید هیچ اتفاقی نمیافته ولی اگه ۲ تا هارد رو باهم بکشید بیرون دیتا lost میشه
قبل از انجام هر عمل hot plug به نوع raid دیسکها حتما توجه کنید
اگه raid 10 داشته باشید و یک هارد بسوزه باید سریعاً هارد رو جایگزین کنید چون اگه هارد کناری هم بره کلاً خرابی ایجاد میشه
تفاوت RAID 0+1, RAID 1+0
در RAID 0+1 با خرابی یکی از دیسکها کلاً هر ۲ دیسک از مدار خارج میشه
اما توی RAID 1+0 اگه یکی از دیسکها خراب بشه هیچ اتفاقی برای اطلاعات نمیافته
نکته: برای دیتابیس و سیستمعامل RAID 1 مناسبه و اگه بخوایم خیلی محکم کاری کنیم از ۴ تا هارد RAID 10 استفاده میکنیم و برای بکآپها بهتره RAID 5 ببندیم
نوع هارد هم به صورت دیفالت SAS و برای بکآپها SATA بهتره
best practice برای RAID و هارد دیسکها
مثال: اگه شما روی یک ماشینی ۶ تا هارد داشتید raid رو به چه صورتی انتخاب میکنید؟
همونطور که بالا میبینید best practice ما اعلام میکنه که ۲ تا هارد رو برای سیستمعامل با RAID 1 در نظر بگیریم و 4 تا هارد رو برای دیتابیس اوراکل با RAID 10
(توی RAID Controller شما میتونید به هر تعداد که نیاز دارید RAID ببندید)
نکته: تو اتوماسیونهای ادارای معمولاً TPS ها ۱/۳ تعداد کاربرهاست یعنی اگر شما ۲۰۰۰ تا کاربر داشته باشید شاید TPS شما به ۷۰۰ هم نرسه ولی توی اتوماسیونهای صنعتی چون در ثانیه تعداد زیادی تراکنش دارید اینجاهاست که اگه شما برای دیتابیستون هارد SATA انتخاب کنید bottleneckشما توی هاردهاتون صورت میگیره (توی em رو نگاه کنید wait io بالا میره)
پارتیشنبندی دیسکها
برای استفاده بهتر، مدیریت بیشتر و امنیت بهتر برای هر قسمت دیسکمون رو پارتیشنبندی میکنیم
توی لینوکس شما حداکثر ۴ تا پارتیشن primary بیشتر ندارید و اگه پارتیشن بیشتر بخواین میتونید به صورت logical پارتیشنها رو بسازید
میتونید به صورت ترکیبی نیز پارتیشهاتون رو ایجاد کنید مثلا ۲ تا primary و مابقی یه extend و باقی پارتیشنها به صورت logical زیر extend شما
هاردها تو لینوکس میتونن از ۲ دستهی IDE یا SCSI باشند
شمارههای هاردهای IDE تو لینوکس با hd شروع میشن (اگه تعدا هاردها زیاد بود و تمام حروف از a..z رو لینوکس شماره گذاری کنه دور بعد از aa..zz شروع میکنه پس نهایتاً 63 تا هارد میتونید داشته باشید)
SCSI = SATA, SAS, SSD, SCSI
نکته: اگه هیچکدوم از اینها نبود به خاطر اینه که شما دیسکهاتون رو RAID کردید و دیسکهاتون به صورت CC با یه عددی دیده میشن
پارتیشنهای logical نهایتاً میتونن ۱۲ تا باشند
شما میتونید از همون اول کل هارد رو extend کنید و پارتیشنهای logicalاتون رو بسازید
۲ نوع پارتیشنبندی تو لینوکس داریم:
- MSDOS برای پارتیشنبندیهای زیر ۲ ترابایت است
- GPT برای پارتیشنبندیهای بالای ۲ ترابایت است
best practice اینه که همیشه هاردها رو GPT ببندید
وقتی دیسکتون رو پارتیشن میکنید اگه اسم دیسکتون sda بوده اسم پارتیشنهاتون میشه sda1, sda2, sda3, sda4
نکته: به هیچ عنوان نمیتونید ۴ تا primary و یک extend جدا داشته باشید چون ماکزیمم ۴ تا پارتیشن primary دارید نهتاً ۳ تا primary و ۱ extend (شماره extend همیشه ۴ است و از ۵ به بعد پارتیشنهای logical ایجاد میشوند)
نکته: اگه RAID رو به میخواین به صورت نرمافزاری به سیستمعاملتون واگذار کنید از لحاظ performance بار زیادی روی سیستمعاملتون میذاره پس بهتره به صورت سختافزاری RAID رو ایجاد کنید
انواع File System
وقتی شروع به فرمت پارتیشنهاتون میکنید حتما باید با یک FS شناخته شده در اون سیستمعامل این کار رو کنید
به صورت Default توزیعها با کرنل:
- 4 => Ext2
- 5 => Ext3
- 6 => Ext4
- 7 => Xfs
به این دلیل که سیستم init در توزیعهای ردهت بیس از ورژن ۷ به systemd مهاجرت کردند و آخرین نسخهی اوراکل 11g که موقع نوشتن این نوشته 11.2.0.4 است از systemd پشتیبانی نمیکند پس نمیتونید از ورژن ۷ توزیعهای centOS, RedHat, OracleLinux استفاده بکنید مخصوصا در RAC
نکته: تو نسخهی 12c اوراکل ساپورت از systemd رو اضافه کرد و فقط و فقط توصیه میشه در این ورژن از نسخهی ۷ توزیعها استفاده بکنید
یه توضیح مختصر راجع به قابلیتهای کاربری فایلسیستمها:
مثلاً تو NTFS اگه شما فایلی رو پاک کنید میتونید به راحتی اون فایل رو برگردونید چون NTFS فقط میاد تو partition table اش فلگ رو برای اون فایل true میکنه
تو سری Ext2,3,4 بازگردانی فایل خیلی سختتر از NTFS صورت میگیره و اگه شما فایلی رو پاک کنید باید هارد رو ریکاور کنید
همچنین اندازه فایلهایی که تو هرکدوم از این File Systemها میتونه نگهداری بشه هم میتونه براتون مهم باشه
یه لینک خوب از ویکیپدیا: Comparison of file systems
برای کلاستر اوراکل ما از فایل سیستم خود اوراکل (ASM) استفاده میکنیم
واسه همین دیسکها رو به صورت خام به اوراکل معرفی میکنیم
Logical Volume Manager
خب گفتیم که اگه بخوایم ۴ ۵ تا هارد رو روی سرورمون به صورت یه تیکه داشته باشیم باید از RAID 0 استفاده کنیم
ولی فرض کنید SAN Storageای داریم که ۱۰۰ تا هارددیسک داره و فضای بکآپی که ما واسه سرورمون نیاز داریم ۵ ترابایته
با این حال SAN Storageمن قابلیت آدرسدهی بیش از ۴ ترابایت رو نداره یعنی هر lun نهایتاً میتونه ۴ ترابایت باشه
تو این موارد برای اینکه به سیستمعامل بتونیم دیسک موردنظرمون رو بدیم از LVM استفاده میکنیم
تو LVM شما چندتا دیسک دارید و اومدید روشون پارتیشنبندی کردید حواستون باشه فرمتشون نکنید (مثلا از SAN Storageشما ۵ تا دیسک ۴ ترابایتی گرفتید)
تو لایهی بعد میایم physical volumes رو تعریف میکنیم توی این لایه تمام دیسکها رو بهش معرفی میکنیم
تو لایهی بعدی میایم یک volume group درست میکنیم که به این صورت تمام دیسکها در volume group قرار دارند
خب از این لایه بعد شما انگار یک دیسک یکپارچه دارید (۴ تا ۴ ترابایتی = ۱۶ ترابایت)
حالا روی این لایه شما میتونید پارتیشنبندی کنید که میشه لایهی Logical Volumes
بعد از ساختن logical volumes برای اینکه بتونید فایل بنویسید باید پارتیشن رو با یک File System فرمت کنید
نکته: تو لینوکس همه چی فایله و همه سختافزارها به صورت یک فایل دیوایس شناخته میشه
نکته: best practice اینه که برای قسمت software oracle و OS از LVM استفاده کنید
قابلیتهای LVM
- فضای شما به راحتی قابلیت extendشدن داره
- به صورت hot plug میتونید دیسک اضافه کنید و فضای پارتیشنهاتون رو زیاد کنید
فایل سیستم اوراکل (ASM)
اوراکل تا حالا چندین File System داده
خب تو شکل بالا اگه سمت چپ رو نگاه بکنید تو لایه اول سختافزار قرار داره تو لایه دوم سیستمعامل که توی دل خودش میایم LVM رو کانفیگ میکنیم و روی LVM میایم File System موردنظرمون رو میذاریم و تو لایهی بالا که اپلیکیشنمون قرار داره
ولی توی ASM بعد از سختافزار و سیستمعامل ASM قرار میگیره یعنی جای LVM , FS رو میگیره و تو لایهی بالا هم که اپلیکیشن
پارتیشنهای مورد نیاز در لینوکس (best practice):
نکته: پارتیشن boot رو به هیچ عنوان نمیشه LVM کرد و حتما باید به صورت fix تعریف شود
برای swap همونطور که تو جدول بالا مشخصه اگه رم بین 2.5 تا 16 گیگ است برابر خود رم میگیریم
اگه بالاتر از 16 گیگ بود همون 16 گیگ رو میگیریم
نکته: موقع نصب اوراکل به سایز swap خیلی گیر میده واسه همین سعی کنید یکم بالاتر از حدود مشخص شده بگیرید که مشکلی پیش نیاد (برای سرورهای عملیاتی)
یکی از بهترین سایتها در زمینهی اوراکل سایت burleson است و نکات بالا از این سایت گرفته شده است.
در مورد فایل سیستم ها در مورد journalization هم میشد . بحث کنی . درکل مطلب عالی هست .