مقایسه SAN و NAS
یکی از بزرگترین سردرگمیهایی که در سالهای اخیر دیدهام بین NAS و SAN است. درک اینکه هر کدام چیست در درک اینکه کجا مفید و مناسب هستند کمک زیادی میکند.
اول باید اصطلاحات بازاریابی را کنار بگذاریم و به اصطلاحات فنی بپردازیم. NAS مخفف Network Attached Storage است اما دقیقاً به آن معنا نیست و SAN مخفف Storage Area Network است اما معمولاً برای اشاره به یک دستگاه SAN استفاده میشود نه خود شبکه. در مناسبترین شکلش، SAN هر شبکهای است که به ترافیک ذخیرهسازی اختصاص یافته است، اما در دنیای واقعی این طور معمولاً استفاده نمیشود. در اینجا قرار است درباره دستگاههای NAS و SAN و مقایسه آنها صحبت کنیم بنابراین از تعریفی که شبکه را به جای دستگاه شامل میشود استفاده نخواهیم کرد. در واقع، هر دو NAS و SAN اصطلاحات بازاریابی هستند و به همین دلیل کمی نرم هستند. آنها به اندازه کافی دقیق هستند که در یک مکالمه فنی معمولی استفاده شوند، تا زمانی که همه طرفین بدانند منظور چیست، اما هنگام بحث درباره معنایشان باید نامهای جذاب را کنار بگذاریم و به دقیقترین توصیفات فنی پایبند باشیم. هر دو اصطلاح، وقتی از طریق بازاریابی استفاده میشوند، برای القای این مفهوم استفاده میشوند که یک فناوری خاصی هستند که «به شکل appliance درآمدهاند» که استفاده از اصطلاحات را غیرضروری پیچیده اما نه مفیدتر میکند.
بنابراین اول باید تعریف کنیم این دو نام در زمینه یک دستگاه چه معنایی دارند. هر دو دستگاه سرورهای ذخیرهسازی هستند، ساده و روشن، فقط دو روش مختلف برای ارائه آن ذخیرهسازی به دنیای خارج.
سادهتر از آن دو SAN است که به درستی یک دستگاه ذخیرهسازی بلاک است. هر دستگاهی که ذخیرهسازی خود را به صورت خارجی به عنوان یک دستگاه بلاک ارائه میدهد در این دسته قرار میگیرد و میتواند بر اساس نحوه استفاده به جای یکدیگر استفاده شود. دستگاههای ذخیرهسازی بلاک هارد درایوهای خارجی، DAS (Direct Attach Storage) و SAN هستند. همه اینها در واقع یک چیز هستند. وقتی آن را به دسکتاپ وصل میکنیم هارد درایو خارجی مینامیم. وقتی آن را به سرور وصل میکنیم DAS مینامیم. وقتی نوعی شبکه، معمولاً یک سوئیچ، بین دستگاه و دستگاه نهایی که ذخیرهسازی را مصرف میکند اضافه میکنیم SAN مینامیم. تفاوت فناورانهای بین این دستگاهها وجود ندارد. یک SAN سنتی میتواند مستقیماً به یک دسکتاپ متصل شود و مانند یک هارد درایو خارجی استفاده شود. یک هارد درایو خارجی میتواند به یک سوئیچ وصل شود و توسط چندین دستگاه در یک شبکه استفاده شود. رابط بین دستگاه ذخیرهسازی و سیستمی که از آن استفاده میکند بلاک است. پروتکلهای رایج برای ذخیرهسازی بلاک شامل iSCSI، Fibre Channel، SAS، eSATA، USB، Thunderbolt، IEEE1394 (معروف به Firewire)، Fibre Channel over Ethernet (FCoE) و ATA over Ethernet (AoE) میشوند. یک دستگاه متصل به یک دستگاه ذخیرهسازی بلاک همیشه ذخیرهسازی را به صورت یک هارد درایو میبیند، نه بیشتر.
یک NAS، همچنین به عنوان «فایلر» شناخته میشود، یک دستگاه ذخیرهسازی فایل است. این بدان معنی است که ذخیرهسازی خود را به صورت یک سیستم فایل شبکهای ارائه میدهد. بنابراین هر دستگاهی که به این ذخیرهسازی متصل میشود یک هارد درایو نمیبیند بلکه یک سیستم فایل قابل mount میبیند. وقتی یک NAS به صورت یک appliance بستهبندی نمیشود، فقط آن را یک فایل سرور مینامیم و تقریباً همه دستگاههای کامپیوتری از دسکتاپ تا سرور درجهای از این قابلیت را در خود دارند. پروتکلهای رایج برای دستگاههای ذخیرهسازی فایل شامل NFS، SMB / CIFS و AFP میشوند. البته بسیاری دیگر وجود دارند، و از نظر فنی پروتکلهای ذخیرهسازی فایل موارد خاصی مانند FTP و HTTP هستند که باید واجد شرایط باشند. به عنوان یک مثال افراطی، یک وب سرور سنتی یک شکل بسیار تخصصی از دستگاه ذخیرهسازی فایل است.
آنچه دستگاههای ذخیرهسازی بلاک و دستگاههای ذخیرهسازی فایل را از هم جدا میکند نوع رابطی است که آنها به دنیای خارج ارائه میدهند، یا به عبارت دیگر بگوییم، جایی که تقسیم بین دستگاه سرور و دستگاه کلاینت در پشته ذخیرهسازی اتفاق میافتد.
امروزه بسیار رایج شده است که دستگاههای ذخیرهسازی هم ذخیرهسازی بلاک و هم ذخیرهسازی فایل را از یک دستگاه ارائه دهند. سیستمهایی که این کار را میکنند ذخیرهسازی یکپارچه نامیده میشوند. با ذخیرهسازی یکپارچه، اینکه آیا میتوانید بگویید که به عنوان دستگاه ذخیرهسازی بلاک یا دستگاه ذخیرهسازی فایل (SAN یا NAS در اصطلاح رایج) یا هر دو رفتار میکند بر اساس رفتاری است که برای دستگاه پیکربندی میکنید نه بر اساس آنچه خریداری میکنید. این مهم است زیرا این نکته را تأکید میکند که این کاملاً یک تمایز پروتکل یا رابط است، نه تمایزی از اندازه، قابلیت، قابلیت اطمینان، عملکرد، ویژگیها و غیره.
هر دو نوع دستگاه گزینه، اما نه الزام، ارائه ویژگیهای پیشرفته در زیر «نقطه تمایز» که در آن ذخیرهسازی را به خارج تحویل میدهند را دارند. هر دو ممکن است RAID، مدیریت حجم منطقی، نظارت و غیره را ارائه دهند یا نه. ذخیرهسازی فایل (NAS) ممکن است ویژگیهای سیستم فایل مانند Windows NTFS ACLها را نیز ارائه دهد.
مزیت کلیدی ذخیرهسازی بلاک این است که سیستمهایی که به آن متصل میشوند فرصتی برای دستکاری سیستم ذخیرهسازی به عنوان یک هارد درایو سنتی دارند. این بدان معنی است که RAID و مدیریت حجم منطقی، که ممکن است قبلاً در «جعبه سیاه» دستگاه ذخیرهسازی انجام شده باشد، اکنون میتواند دوباره، در صورت تمایل، در سطح بالاتری انجام شود. دستگاههای کلاینت از اینکه چه نوع دستگاهی میبینند آگاه نیستند، فقط میدانند که به عنوان یک هارد درایو ظاهر میشود. بنابراین میتوانید انتخاب کنید که به آن اعتماد کنید (فرض کنید که RAID با سطح کافی دارد، به عنوان مثال) یا میتوانید چندین دستگاه ذخیرهسازی بلاک را درست مثل دیسکهای معمولی محلی به RAID ترکیب کنید. این بسیار نادر است اما یک گزینه جالب است و محصولاتی وجود دارند که طراحی شدهاند تا به این شکل استفاده شوند.
معمولتر، مدیریت حجم منطقی مانند Linux LVM، Solaris ZFS یا Windows Dynamic Disks بر روی ذخیرهسازی بلاک ارائه شده از دستگاه اعمال میشود و سپس بر روی آن یک سیستم فایل به کار میرود. این مهم است که به خاطر بسپارید، با دستگاههای ذخیرهسازی بلاک، سیستم فایل توسط دستگاه کلاینت ایجاد و مدیریت میشود، نه توسط دستگاه ذخیرهسازی. دستگاه ذخیرهسازی بیخبر از نحوه استفاده از ذخیرهسازی بلاکی که ارائه میدهد است و به کاربر نهایی اجازه میدهد از آن به هر روشی که بخواهد با کنترل کامل استفاده کند. این حتی تا جایی ادامه دارد که میتوانید دستگاههای ذخیرهسازی بلاک را زنجیروار به هم متصل کنید که یکی ذخیرهسازی برای دیگری را فراهم کند که شاید در گروههای RAID ترکیب شوند – دستگاههای ذخیرهسازی بلاک میتوانند بیش و کم به طور نامحدود لایهبندی شوند.
از طرف دیگر، یک دستگاه ذخیرهسازی فایل تمام بخش بلاک ذخیرهسازی را در خود دارد بنابراین هر فرصتی برای RAID، مدیریت حجم منطقی و نظارت باید توسط دستگاه ذخیرهسازی فایل انجام شود. سپس بر روی ذخیرهسازی بلاک یک سیستم فایل اعمال میشود. معمولاً این EXT4 از Linux، ZFS از FreeBSD و Solaris، Windows NTFS اما سیستمهای فایل دیگر مانند WAFL، XFS، JFS، BtrFS، UFS و موارد دیگر نیز قطعاً ممکن هستند. در این سیستم فایل دادهها ذخیره میشوند. برای به اشتراک گذاشتن این دادهها با دنیای خارج از یک سیستم فایل شبکه (همچنین به عنوان یک سیستم فایل توزیع شده شناخته میشود) استفاده میشود که یک رابط سیستم فایل با قابلیت شبکه فراهم میکند – NFS، SMB و AFP رایجترین هستند اما مانند هر خانواده پروتکلی، امکانات خاص و عجیب متعددی وجود دارد.
یک دستگاه راه دور که میخواهد از ذخیرهسازی بر روی دستگاه ذخیرهسازی فایل استفاده کند آن را از طریق شبکه همانگونه میبیند که یک سیستم فایل محلی میبیند و قادر است آن را به شکل یکسانی mount کند. این استفاده از ذخیرهسازی فایل را برای کاربر نهایی به ویژه آسان و آشکار میکند زیرا در هر جنبهای بسیار طبیعی است. ما هر روز از سیستمهای فایل شبکه برای محاسبات دسکتاپ معمولی استفاده میکنیم. وقتی در Windows «یک درایو map میکنیم»، برای مثال، از یک سیستم فایل شبکه استفاده میکنیم.
یک تمایز حیاتی بین ذخیرهسازی بلاک و ذخیرهسازی فایل که باید از هم جدا شود این است که، در حالی که هر دو به طور بالقوه میتوانند بر روی یک شبکه باشند و به چندین ماشین کلاینت اجازه اتصال بدهند، فقط دستگاههای ذخیرهسازی فایل قابلیت میانجیگری آن دسترسی را دارند. این بسیار مهم است و نمیتوان از آن گذشت.
ذخیرهسازی بلاک به عنوان یک هارد درایو ظاهر میشود. اگر به سادگی یک هارد درایو را به دو یا بیشتر کامپیوتر به طور همزمان وصل کنید، میتوانید تصور کنید چه اتفاقی خواهد افتاد – هر کدام از دیگری بیخبر خواهند بود و از فایلهای جدیدی که ایجاد میشوند، تغییراتی که دیگران انجام میدهند بیخبر خواهند بود و سیستمها به سرعت شروع به بازنویسی یکدیگر خواهند کرد. اگر سیستم فایل شما بر روی همه نودها فقط خواندنی باشد، این مشکل نیست. اما اگر هر سیستمی در حال نوشتن یا تغییر دادهها باشد، بقیه مشکل خواهند داشت. این معمولاً به خرابی دادهها به سرعت منجر میشود، معمولاً در عرض چند دقیقه. برای دیدن این در عمل به شکل افراطی، تصور کنید دو یا سه سیستم کلاینت همه باور کنند که دسترسی انحصاری به یک هارد درایو دارند و همه آنها آن را به طور همزمان defragment کنند. تمام دادههای روی درایو در عرض چند ثانیه درهم میریزند.
از طرف دیگر یک دستگاه ذخیرهسازی فایل میانجیگری طبیعی دارد چون سیستم فایل شبکه ارتباطات برای دسترسی به سیستم فایل واقعی را مدیریت میکند و سیستمهای فایل، به طور ذاتی، به طور طبیعی چند-کاربره هستند. بنابراین اگر یک سیستم متصل به یک دستگاه ذخیرهسازی فایل تغییری ایجاد کند، همه سیستمها بلافاصله از این تغییر آگاه میشوند و «پا روی پای یکدیگر نمیگذارند». حتی اگر تلاش کنند سیستم فایل دستگاه ذخیرهسازی فایل دسترسی را میانجیگری میکند و حرف آخر را میزند و اجازه این اتفاق را نمیدهد. این اشتراکگذاری داده را برای کاربران نهایی آسان و شفاف میکند. (من از اصطلاح «کاربران نهایی» در اینجا برای شامل کردن مدیران سیستم استفاده میکنم.)
این به معنی این نیست که هیچ وسیلهای برای به اشتراکگذاری ذخیرهسازی از یک دستگاه بلاک وجود ندارد، اما میانجیگری آن نمیتواند توسط خود دستگاه ذخیرهسازی بلاک انجام شود. دستگاههای ذخیرهسازی بلاک با استفاده از آنچه به عنوان یک سیستم فایل خوشهای شناخته میشود «قابل اشتراکگذاری» میشوند. این نوع سیستمهای فایل از زمانی که خوشههای سرور منابع ذخیرهسازی را با داشتن دو سرور متصل با یک کنترلر SCSI در هر دو طرف یک کابل SCSI و درایوهای مشترک متصل به وسط کابل به اشتراک میگذاشتند به وجود آمدند. تنها وسیلهای که سرورها میتوانستند از طریق آن ارتباط برقرار کنند سیستم فایل بود و بنابراین سیستمهای فایل خوشهای خاصی توسعه یافتند که اجازه میداد ارتباطاتی بین دستگاهها وجود داشته باشد و هر کدام از تغییراتی که توسط دیگری ایجاد شده از طریق خود سیستم فایل آگاه شوند. این در واقع به طرز شگفتآوری خوب کار میکند اما سیستمهای فایل خوشهای نسبتاً نادر هستند با GFS از Red Hat و OCFS از Oracle که برخی از معروفترینها در دنیای سرور سنتی هستند و VMFS بسیار جدیدتر از VMware که از طریق استفاده از آن برای ذخیرهسازی مجازیسازی بسیار مشهور شده است. کاربران عادی، از جمله مدیران سیستم، ممکن است به سیستمهای فایل خوشهای دسترسی نداشته باشند یا نیازهایی داشته باشند که اجازه استفاده از آنها را ندهد. نکته مهم این است که میانجیگری از طریق اعتماد انجام میشود، نه از طریق اجبار، مانند دستگاه ذخیرهسازی فایل. با یک دستگاه ذخیرهسازی فایل، خود دستگاه میانجیگری دسترسی را انجام میدهد و هیچ راهی دور آن وجود ندارد. با دستگاههای ذخیرهسازی بلاک که از یک سیستم فایل خوشهای استفاده میکنند، هر دستگاهی که به ذخیرهسازی متصل میشود میتواند سیستم فایل خوشهای را نادیده بگیرد و به سادگی میانجیگری غیرفعال را دور بزند – این آنقدر ساده است که معمولاً به طور تصادفی اتفاق میافتد. میتواند هنگام mount کردن سیستم فایل و مشخص کردن نوع سیستم فایل اشتباه یا از طریق رفتار نادرست درایو یا هر اقدام مخربی اتفاق بیفتد. بنابراین امنیت دسترسی در سطح شبکه برای محافظت از ذخیرهسازی سطح بلاک حیاتی است.
مفهوم زیربنایی که در اینجا ارائه میشود این است که دستگاههای ذخیرهسازی بلاک دستگاههای «کودن» (به هارد درایو با جلوه بیشتر فکر کنید) و دستگاههای ذخیرهسازی فایل دستگاههای «هوشمند» (به سرور سنتی فکر کنید) هستند. دستگاههای ذخیرهسازی فایل باید حاوی یک «کامپیوتر» کامل کاری با CPU، حافظه، ذخیرهسازی، سیستم فایل و شبکهسازی باشند. دستگاههای ذخیرهسازی بلاک ممکن است این چیزها را داشته باشند اما نیازی نیست. در سادهترین شکلشان، دستگاههای ذخیرهسازی بلاک میتوانند چیزی بیش از یک هارد درایو با یک آداپتور USB یا Ethernet متصل به آن نباشند. در واقع نادر نیست که آنها چیزی بیش از یک کنترلر RAID به علاوه آداپتورهای Ethernet یا Fiber Channel برای اتصال نباشند.
در هر دو مورد، دستگاه ذخیرهسازی بلاک و دستگاههای ذخیرهسازی فایل، میتوانیم تا دستگاههای بسیار ساده کوچک شویم یا میتوانیم به سیستمهای فوقدر دسترس با کلاس «مینفریم» عظیم افزایش دهیم. هر دو میتوانند سریع یا کند باشند. یکی بهتر یا بدتر نیست، یکی بالاتر یا پایینتر نیست، یکی سازمانیتر یا کمتر سازمانی نیست – آنها متفاوت هستند و عموماً اهداف متفاوتی را دنبال میکنند. و ویژگیهای پیشرفتهای وجود دارد که هر کدام ممکن است داشته باشند یا نه. چالش در دانستن کدام یک برای کدام کار مناسب است میآید.
من دوست دارم پروتکلهای ذخیرهسازی بلاک را یک جریان «standard out» در نظر بگیرم، مشابه خط فرمان. بنابراین سطح پایه هر «خط لوله» ذخیرهسازی همیشه یک دستگاه بلاک است و دستگاههای بلاک متعدد یا تبدیلها میتوانند وجود داشته باشند که هر کدام به دیگری pipe میشوند تا زمانی که خروجی یک پروتکل ذخیرهسازی بلاک باقی بماند. ما فقط زنجیر را زمانی که یک سیستم فایل اعمال میکنیم پایان میدهیم. به این ترتیب RAID سختافزاری، RAID شبکهای، مدیریت حجم منطقی و غیره میتوانند در ترکیبهای متعدد بر حسب نیاز اعمال شوند. ذخیرهسازی بلاک واقعاً نه تنها بلاکهای داده بلکه بلوکهای ساختمانی سیستمهای ذخیرهسازی است.
یک نکته بسیار جالب این است که از آنجا که دستگاههای ذخیرهسازی بلاک میتوانند زنجیروار باشند و از آنجا که دستگاههای ذخیرهسازی شبکه باید ذخیرهسازی بلاک را به عنوان «ورودی» خود بپذیرند، در واقع بسیار رایج است که یک دستگاه ذخیرهسازی بلاک (SAN) به عنوان ذخیرهسازی پشتیبان برای یک دستگاه ذخیرهسازی فایل (NAS) استفاده شود، به خصوص در سیستمهای سطح بالا. آنها میتوانند در یک شاسی واحد همزیستی کنند یا میتوانند به صورت همکاری بر روی شبکه کار کنند.
