اثر پارک ژوراسیک
“اگر اجازه بدید… اِم، مشکل قدرت علمی که اینجا استفاده میکنید را به شما میگویم؛ برای به دست آوردن آن نیازی به انضباط نداشتید. شما خواندید که دیگران چه کردهاند و قدم بعدی را برداشتید. دانش را برای خودتان به دست نیاوردید، پس هیچ مسئولیتی در قبال آن نمیپذیرید. روی شانههای نابغهها ایستادید تا در سریعترین زمان ممکن به چیزی دست یابید، و قبل از اینکه حتی بدانید چه دارید، آن را ثبت اختراع کردید، بستهبندی کردید، روی یک جعبه ناهار پلاستیکی چسباندید، و حالا …” – دکتر ایان مالکوم، پارک ژوراسیک
هنگام بررسی ساخت یک سرور ذخیرهسازی یا NAS، احساس رایجی وجود دارد که آنچه مورد نیاز است یک “سیستمعامل NAS” است. این یک واکنش عجیب است، به نظر من، چون اصطلاح NAS چیزی بیشتر از یک “فایل سرور با رابط ذخیرهسازی اختصاصی” به معنا ندارد. یا به عبارت دیگر، فقط یک فایل سرور با قابلیتهای محدود. دلیل اینکه ما دستگاههای فیزیکی NAS را انتخاب میکنیم، پشتیبانی یکپارچه و گاهی اوقات قابلیتهای اختصاصی ویژه است (NetApp یک مثال کلیدی از این ارائه با یکپارچهسازی گسترده SMB و NFS و برخی گزینههای RAID و فایل سیستم واقعاً منحصر به فرد است، یا Exablox که ذخیرهسازی فایل مقیاسپذیر کاملاً مدیریتشده و محافظت به سبک RAIN ارائه میدهد.) استفاده از NAS به جای یک فایل سرور سنتی، در اکثر موارد، پدیدهای نسبتاً اخیر است و من دریافتهام که اغلب توسط سوءتفاهم یا این تصور هدایت میشود که مدیریت یک فایل سرور، که یکی از پایهایترین بارهای کاری IT است، ویژه یا سخت است. فایل سرورها به طور کلی پایهایترین شکل سرور در نظر گرفته میشوند و به طور سنتی منظور مردم از استفاده از اصطلاح سرور بود، مگر اینکه توضیح اضافهای اضافه میشد، و تنها شکلی که معمولاً در دسکتاپ یکپارچه شده است (هر Mac، Windows و Linux دسکتاپ میتواند به عنوان فایل سرور عمل کند و انجام این کار بسیار رایج است.)
البته، هیچ ایرادی در استفاده از NAS به جای یک فایل سرور سنتی برای تأمین نیازهای ذخیرهسازی شما وجود ندارد، به خصوص که برخی گزینههای مدرن NAS، مانند Exablox، گزینههای مقیاسپذیری و ذخیرهسازی ارائه میدهند که در اکثر سیستمعاملها در دسترس نیستند. اما به نظر میرسد روند استفاده از NAS به جای یک فایل سرور منجر به برخی رفتارهای عجیب شده است که متخصصان IT هنگام بازگشت به بررسی گزینههای فایل سرور نشان میدهند. یک اثر آبشاری، به گمانم، که دلایل ترجیح NAS و تفکر هدفگرا گم میشود و ایده نتیجهگیر “باید NAS داشته باشم” باقی میماند، به طوری که وقتی به بررسی گزینههای فایل سرور بازمیگردیم، انگیزهای برای “داشتن NAS” وجود دارد صرف نظر از اینکه دلیل منطقی برای این احساس وجود دارد یا نه.
ابتدا باید در نظر بگیریم که مفهوم کلی NAS ساده است: یک فایل سرور سنتی را بردارید، آن را با حذف گزینهها ساده کنید و آن را با تمام سختافزار لازم برای ساخت یک دستگاه سادهشده با تمام پشتیبانیهای لازم از رابط تا دیسکهای چرخان و همه چیز در بین آنها بستهبندی کنید. ذخیرهسازی زمانی میتواند پیچیده باشد که کاربران نیاز به تعیین سطوح RAID، انواع درایو، نظارت موثر و غیره داشته باشند. یک NAS این مشکل را با یکپارچهسازی سختافزار در پلتفرم حل میکند. این کار را ساده میکند اما میتواند ریسک ایجاد کند چون گزینههای پشتیبانی کمتری دارید و توانایی کمتری برای تعمیر یا تعویض چیزها به تنهایی دارید. انتقال از یک فایل سرور به یک دستگاه NAS واقعاً تقریباً به طور انحصاری درباره پشتیبانی است و به طور کلی تعهد بسیار قوی به یک فروشنده واحد است. روش NAS را انتخاب میکنید چون میخواهید برای همه چیز به یک فروشنده وابسته باشید.
وقتی به فایل سرور میرویم در جهت مخالف حرکت میکنیم. یک فایل سرور یک سرور سنتی شرکتی مانند هر سرور دیگری است. سختافزار سرور را از یک فروشنده (HP، Dell، IBM و غیره) و سیستمعامل را از فروشنده دیگری (Microsoft، Red Hat، Suse و غیره) میخرید. قطعات و پیکربندی مورد نیاز را مشخص میکنید و رایجترین مدل محاسباتی برای تمام IT را دارید. با این مدل به طور کلی از قطعات استاندارد و کالایی استفاده میکنید که به شما امکان میدهد به راحتی بین فروشندگان سختافزار و فروشندگان نرمافزار جابجا شوید. گزینههای “افزونگی فروشنده” دارید و به طور کلی همه چیز با استفاده از پروتکلهای باز و استاندارد انجام میشود. انعطافپذیری زیادی دارید و میتوانید فایل سرور خود را مانند هر عضو دیگری از ناوگان سرورتان مدیریت و نظارت کنید، از جمله نگه داشتن آن به صورت کاملاً مجازی. یکپارچهسازی عمودی NAS را در ازای انعطافپذیری افقی و استانداردسازی واگذار میکنید.
پس چه چیزی عجیب است وقتی به مدل کالایی بازمیگردیم اما به دنبال آنچه به عامیانه “سیستمعامل NAS” شناخته میشود هستیم؟ مثالهای رایج شامل NAS4Free، FreeNAS و OpenFiler میشوند. این دسته از محصولات به طور کلی چیزی بیشتر از یک سیستمعامل استاندارد (اغلب FreeBSD چون دارای مجوز ایدهآل است، یا Linux چون به خوبی شناخته شده است) با یک “رابط ذخیرهسازی” روی آن و هیچ قابلیت ویژه یا اضافی که با سیستمعامل معمولی وجود نداشته باشد نیستند. در تئوری آنها یک سیستمعامل “تککاره” هستند که فقط یک کار میکند. اما این واقعیت نیست. آنها سیستمعاملهای چندمنظوره با یک لایه مدیریت GUI اضافی روی آنها هستند. میتوان همین را در مورد اکثر محصولات فیزیکی NAS هم گفت، اما آنها معمولاً شامل مهندسی سفارشی حتی در سطح ذخیرهسازی، ویژگیهای خاص و مهمترین چیز، پشتیبانی یکپارچه و جداسازی واقعی “عمومیت” سیستمعامل زیرین هستند. یک “سیستمعامل NAS” نسخه سادهتری از یک سیستمعامل چندمنظوره نیست، بلکه نسخهای پیچیدهتر اما کمکارتر از آن است.
آنچه علاوه بر این عجیب است این است که سیستمعاملهای عمومی، با استثنای نادر، از قبل دارای رابطهای ذخیرهسازی بسیار ساده، بسیار شناختهشده و کاملاً پشتیبانیشده هستند. تقریباً هر نوع سرور Windows یا Linux، برای مثال، برای مدت بسیار طولانی شامل رابطهای گرافیکی ساده برای این توابع بوده است. این GUIهای موجود اغلب توسط مدیران سیستم به عنوان “سنگین و غیرضروری” برای یک فایل سرور ساده کنار گذاشته میشوند. پس حتی عجیبتر است که اضافه کردن یک GUI شخص ثالث، که توسط تیم سیستمعامل وصله و آزمایش نشده و به صورت استاندارد شناخته شده و پشتیبانی نمیشود، سپس مطلوب باشد چون این با اصول و روشهای رایج استفاده از سرور مخالف است.
و اینجاست که اثر پارک ژوراسیک وارد میشود – فروشندگان سیستمعامل (Red Hat، Microsoft، Oracle، FreeBSD، Suse، Canonical و غیره) غولهایی با تیمهای مهندسی شگفتانگیز، بررسی کد، آزمایش، نظارت و اکوسیستمهای پشتیبانی شرکتی هستند. در حالی که فروشندگان “سیستمعامل NAS” به طور کلی شرکتهای بسیار کوچک هستند، برخی با فقط یک نفر پارهوقت، که روی شانههای این غولها میایستند و چیزی میسازند که میدانستند میتوانند اما هرگز نپرسیدند آیا باید. محصولات نتیجهگیر کاملاً منفی در مقایسه با همتایان خالص سیستمعامل هستند، مدیریت سیستمها را آسانتر نمیکنند و نه خلأی در ارائه خدمات بازار پر میکنند. ذخیرهسازی قابل اعتماد، پایدار و آسان استفاده از قبل موجود است، فروشندگان بیشتری برای پر کردن این جایگاه در بازار مورد نیاز نیستند.
منطق اغلب به نگاه به سیستمعامل NAS اعمال میشود این است که آنها “راحت راهاندازی میشوند”. این ممکن است درست باشد یا نباشد چون آسان در اینجا باید یک اصطلاح نسبی باشد. برای اینکه هر ارزشی داشته باشد، یک سیستمعامل NAS باید در مقایسه با نسخه استاندارد همان سیستمعامل آسان باشد. پس در مورد FreeNAS، این به معنای FreeBSD خواهد بود. FreeNAS باید به قدر کافی راحتتر از FreeBSD برای همان توابع اختصاصی باشد. و این به راحتی درست است، راهاندازی یک سیستمعامل NAS به طور کلی نسبتاً آسان است. اما این آسانی فقط یک پاناسه است و یکی که متخصصان IT باید کاملاً از آن آگاه باشند. آسان کردن راهاندازی یک اولویت در IT نیست، آنچه مهم است این است که چیزی بسازیم که راحتتر بهرهبرداری و تعمیر شود وقتی مشکل پیش میآید. آسان راهاندازی شدن خوب است، اما اگر با هزینه عدم درک نحوه پیکربندی سیستم همراه باشد و تعمیرات عملیاتی را دشوارتر کند، چیز بسیار بسیار بدی است. محصولات سیستمعامل NAS به طور معمول به خطرناکی آسان میکنند که یک محصول در نقش ذخیرهسازی به تولید برود، که تقریباً همیشه حیاتیترین یا تقریباً حیاتیترین نقش هر سرور در یک محیط است، که IT هیچ تجربه یا احتمالاً مهارتی برای حفظ، بهرهبرداری یا، مهمتر از همه، تعمیر در زمان اشتباه ندارد. ما دقیقاً به عکس نیاز داریم، سیستمی که راحتتر بهرهبرداری و تعمیر شود. این چیزی است که اهمیت دارد. پس یک مورد دوم از “ایستادن روی شانههای غولها” داریم و سیستمی میسازیم که میدانستیم میتوانیم، اما نمیدانستیم آیا باید.
آنچه این مشکل را تشدید میکند این است که درست همان افرادی که احساس نیاز به استفاده از سیستمعامل NAS برای “آسان کردن ذخیرهسازی” میکنند، به دلیل ماهیت سیستمعامل NAS، دقیقاً همان افرادی هستند که پشتیبانی عملیاتی و تعمیر سیستم برایشان دشوارترین است. مدیران سیستمی که با سیستمعامل زیرین راحت هستند به طور طبیعی سیستمعامل NAS را به عنوان یک مزیت نمیبینند و در اکثر موارد از آن اجتناب میکنند. منحصراً افرادی که خطرناکترین است که یک پلتفرم ذخیرهسازی کاملاً درک نشده را اجرا کنند، کسانی هستند که احتمالاً آن را امتحان میکنند. و البته اکثر فروشندگان سیستمعامل NAS پول خود را، همانطور که میتوانستیم پیشبینی کنیم، از تماسهای پشتیبانی پس از نصب برای مشتریانی که پیادهسازی کردهاند و پس از رفتن به تولید گیر کردهاند به دست میآورند تا در رحمت فروشندگان برای قیمتهای پشتیبانی گزاف باشند. به نفع فروشندگان است که نصب را آسان و تعمیر را سخت کنند. همه چیز در اینجا علیه متخصص IT است.
اگر یک مثال رایج بگیریم و به FreeNAS نگاه کنیم میتوانیم ببینیم که چرا این یک همسویی ضعیف “دشواریها” است. FreeNAS همان FreeBSD است با یک رابط اضافی روی آن. هر چیزی که FreeNAS میتواند انجام دهد، FreeBSD هم میتواند. با رفتن به FreeBSD هیچ از دست دادن قابلیتی وجود ندارد. وقتی چیزی خراب میشود، در هر صورت، مدیر سیستم باید دانش کاری خوبی از FreeBSD داشته باشد تا تعمیرات دقیقی انجام دهد. گریزی از این نیست. دانش FreeBSD در صنعت رایج است و دریافت کمک خارجی نسبتاً آسان است. استفاده از FreeNAS چندین عارضه اضافه میکند، بزرگترین آنها این است که هر سفارشیسازی انجام شده توسط GUI FreeNAS دانش خاصی است که برای رفع عیب علاوه بر دانشی که برای بهرهبرداری از FreeBSD از قبل مورد نیاز است لازم است. پس این یک مجموعه دانش بزرگ است و همچنین اشیاء بیشتری که ممکن است خراب شوند. همچنین یک مجموعه دانش نسبتاً نادر است چون FreeNAS یک محصول ذخیرهسازی خاص از یک فروشنده کوچک است و FreeBSD یک پلتفرم IT شرکتی بزرگ است (به علاوه تمام استفاده از FreeNAS استفاده از FreeBSD است اما فقط درصد کوچکی از استفاده از FreeBSD FreeNAS است.) پس میبینیم که استفاده از سیستمعامل NAS فقط بارها و بارها ریسک اضافه میکند.
این مشکل به جوامعی که اطراف این محصولات شکل میگیرند نیز منتقل میشود. اگر به جوامع اطراف FreeBSD، Linux یا Windows برای راهنمایی و کمک مراجعه کنید با تعداد زیادی از متخصصان IT، مدیران سیستم ماهر و کسانی با تجربه کسبوکار و شرکتی سر و کار دارید. البته، هواداران، ناآگاهان و دیگران هم شرکت میکنند، اما اینها پلتفرمهای IT شرکتی هستند و تمام دانش صنعت هنگام پیادهسازی این محصولات در دسترس شماست. این را با جامعه یک سیستمعامل NAS مقایسه کنید. به دلیل ماهیت آن، فقط افرادی که با مدیریت یک سیستمعامل استاندارد و/یا اصول ذخیرهسازی دست و پنجه نرم میکنند به یک بسته سیستمعامل NAS نگاه میکنند و به طور طبیعی عضویت در جوامع آنها را به شامل کردن فقط افرادی فیلتر میکند که از آنها بهترین کار را میتوان از آنها اجتناب کرد. این یک فرهنگ جدا از اطلاعات غلط و سوءتفاهم درباره ذخیرهسازی و محصولات ذخیرهسازی ایجاد میکند. افسانهها فراوانند، راهنمایی اغلب بیپروا و خطرناک میشود و بهترین روشهای صنعت نادیده گرفته میشوند انگار که دههها تجربه انباشته هرگز اتفاق نیفتاده است.
یک سیستمعامل NAS همچنین معمولاً تأخیرهایی در وصله کردن و بهروزرسانی ایجاد میکند. یک سیستمعامل NAS تقریباً همیشه و تقریباً به ضرورت از سیستمعامل والد خود در بهروزرسانیهای امنیتی و پایداری عقب خواهد بود و اغلب چندین ماه یا سال پشت سر ویژگیهای اصلی عقب میافتد. در یک سناریوی بسیار شناختهشده، OpenFiler بر اساس یک پایه غیرشرکتی بالادستی (RPath Linux) ساخته شد که فاقد پشتیبانی جامعه و فروشنده بود، شکست خورد و رها شد و کاربران پاییندستی را، شامل همه کسانی که از OpenFiler استفاده میکردند، بدون اکوسیستم مورد نیاز برای پشتیبانی از آنها رها کرد. استفاده از سیستمعامل NAS به معنای اعتماد نه تنها به فروشنده بزرگ، شرکتی و شناختهشده سیستمعامل اصلی است که سیستمعامل پایه را میسازد بلکه به فروشنده سیستمعامل NAS نیز است. و فروشنده سیستمعامل NAS با اختلاف بیشتری احتمال شکست خوردن را دارد اگر محصولات خود را بر اساس سیستمعاملهای پایه درجه شرکتی قرار دهند.
ذخیرهسازی یک عملکرد حیاتی است و نباید بیاحتیاطی با آن رفتار شود و نباید نادیده گرفته شود انگار که حیاتی بودنش وجود ندارد. سیستمعاملهای NAS ما را وسوسه میکنند که سریع نصب کنیم و فراموش کنیم، به این امید که هیچ چیز اشتباه نرود یا اینکه قبل از اتفاق بد افتادن به نقشها یا شرکتهای دیگر برویم. ما را برای شکست آماده میکند که شکست بیشترین تأثیر را دارد. وقتی یک سرور کاربردی معمول شکست میخورد همیشه میتوانیم فایلها را از ذخیرهسازیش کپی کنیم و از صفر شروع کنیم. وقتی ذخیرهسازی شکست میخورد، دادهها گم میشوند و سیستمها از کار میافتند.
“جان هاموند: همه پارکهای تفریحی بزرگ تأخیر دارند. وقتی در ۱۹۵۶ Disneyland را افتتاح کردند، هیچ چیز کار نمیکرد!
دکتر ایان مالکوم: بله، اما، جان، اگر دزدان دریایی کاراییب خراب شود، دزدان دریایی گردشگران را نمیخورند.”
وقتی ذخیرهسازی شکست میخورد، کسبوکارها شکست میخورند. گرفتن مسیر آسان برای راهاندازی ذخیرهسازی و نادیده گرفتن نیازهای پشتیبانی بلندمدت و جستجوی راهنمایی از جوامعی که مهندسان ذخیرهسازی و سیستمهای با تجربه را فیلتر کردهاند، ریسک را به طور چشمگیری افزایش میدهد. متأسفانه، ماهیت یک سیستمعامل NAS این است که همان دلیلی که مردم به آن روی میآورند (فقدان دانش فنی عمیق برای ساخت سیستمها) دقیقاً همان دلیلی است که باید از آن اجتناب کنند (نیاز بیشتر به پشتیبانی.) افرادی که سیستمعاملهای NAS را به طور موثر میتوانند به صورت ایمن استفاده کنند، کسانی که دانش بسیار عمیق و گسترده ذخیرهسازی و سیستمها دارند، به ندرت این محصولات را در نظر میگیرند چون برای آنها هیچ مزیتی ندارند.
در نهایت، در حالی که مفهوم یک سیستمعامل NAS شگفتانگیز به نظر میرسد، این یک پاناسه نیست و ارزش یک NAS از دنیای دستگاه فیزیکی به دنیای سیستمعامل نصبشده منتقل نمیشود و ارزش سیستمعاملهای استاندارد بسیار زیاد است تا سیستمعاملهای NAS بتوانند به طور موثر ارزش واقعی اضافه کنند.
“دکتر آلان گرانت: هاموند، پس از کمی فکر کردن، تصمیم گرفتم که پارک شما را تأیید نکنم.
جان هاموند: منم همینطور.”

