تک باکس

02632100000 داخلی 410

RAID

 

آرایه اضافی از دیسک های مستقل

RAID  چیست؟

RAID  (آرایه اضافی از دیسک‌های مستقل) روشی برای ذخیره داده‌های مشابه در مکان‌های مختلف روی چندین هارد دیسک یا درایوهای حالت جامد (SSD) ، برای محافظت از داده‌ها در صورت خرابی درایو است.  با این حال، سطوح RAID مختلفی وجود دارد، و هدف همه آنها ارائه افزونگی نیست.

 

نحوه عملکرد  RAID

RAID  با قرار دادن داده ها بر روی چندین دیسک کار می کند و اجازه می دهد تا عملیات ورودی/خروجی (I/O) به صورت متعادل با هم همپوشانی داشته باشند و عملکرد را بهبود بخشد.  از آنجایی که استفاده از چندین دیسک باعث افزایش میانگین زمان بین خرابی ها می شود، ذخیره داده ها به صورت اضافی نیز، Fault tolerance   را افزایش می دهد.

 

آرایه های RAID برای سیستم عامل (OS) به عنوان یک  Logical Drive  منفرد ظاهر می شوند.

 

RAID  از تکنیک های   disk mirroring   یا  Disk striping   استفاده می کند. تکنیک  disk mirroring  داده های یکسان را روی بیش از یک درایو کپی می کند.   پارتیشن های  Disk striping به پخش داده ها روی چندین درایو دیسک کمک می کند.  فضای ذخیره سازی هر درایو به واحدهای مختلف از یک بخش 512 بایت تا چندین مگابایت تقسیم می شود.   نوارهای همه دیسک ها به ترتیب در هم قرار گرفته و آدرس دهی می شوند. 

 

Disk Mirroring  و Disk striping را نیز می توان در یک آرایه RAID ترکیب کرد.

 

 

در سیستم تک کاربره‌ای که سوابق/بایگانی های  (Records) بزرگ ذخیره می‌شوند، نوارها معمولاً کوچک (مثلاً 512 بایت) تنظیم می‌شوند به طوری که یک رکورد واحد همه دیسک‌ها را در بر می‌گیرد و با خواندن همزمان همه دیسک‌ها می‌توان به سرعت به آن دسترسی پیدا کرد.

 

در یک سیستم چندکاربره، عملکرد بهتر به stripe  به اندازه کافی بزرگ نیاز دارد تا سوابق/بایگانی های  با سایز معمولی یا حداکثر اندازه را نگه دارد و ورودی/خروجی دیسک را در درایوها فعال کند.

 

کنترلر RAID

کنترلر RAID دستگاهی است که برای مدیریت درایوهای دیسک سخت در یک آرایه ذخیره سازی استفاده می شود.  می توان از آن به عنوان سطحی از  abstraction  بین سیستم عامل و دیسک های فیزیکی استفاده کرد و گروه هایی از دیسک ها را به عنوان Logical Units  ارائه کرد. استفاده از یک کنترلر RAID می تواند عملکرد را بهبود بخشد و به محافظت از داده ها در صورت خرابی کمک کند.

 

یک کنترلر RAID ممکن است مبتنی بر سخت افزار یا نرم افزار باشد. در یک محصول RAID مبتنی بر سخت افزار، یک کنترل کننده فیزیکی کل آرایه را مدیریت می کند. این کنترلر همچنین می تواند برای پشتیبانی از فرمت های درایو مانند Serial Advanced Technology  Attachment  و Small Computer System Interface طراحی شود.  یک کنترلر RAID فیزیکی نیز می تواند در مادربرد سرور تعبیه شود.

 

با RAID مبتنی بر نرم افزار، کنترل کننده از منابع سیستم سخت افزاری مانند پردازنده مرکزی و حافظه استفاده می کند. در حالی که عملکردهای مشابه یک کنترلر RAID مبتنی بر سخت افزار را انجام می دهد، کنترل کننده های RAID مبتنی بر نرم افزار ممکن است افزایش عملکرد را فعال نکنند و می توانند بر عملکرد سایر برنامه های کاربردی روی سرور تأثیر بگذارند.

 

اگر پیاده‌سازی RAID مبتنی بر نرم‌افزار با فرآیند راه‌اندازی سیستم سازگار نیست و کنترل‌کننده‌های RAID مبتنی بر سخت‌افزار بسیار گران هستند، سیستم عامل یا RAID مبتنی بر درایور یک گزینه بالقوه است.

 

راشه های کنترل کننده RAID مبتنی بر سیستم عامل، بر روی مادربرد قرار دارند و کلیه عملیات ها توسط واحد پردازش مرکزی (CPU) مشابه RAID مبتنی بر نرم افزار؛ انجام می شود. با این حال، با سیستم عامل، سیستم RAID فقط در ابتدای فرآیند بوت اجرا می شود. هنگامی که سیستم عامل بارگیری شد، درایور کنترلر، عملکرد RAID را بر عهده می گیرد. یک کنترلر RAID میان‌افزار، به اندازه یک گزینه سخت‌افزاری گران نیست، اما فشار بیشتری به CPU کامپیوتر وارد می‌کند. در واقع  RAID مبتنی بر Firmware  به نرم‌افزار مکمل سخت‌افزار، مدل هیبریدی و RAID جعلی نیز گفته می‌شود.

 

سطوح  RAID

دستگاه های RAID از نسخه های مختلفی استفاده می کنند که سطوح نامیده می شوند. مقاله اصلی که این اصطلاح را ابداع کرد و مفهوم راه اندازی RAID را توسعه داد، شش سطح از RAID را تعریف کرد – 0 تا 5. این سیستم شماره گذاری شده، افراد در فناوری اطلاعات را قادر می ساخت تا نسخه های RAID را متمایز کنند.   تعداد سطوح از آن زمان گسترش یافته و به سه دسته تقسیم شده است: سطوح RAID استاندارد، تو در تو و غیر استاندارد.

 

سطوح استاندارد RAID

RAID 0   . این پیکربندی دارای  striping  است اما داده های اضافی ندارد. بهترین عملکرد را ارائه می دهد، اما fault tolerance را ارائه نمی دهد.

 

 

RAID 1 .

این پیکربندی که به عنوان Disk Mirroring نیز شناخته می‌شود، از حداقل دو درایو تشکیل شده است که ذخیره‌سازی داده‌ها را کپی می‌کنند. در نتیجه striping  وجود ندارد.  عملکرد خواندن بهبود یافته است زیرا هر دیسک را می توان همزمان خواند.  عملکرد نوشتن مانند single-disk storage   است.

 

 

RAID 2 .

 این پیکربندی از  striping  در بین دیسک ها استفاده می کند و برخی از دیسک ها اطلاعات ECC   را ذخیره می کنند.

RAID 2 همچنین از یک برابری Hamming code  اختصاصی استفاده می کند که شکل خطی ECC است. RAID 2 هیچ مزیتی نسبت به RAID 3 ندارد و دیگر استفاده نمی شود.

 

 

RAID 3 .

این تکنیک از striping استفاده می کند و یک درایو را به ذخیره اطلاعات به میزان یکسانی   parity    ؛  اختصاص می دهد.  اطلاعات ECC تعبیه شده برای تشخیص خطاها استفاده می شود.  بازیابی اطلاعات با محاسبه اطلاعات انحصاری ثبت شده در درایوهای دیگر انجام می شود. از آنجا که یک عملیات I/O به تمام درایوها به طور همزمان آدرس می دهد، RAID 3  نمی تواند I/O را با هم ،همپوشانی کند.  به همین دلیل، RAID 3 برای سیستم های تک کاربره با برنامه های طولانی مدت ؛ بهترین است.

 

 

RAID 4 .

این سطح از stripe های بزرگ استفاده می کند، به این معنی که کاربر می تواند سوابق/بایگانی ها را از هر درایو واحد بخواند. سپس Overlapped I/O   را می توان برای عملیات خواندن استفاده کرد.   از آنجا که تمام عملیات نوشتن برای به روز رسانی درایو parity  مورد نیاز است، هیچ تداخلی I/O امکان پذیر نیست.

 

 

RAID 5 .

این سطح بر اساس Block-Level Striping   یکسان و برابری است. وجود اطلاعات یکسان و برابری در حاشیه هر درایو ، آرایه را قادر می سازد حتی اگر یکی از درایوها از کار بیفتد، کار کند و به فعالیت ادامه دهد. معماری آرایه، عملیات خواندن و نوشتن را قادر می سازد تا چندین درایو را در بر بگیرد. این نتیجه، عملکرد بهتری نسبت به یک درایو دارد، اما نه به اندازه آرایه  RAID 0  .    به هر حال RAID 5 به حداقل سه دیسک نیاز دارد، اما اغلب توصیه می شود از حداقل پنج دیسک به دلایل عملکردی؛ استفاده کنید.

 

آرایه‌های RAID 5 عموماً به دلیل تأثیر عملکرد مرتبط با نوشتن داده‌های یکسان و برابر، انتخاب ضعیفی برای استفاده در Write-Intensive Systems  هستند. وقتی یک دیسک از کار بیفتد، بازسازی آرایه RAID 5 ممکن است زمان زیادی طول بکشد.

 

 

این تکنیک مشابه   RAID 5 است، اما شامل یک طرح  parity   دوم است که در بین درایوهای آرایه؛ توزیع شده است.  استفاده از یکسانی و برابری اضافی؛ آرایه را قادر می سازد به عملکرد خود ادامه دهد، حتی اگر دو دیسک به طور همزمان از کار بیفتند.  با این حال، این حفاظت اضافی هزینه دارد. آرایه‌های RAID 6 اغلب عملکرد نوشتن کندتری نسبت به آرایه‌های RAID 5 دارند.

 

 

سطوح RAID تو در تو  Nested RAID Levels

برخی از سطوح RAID که مبتنی بر ترکیبی از سطوح RAID هستند به عنوان RAID تودرتو  (Nested) نامیده می شوند. در اینجا چند نمونه از سطوح RAID تو در تو (Nested) آورده شده است.

 

RAID 10 (RAID 1+0) .

این سطح اغلب به عنوان RAID 10 شناخته می شود که با ترکیب RAID 1 و RAID 0 ایجاد میگردد ؛ که عملکرد بالاتری نسبت به RAID 1 ارائه می دهد، اما هزینه بسیار بالاتری دارد. در RAID 1+0 داده ها Mirrored   و Mirror   ها نیز بصورت striped هستند.

 

 

RAID 0+1 مشابه RAID 1+0 است، با این تفاوت که روش سازماندهی داده ها کمی متفاوت است. RAID 0+1 به جای ایجاد یک Mirror   و سپس striping  آن، یک مجموعه   stripe   ایجاد می کند و سپس مجموعه   stripe   را   Mirror   می کند.

 

RAID 03  (RAID 0+3 که همچنین به عنوان RAID 53 یا RAID 5+3 شناخته میشود)    .

این سطح از striping در سبک  RAID 0  برای بلوک های دیسک مجازی RAID 3 استفاده می کند.  این وضعیت ، با هزینه بالاتر ؛ کارایی بالاتری نسبت به  RAID 3 را ارائه می دهد.

 

RAID 50 (RAID 5+0)  .

این پیکربندی،  parity  توزیع شده RAID 5 را با RAID 0 striping ترکیب می کند تا عملکرد RAID 5 را بدون کاهش حفاظت از داده ها ؛ بهبود بخشد.

 

سطوح غیر استاندارد  RAID

سطوح RAID غیر استاندارد با سطوح RAID استاندارد متفاوت است و معمولاً توسط شرکت ها یا سازمان ها برای استفاده عمدتاً اختصاصی توسعه داده می شوند. در اینجا چند نمونه آورده شده است.

 

یک سطح RAID غیر استاندارد مبتنی بر RAID 3 و RAID 4، به سادگی caching  را اضافه می کند. این حالت شامل یک سیستم ‌عامل جاسازی‌شده در زمان واقعی به‌عنوان یک کنترل‌کننده،  caching از طریق یک گذرگاه پرسرعت و سایر ویژگی‌های یک رایانه مستقل است.

 

این سطح به کنترلر RAID امکان می دهد تصمیم بگیرد که چگونه parity  را روی دیسک ذخیره کند.   بین RAID 3 و RAID 5 یکی را انتخاب می کند.  انتخاب بستگی به این دارد که چه نوع مجموعه RAID با نوع داده های نوشته شده روی دیسک ها عملکرد بهتری دارد.

 

این سطح که توسط هسته لینوکس ارائه شده است، از ایجاد آرایه های RAID تو در تو ( Nested ) و غیر استاندارد پشتیبانی می کند.  نرم افزار لینوکس RAID همچنین می تواند از ایجاد تنظیمات استاندارد RAID 0، RAID 1، RAID 4، RAID 5 و RAID 6 پشتیبانی کند.

 

RAID سخت افزاری در مقابل RAID نرم افزاری

همانند کنترلرهای RAID، خوده RAID  از طریق سخت افزار یا نرم افزار پیاده سازی می شود.  RAID  مبتنی بر سخت افزار از پیکربندی های مختلف، RAID پشتیبانی می کند و به ویژه برای RAID 5 و 6 مناسب است.  پیکربندی سخت افزار RAID 1 برای پشتیبانی از فرآیند درایو بوت و برنامه های کاربردی خوب است، در حالی که سخت افزار RAID 5 برای آرایه های ذخیره سازی بزرگ مناسب است.  هر دو سخت افزار RAID 5 و 6 برای ، عملکرد و کارایی هر چه بهتر ؛ مناسب هستند.

 

RAID  مبتنی بر سخت افزار، نیاز به نصب یک کنترلر اختصاصی در سرور دارد.   کنترلرهای RAID در سخت افزار از طریق سیستم ورودی/خروجی اولیه کارت یا Option ROM قبل یا بعد از بوت شدن سیستم عامل پیکربندی می شوند.   سازندگان کنترلرهای RAID نیز معمولاً ابزارهای نرم افزاری اختصاصی را برای سیستم عامل های پشتیبانی شده خود ارائه می دهند.

 

RAID مبتنی بر نرم افزار ، توسط چندین سیستم عامل مدرن ارائه شده است که به روش های مختلفی اجرا می شود، از جمله:

 

  • به عنوان جزئی از سیستم فایل؛
  • به عنوان لایه ای که دستگاه ها را به عنوان یک دستگاه مجازی منفرد  abstracts  می کند. و
  • به عنوان لایه ای که بالای هر فایل سیستمی قرار دارد.

 

این روش RAID از مقداری از قدرت محاسباتی سیستم برای مدیریت پیکربندی RAID مبتنی بر نرم افزار استفاده می کند. به عنوان مثال، ویندوز از نرم افزار RAID 0، 1 و 5 پشتیبانی می کند، در حالی که macOS اپل از RAID 0، 1 و 1+0 پشتیبانی می کند.

 

 

 

مزایای RAID

از مزایای RAID می توان به موارد زیر اشاره کرد:

 

  • به دلیل اینکه دیسک‌های ارزان‌تر در تعداد زیادی استفاده می‌شوند، مقرون به صرفه‌تر هستند.
  • استفاده از چندین هارد دیسک RAID را قادر می سازد تا عملکرد یک هارد دیسک را بهبود بخشد.
  • افزایش سرعت و قابلیت اطمینان کامپیوتر پس از خرابی، بسته به پیکربندی.
  • خواندن و نوشتن را می توان سریعتر از یک درایو با RAID 0 انجام داد. این به این دلیل است که یک سیستم فایل تقسیم شده است و بین درایوهایی که روی یک فایل با هم کار می کنند، توزیع می شود.
  • با RAID 5 قابلیت دسترسی و انعطاف‌پذیری افزایش یافته است. با   Mirroring  ، دو درایو می‌توانند حاوی داده‌های یکسانی باشند و اطمینان حاصل شود که در صورت خرابی دیگری، یکی به کار خود ادامه می‌دهد.

 

معایب استفاده از RAID

با این حال، RAID محدودیت های خود را دارد. برخی از این موارد عبارتند از:

 

  •  پیاده سازی سطوح RAID تو در تو (Nested  ) نسبت به سطوح RAID سنتی ، گران تر است زیرا به دیسک های بیشتری نیاز دارند.
  • هزینه هر گیگابایت برای دستگاه های ذخیره سازی برای RAID تودرتو (Nested  ) ، بالاتر است زیرا بسیاری از درایوها برای افزونگی ( redundancy )  استفاده می شوند.
  • وقتی یک درایو از کار بیفتد، احتمال اینکه درایو دیگری در آرایه نیز به زودی از کار بیفتد، افزایش می‌یابد که احتمالاً منجر به از دست رفتن اطلاعات می‌شود.  این موضوع به این دلیل است که همه درایوهای یک آرایه RAID به طور همزمان نصب می شوند، بنابراین همه درایوها در معرض یکسانی فرسودگی هستند.
  • بعضی از سطوح RAID – مانند RAID 1 و 5 – فقط خرابی و واماندگی یک درایو را می توانند متحمل شوند.
  • آرایه‌های RAID و داده‌های موجود در آن‌ها ؛ تا زمانی که یک درایو خراب جایگزین نشود و دیسک جدید با داده‌ها پر شود، آسیب‌پذیر هستند.
  • از آنجایی که درایوها در حال حاضر ظرفیت بسیار بیشتری نسبت به زمانی که RAID برای اولین بار پیاده سازی شد، دارند ؛ بازسازی درایوهای آسیب دیده، زمان زیادی طول می کشد.
  • اگر خرابی دیسک رخ دهد، این احتمال وجود دارد که دیسک‌های باقیمانده دارای بخش‌های بد ( bad sectors ) یا داده‌های ناخوانا باشند، که ممکن است بازسازی کامل آرایه را غیرممکن کند.

 

با این حال، سطوح RAID تودرتو ( nested  ) با ارائه افزونگی ( redundancy  ) بیشتر، این مشکلات را برطرف می‌کند و به طور قابل توجهی احتمال خرابی در سطح آرایه را به دلیل خرابی همزمان دیسک ؛کاهش می‌دهد.

 

چه زمانی باید از RAID استفاده کرد؟

مواردی که در آن راه اندازی RAID مفید است، عبارتند از:

 

  • زمانی که حجم زیادی از داده ها نیاز به بازیابی دارند. اگر درایو از کار بیفتد و داده ها از بین بروند، آن داده ها می توانند به سرعت بازیابی شوند، زیرا این داده ها در درایوهای دیگر نیز ذخیره می شوند.
  • زمانی که Uptime   و در دسترس بودن، فاکتورهای مهم تجاری هستند. اگر داده ها نیاز به بازیابی داشته باشند، می توان آن را به سرعت و بدون توقف انجام داد.
  • هنگام کار با فایل های حجیم. RAID ، سرعت و قابلیت اطمینان را هنگام کار با فایل های حجیم فراهم می کند.
  • زمانی که یک سازمان نیاز به کاهش فشار بر سخت افزار فیزیکی و افزایش عملکرد کلی دارد. به عنوان مثال، یک کارت RAID سخت افزاری می تواند شامل حافظه اضافی برای استفاده به عنوان cache باشد.
  •  هنگام داشتن مشکلات I/O   روی دیسک   .   RAID ، با خواندن و نوشتن داده‌ها از چندین درایو، به‌جای اینکه نیاز داشته باشد تا یک درایو برای انجام کارها منتظر بماند ؛ توان عملیاتی اضافی را ارائه می‌کند.
  • زمانی که هزینه یک عامل مهم است. هزینه یک آرایه RAID ،کمتر از گذشته است و دیسک‌های ارزان‌تر به تعداد زیاد استفاده می‌شوند که باعث ارزان‌تر شدن آن می‌شود.

 

 

تاریخچه RAID

اصطلاح RAID در سال 1987 توسط دیوید پترسون، رندی کاتز و گارث ای گیبسون ابداع شد.  در گزارش فنی خود در سال 1988، ” موردی برای تحقیق بنام RAID ” این سه نفر استدلال کردند که مجموعه‌ای از درایوهای ارزان قیمت می‌تواند عملکرد برترین درایوهای دیسک گران قیمت آن زمان را شکست دهد.  با استفاده از redundancy ، یک آرایه،  RAID می تواند قابل اعتمادتر از هر دیسک درایوی  باشد.

در حالی که این گزارش اولین گزارشی بود که نامی برای این مفهوم گذاشت، استفاده از دیسک های اضافی قبلاً توسط دیگران مورد بحث قرار گرفته بود. دو نفر از متخصصان این حوزه با نامهای   Gus German   و  Ted Grunau از شرکت  Geac Computer  ؛ برای اولین بار  این ایده را با نام  MF-100 معرفی کردند. یکی از متخصصین شرکت IBM به نام  Ken Ouchi  در سال 1977 یک حق اختراع برای این فناوری به ثبت رساند که بعداً RAID 4 نام گرفت. در سال 1983،   شرکت  Digital Equipment Corp.  درایوهایی را که تبدیل به RAID 1 می شدند، ارائه کرد و در سال 1986، یک حق اختراع دیگر  IBM برای آنچه که RAID 5 نامیده می شد ؛ ثبت شد.

پترسون، کاتز و گیبسون برای تعریف طبقه بندی RAID خود، به کارهایی که توسط شرکت هایی مانند Tandem Computers، Thinking Machines و Maxstor انجام می شد؛ نیز توجه کردند.

در حالی که سطوح RAID فهرست شده در گزارش 1988 اساساً نام فناوری هایی را که قبلاً مورد استفاده قرار می گرفتند را مورد توجه قرار می داد، اما ایجاد اصطلاحات رایج برای این مفهوم، به تحریک بازار ذخیره سازی داده ها برای توسعه محصولات آرایه RAID بیشتر کمک کرد.

به گفته کاتز، اصطلاح inexpensive (  کم خرج ، معقول ، بصرفه ) در کاربرد و کاربری ؛ به زودی توسط فروشندگان صنعتی جایگزین اصطلاح independent  (  مستقل ،خود مختار،داراى قدرت مطلقه )  ، به دلیل پیامدهای هزینه های پایین ؛ خواهد شد.

 

آینده RAID

RAID  کاملاً ” منسوخ/بدون بهره وری ” نیست، اما بسیاری از تحلیلگران می گویند که این فناوری در سال های اخیر منسوخ شده است.  جایگزین‌هایی مانند Erasure Coding    حفاظت بهتری از داده‌ها را ارائه می‌کنند – البته با قیمت بالاتر – و با هدف رفع نقاط ضعف RAID توسعه یافته‌اند.  با افزایش ظرفیت درایو، احتمال خطا با آرایه RAID نیز افزایش می یابد و ظرفیت ها به طور مداوم افزایش می یابد.

 

ظهور SSD ها همچنین به عنوان کاهش نیاز به RAID در نظر گرفته می شود.  SSD ها قطعات متحرک ندارند و به اندازه هارد دیسک خراب نمی شوند. آرایه های SSD اغلب از تکنیک هایی مانند Wear Leveling   به جای تکیه بر RAID برای محافظت از داده ها استفاده می کنند.

SSD های مدرن به اندازه کافی سریع هستند بطوری که سرورهای مدرن ممکن است به افزایش عملکرد جزئی که RAID ارائه می دهد نیاز نداشته باشند.  با این حال، در حال حاضر هنوز هم ممکن است برای جلوگیری از اتلاف داده ها استفاده شود.

 

همچنین Hyperscale Computing   نیز با استفاده از سرورهای اضافی به جای درایوهای اضافی، نیاز به RAID را از بین می برد.

 

با این حال،  RAID  بخشی ریشه‌دار از ذخیره‌سازی داده‌ها است و فروشندگان بزرگ فناوری همچنان به انتشار محصولات RAID ادامه می‌دهند.  مثلا :

 

  • شرکت IBM ؛ RAID یا DRAID خودش را با Spectrum Virtualize V8.3 ، ارائه می دهد ،که نویدبخش افزایش عملکرد RAID است.
  • آخرین نسخه Intel Rapid Storage Technology از RAID 0، RAID 1، RAID 5 و RAID 10 پشتیبانی می کند.
  • نرم افزار مدیریت NetApp OnTap از RAID-DP یا دو برابری یا RAID 4 برای محافظت در برابر حداکثر سه خرابی درایو به طور همزمان استفاده می کند.
  • پلتفرم Dell EMC Unity از RAID 5، 6 و 10 پشتیبانی می کند.

 

 

 

 

 

https://www.techtarget.com/searchstorage/definition/RAID

 

 

 

گرد آوری ، ترجمه و تنظیم :  ” بهشاد ابرقوئیان  “

 

 

 

#تکباکس_آی_آر #تکباکس_آی_آر #ذخیره_ساز #سرور  #تجهیزات_شبکه  #ورک_استیشن #اس_اس_دی

 

#techboxir #techboxiran #server #storage #raid #draid #ibm #dell #redundant # redundancy #Hyperscalecomputing #uptime #cache #mirroring #striping #ssd

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *