نمایش درایو

یکی از مفاهیم بنیادی رایج اما دشوار در رایانش امروزی، مفهوم نمایش درایو یا به عبارت دیگر، چیزی است که به نظر یک هارد درایو میرسد. این ممکن است ساده به نظر برسد، و اغلب هم همینطور است، اما میتواند پیچیده باشد.
اول، یک هارد درایو چیست؟ این باید ساده باشد. منظور ما معمولاً یک دستگاه Winchester با دیسک چرخان سنتی است که برای دههها در فرمفاکتورهای استاندارد سه و نیم اینچ و دو و نیم اینچ ساخته شده است. آنها حاوی پلترهایی هستند که میچرخند، یک هد درایو که جلو و عقب حرکت میکند و با کانکتورهایی مانند ATA یا SCSI متصل میشوند. اکثر ما میتوانیم یک هارد درایو را با دستانمان بردارم و مطمئن باشیم که یک هارد درایو داریم. این همان چیزی است که ما به آن تجلی فیزیکی درایو میگوییم.
اما برای رایانه، کیس درایو یا کانکتورها را نمیبیند. رایانه باید از طریق الکترونیک خود نگاه کند و درایو را به صورت دیجیتال «ببیند». این بسیار، بسیار متفاوت از نحوه مشاهده انسان از درایو فیزیکی است. برای رایانه، یک هارد درایو در پایهایترین سطح فیزیکی به عنوان یک دستگاه ATA، SCSI یا Fibre Channel ظاهر میشود و معمولاً در سطح بالاتر به عنوان یک دستگاه بلاک انتزاع میشود. این همان چیزی است که ما آن را نمایش منطقی مینامیم، نه نمایش فیزیکی. برای اهداف ما در اینجا، تمام این رابطهای درایو را به عنوان دستگاههای بلاک در نظر میگیریم. آنها تفاوت دارند، اما فقط به میزان جزئی و نه به شکلی که برای بحث اهمیت داشته باشد. آنچه مهم است این است که یک رابط استاندارد یا مجموعهای از رابطهای نزدیک به هم وجود دارد که توسط رایانه به عنوان یک هارد درایو شناخته میشود.
روش دیگری برای فکر کردن درباره نمایش منطقی درایو این است که هر چیزی که برای رایانه شبیه یک هارد درایو به نظر میرسد، چیزی است که رایانه میتواند با یک سیستم فایل فرمت کند. سیستمهای فایل خودشان درایو نیستند، اما نیاز به یک درایو دارند که روی آن قرار گیرند.
مفهوم رابط مهمترین مفهوم در اینجا است. برای رایانه، «هر چیزی که یک رابط هارد درایو را پیادهسازی کند» واقعاً به عنوان یک هارد درایو دیده میشود. این هم یک مفهوم ساده و هم یک مفهوم قدرتمند است.
به همین دلیل استفاده از یک رابط استاندارد است که ما توانستیم حافظه فلش را بگیریم، آن را به یک کنترلر دیسک متصل کنیم که آن را از طریق یک پروتکل استاندارد ارائه دهد (پیادهسازیهای SATA و SAS از ATA و SCSI برای این کار امروزه رایج هستند) و SSDهایی ایجاد کنیم که دقیقاً مانند درایوهای Winchester سنتی برای رایانه به نظر میرسند و عمل میکنند، در حالی که از نظر فیزیکی هیچ اشتراکی با آنها ندارند. آنها ممکن است در یک فرمفاکتور فیزیکی آشنا باشند یا نباشند، اما قطعاً فاقد پلتر و هد درایو هستند. با نگاه کردن به عملکرد یک هارد درایو سنتی و یک SSD مدرن، حدس نمیزدیم که هدف مشترکی دارند.
این مفهوم برای بسیاری از دستگاهها کاربرد دارد. بدیهی است که کارتهای SD و فلشهای USB به همین شکل کار میکنند. اما مهمتر از این، نحوه کار پارتیشنها روی هارد درایوها همین است. سیستم پارتیشنبندی از مفهوم رابط نمایش درایو در یک سمت استفاده میکند تا بتوان آن را روی یک دستگاه اعمال کرد، و در سمت دیگر یک رابط نمایش درایو به هر چیزی که میخواهد از آن استفاده کند ارائه میدهد؛ معمولاً یک سیستم فایل. این ایده که چیزی از رابط نمایش درایو در هر دو طرف استفاده میکند بسیار مهم است. با انجام این کار، یک سیستم بلاک ساختاری یکنواخت و جهانی برای ساخت سیستمهای ذخیرهسازی پیچیده به دست میآوریم!
ما این مفهوم «درایو ورودی؛ درایو خروجی» را در بسیاری از موارد میبینیم. احتمالاً شناختهشدهترین آن RAID است. یک سیستم RAID یک آرایه از هارد درایوها میگیرد، یکی از تعداد زیادی الگوریتم را برای همکاری درایوها اعمال میکند، و سپس آنها را به عنوان یک نمایش درایو واحد به سیستم بعدی در «پشته» ارائه میدهد. این کپسولهسازی همان چیزی است که قدرت RAID را میدهد: سیستمهایی که در بالاتر از پشته به یک آرایه RAID نگاه میکنند، به معنای واقعی کلمه یک هارد درایو میبینند. آنها آرایه درایوها را نمیبینند، نمیدانند زیر RAID چیست. آنها فقط درایو(های) حاصلی را میبینند که سیستم RAID ارائه میدهد.
چون یک سیستم RAID تعداد دلخواهی از درایوها را میگیرد و آنها را به عنوان یک درایو استاندارد ارائه میدهد، از نظر تئوری قادریم RAID را به هر تعداد که بخواهیم لایهگذاری کنیم. البته این کار به هر میزانی که انجام شود بسیار غیرعملی خواهد بود. اما از طریق این مفهوم است که آرایههای RAID تودرتو ممکن هستند. به عنوان مثال، اگر تعداد زیادی هارد درایو فیزیکی داشتیم که به صورت جفتجفت تقسیم شده باشند و هر جفت در یک آرایه RAID 1 باشد. هر یک از آرایههای حاصل به عنوان یک درایو واحد ارائه میشود. هر یک از آن درایوهای منطقی حاصل میتوانند در یک آرایه RAID دیگر مانند RAID 0 ترکیب شوند. انجام این کار نحوه ساخت RAID 10 است. با ادامه دادن میتوانستیم تعداد زیادی آرایه RAID 10 را بگیریم، همه آنها را به یک سیستم RAID دیگر ارائه دهیم که آنها را دوباره در RAID 0 قرار دهد و RAID 100 و به همین ترتیب به طور نامحدود به دست آوریم.
به طور مشابه، لایه حجم منطقی از همان نوع کپسولهسازی مانند RAID برای اعمال جادوی خود استفاده میکند. مدیران حجم منطقی، مانند LVM در Linux و Dynamic Disks در Windows، روی دیسکهای منطقی قرار میگیرند و یک لایه ارائه میدهند که میتوانید مدیریت قدرتمندی مانند گسترش انعطافپذیر دستگاهها یا فعالسازی اسنپشاتها انجام دهید، و سپس دیسکهای منطقی (یعنی رابط نمایش درایو) را به لایه بعدی پشته ارائه دهید.
به دلیل ماهیت یکنواخت نمایش درایوها، پشته میتواند به هر ترتیبی اتفاق بیفتد. یک مدیر حجم منطقی میتواند روی RAID قرار گیرد، یا RAID میتواند روی یک مدیر حجم منطقی قرار گیرد و البته میتوانید یکی یا هر دو را نادیده بگیرید!
مفهوم نمایشهای درایو یا هارد درایوهای منطقی در سادگی خود قدرتمند است و ما را قادر میسازد که پتانسیل بالایی برای سفارشیسازی سیستمهای ذخیرهسازی به هر شکلی که نیاز داریم داشته باشیم.
البته کاربردهای دیگری از مفهوم درایو منطقی نیز وجود دارد. یکی از محبوبترین و کمفهمیدهترین آنها SAN است. یک SAN چیزی جز یک دستگاه نیست که یک یا چند دیسک فیزیکی را میگیرد و آنها را به عنوان درایوهای منطقی (این ارائه یک درایو منطقی از یک SAN LUN نامیده میشود) از طریق شبکه ارائه میدهد. این، به معنای واقعی کلمه، همه چیزی است که یک SAN هست. اکثر SANها یک لایه RAID و احتمالاً یک لایه مدیر حجم منطقی را قبل از ارائه LUNهای نهایی، یا نمایشهای دیسک، به شبکه شامل میشوند، اما این برای بودن یک SAN الزامی نیست.
این به این معنی است که البته میتوان چندین LUN SAN را در یک RAID واحد ترکیب کرد یا از طریق یک لایه حجم منطقی کنترل کرد. و البته به این معنی است که یک LUN SAN، یک هارد درایو فیزیکی، یک آرایه RAID، یک حجم منطقی، یک پارتیشن... همه میتوانند با یک سیستم فایل فرمت شوند زیرا همه روشهای مختلفی برای رسیدن به همان نتیجه هستند. همه آنها رفتار یکسانی دارند. همه آنها رابط نمایش درایو را به اشتراک میگذارند.
برای ارائه یک مثال واقعی از نحوه گردهم آمدن همه این قطعات، یکی از رایجترین «پشتههای ذخیرهسازی» که در فضای سازمانی پیدا خواهید کرد را بررسی میکنیم. البته روشهای زیادی برای ساخت یک پشته ذخیرهسازی وجود دارد، بنابراین اگر پشته شما متفاوت است تعجب نکنید. در پایین پشته تقریباً همیشه هارد درایوهای فیزیکی هستند که میتوانند شامل درایوهای حالت جامد (SSD) باشند. اینها از نظر فیزیکی در یک SAN قرار دارند. قبل از خروج از SAN، پشته احتمالاً شامل لایه ذخیرهسازی واقعی درایوها، سپس یک لایه RAID که آن درایوها را در یک موجودیت واحد ترکیب میکند، خواهد بود. سپس یک لایه حجم منطقی برای اجازه دادن به ویژگیهایی مانند رشد و اسنپشاتها. سپس مرز فیزیکی بین SAN و سرور وجود دارد که به عنوان LUN ارائه میشود. سپس LUN یک مدیر حجم منطقی روی آن در سمت سرور/سیستمعامل از نقطه تحدید اعمال میکند. سپس روی آن LUN یک سیستم فایل قرار دارد که آخرین مرحله ما است زیرا سیستم فایل به ارائه یک رابط نمایش درایو ادامه نمیدهد بلکه یک رابط فایل ارائه میدهد.
درک نمایش درایو، یا درایوهای منطقی، و نحوه اجازه دادن این مؤلفهها به یکدیگر برای ساخت زیرسیستمهای ذخیرهسازی پیچیده، یک بلاک ساختاری حیاتی برای درک IT است و به طیف گستردهای از فعالیتهای IT قابل اعمال است.
