راهکارهای متن باز برای Network Attached Storage

اینم یه تجربه پراکنده دیگه!

امروز میخوام درباره Network Attached Storage یا همون NAS یکم بنویسم. خب از اونجایی که من علاقه‌مند به سیستم های متن بازم پس بازهم در مورد راهکارهایی که متن باز این سیستم رو پیاده‌سازی میکنن حرف میزنم. فکر کنم که بهتره هرچه سریعتر لیست این محصولات رو بگم:

من متاسفانه هیچکدوم از این محصولات رو توی خونه ندارم ولی دوست داشتم که یه کامپیوتر کم مصرف داشتم که بتونم یه دونه رو راه بندازم. اما توی شرکت ما از NAS4Free استفاده می‌کنیم که تا الان با کیفیت خوبی جواب کارمون رو داده.

پروتکل‌های ارتباطی که معمولا هر کدوم از این محصولات پشتیبانی میکنند هم توی لیست پایین اومدن:

فکر میکنم یکی دیگه از اطلاعاتی که مهمه مقایسه این محصولات با همه که با توجه به جستجوهای من در اینترنت این مقالات رو پیدا کردم که فکر کنم به درد بخوره

مقایسه FreeNAS با Openfiler توی این لینک پیدا میشه

مقایسه FreeNAS با NAS4Free توی این لینک پیدا میشه

همین!

ماجرای تکنولوژیک من و خانه ام : من و تلوزیون هوشمندم

با یه تجربه پراکنده دیگه برگشتم

ما یه چند وقته که توی خونه به سبک بچه پولدارا رفتیم و یه تلوزیون هوشمند سامسونگ خریدیم. البته بگم که تقریبا ضعیف ترین تلوزیون هوشمند رو خریدیم. خب به هر حال در ابتدای استفاده کلی باهاش حال کردیم که ایول اینترنت داره و برنامه روش نصب میشه و از این حرفا اما آخرش دیدم که نه این امکاناتش آش دهن سوزی هم نیست. پس بیخیال شدیم. اما از یه ویژگیش من خیلی خوشم اومد و اون رو میخوام اینجا تا حدی معرفی کنم. اسم اون امکان dlna هست.

خب این یعنی که تلوزیون شما به عنوان کلایتنت یه سرور dlna میتونه عمل کنه و خب این خیلی خوبه. چون این تکنولوژی اجازه میده که فیلم، صدا و تصویر از طریق شبکه به تلوزیون برسه و تلوزیون اون رو پخش کنه. البته اسم این تکنولوژی توی محصولات سامسونگ allShare هست که خب یه اسم تجاریه و چیزی جز یه کلاینت dlna نیست.

کار که من کردم ساده بود. اول کلی گشتم ببینم این allShare چیه؟ وقتی پیداش کردم که همون سرور dlna هست گشتم و یه پیاده سازی لینوکسی از این سرور رو روی همون کامپیوتری که توی پست «ماجراهای تکنولوژیک من و خانه ام» گفتم نصب کردم و حالا اون کامپیوتر قدیمی من کار پخش فیلم رو هم برعهده گرفته. تنها کاری که من میکنم اینه که فیلما رو توی یه فولدر اون کامپیوتر قرار میدم و کار تمومه.

خب یه سری اطلاعات فنی هم بدم که این داستانی که تعریف کردم یکم هم با تکنولوژیک داشته باشه. اونم اینه که سرورهای dlna زیادی وجود داره که من فقط اینجا اسم میبرم و یه لیست کوچیک رو ازشون معرفی میکنم

  • سرور allshare که یه سرور تحت ویندوزه که بصورت مجانی توسط خود سامسونگ ارائه میشه
  • سرور serviio که یه سرور اپن سورسه که لایسنس پولی هم داره. بخاطر جاوایی بودنش تمام سیستم عامل‌ها رو پشتیبانی میکنه و از تغییراتی که شرکت‌های پیاده ساز این تکنولوژی در راستای محصول سازی رو استاندارد دادن بخوبی پشتیبانی میکنه
  • سرور minidlna که سرور محبوب منه چون به رم و سی پی یو کمی نیاز داره و روی کامپیوتر من که کلی چیز دیگه هم روش داره ران میشه
  • نسخه‌های جدید xbmc که یه برنامه به عنوان media center هست هم این امکان رو فراهم میکنه.

لیست بیشتر این سرورها رو میتونید توی این آدرس پیدا کنید.

اشتراک فایل با bittorrent sync

توی پست قبلم در مورد جایگزین های سرویس ذخیره سازی فایل در فضای ابری (Cloud) مثل Dropbox یه مطلب نوشتم. حالا یکی از خواننده‌ها بسیار معدود این بلاگ گفته بود اگه با bittorrent sync کار کردم تجربم رو بنویسم. من هم که عمرا بتونم به یه چنین درخواستی جواب نه بدم به همین خاطر الان دارم مینویسم

کل راه اندازی خیلی خیلی ساده بود. تست من روی لپ تاپم با سیستم فدورا ۱۸ نسخه ۶۴ بیتی و یه پی سی قدیمی که کار فایل سرور خونه رو انجام میده با سیستم عامل اوبونتو ۱۲٫۰۴ نسخه ۶۴ بیتی تست کرد. تنها کاری که کردم از سایت اصلی فایل مربوطه رو دانلود کردم و اجرا کردم. تنها نکته قابل اشاره اینه که شاید توی لینوکس این فایل‌(btsync) دسترسی اجرایی نداشته باشن که شما باید این دسترسی رو براشون ایجاد کنید.

با انجام این کار روی آدرس http://my_ip_adress:8888/gui سرویس btsync اجرا شده و آماده است.

صفحه اصلی btsync

صفحه اصلی btsync

پس از اینکار حالا باید یه فولدر رو انتخاب کنید و براش یه secret بسازید. برای این کار کافیه رو دکمه generate کلیک کنید.

انتخاب فولدر btsync

انتخاب فولدر btsync

خب حالا کافیه همین کار رو در سمت دیگه (کامپیوتر دومتون) انجام بدید و این دفعه بجای زدن دکمه generate کافیه که secret که در کامپیوتر اول درست کردید رو اینجا هم وارد کنید. و کار تمامه

البته شما سطوح دسترسی هم دارید که میتونید اون رو بصورت که تو شکل زیر میبینید کنترل کنید. که شامل نحوه بروزرسانی و امکان دسترسی فقط خواندنی به فولدر یا حتی تغییر secret فعلی به منظور حذف دسترسی افرادی که الان دسترسی دارن به این فولد هست.

تنظیمات اولیه btsync

تنظیمات اولیه btsync

Selection_004

تنظیمات پشرفته btsync

 

مجازی سازی و تکنولوژی‌های مرتبط

پیش نوشت: یکم با خودم درگیرم که چطور باید نوشت. هدفم از نوشتن اینجا ارائه سرنخ‌هایی هست که اگه کسی خواست، بتونه بره و مابقی ماجرا رو پیگیری کنه.

خب بعد از این پیش نوشت برم سراغ قصه اصلی این پست که مجازی سازیه. این روزا با داغ شدن بحث پردازش ابری و مجازی سازی هرکی رو هرجا میبینی فارغ از اینکه واقعا مجازی سازی بهش تو کارش کمک میکنه یا نه، یا اینکه مجازی سازی تو استخدام شدنش کمک میکنه یا نه؟ یه خطابه کامل واسه شما از مزایاش میگه. منم گفتم اون چیزایی که به نظرم جالبه اومده رو توی این پست بگم شاید به درد کسی بخوره

خب تکنولوژی‌های مختلفی وجود داره که باهاش مجازی سازی صورت میگیره که خب به طبع من دوست دارم متن باز هاش رو معرفی کنم. خیلی هم هدف معرفی عمیق این تکنولوژی‌ها و سرویس‌ها نیست. هدفم اینه که از نقطه نظر خودم که یه مهندس نرم افزار یا توسعه دهنده هستم ببینم چه تکنولوژی‌هایی وجود داره و چطور میشه از اون برای «بهبود زندگی» یه برنامه نویس استفاده کرد.

لیست این تکنولوژی‌ها از این قرارن

اما نکته قابل توجهی که به نظر من مهمه اینه که از منظر یه شرکت که قراره یه سرویس مجازی سازی ارائه کنه و بفروشه یا اینکه سرویس‌های اصلی شرکتش رو به این زیرساخت‌ها مهاجرت بده مساله انتخاب بین این تکنولوژی‌ها بسیار مهم میشه. اما در سطح توسعه دهنده‌ها خیلی اهمیت خاصی نداره که از کدوم یک از این سیستم‌ها استفاده می‌شه. من تقریبا تمام کارهای خودم رو با استفاده از kvm و virtual box‌ انجام میدم. 

حالا علاوه بر اینها سیستم عامل‌هایی اومدن اختصاصی سازی شدن برای بوجود آوردن زیر ساخت مجازی سازی. یعنی شبیه vmWare ESXi یه سیستم عامل هستن که بهینه شدند که مجازی ساز شما باشن. خب اکثر این سیستم ها مجانی نیستن و شما بایستی ساپورت اونها رو از شرکت تولید کننده بخرید اما نسخه‌های مجانی هم وجود دارند که قابل بررسی هستن. تفاوت این سیستم‌ها در بسته‌هایی که بصورت پیشفرض نصب و پیکر بندی شدن هست نه چیز دیگه‌ای. اما نکته قابل توجه اینه که شما با گذاشتن وقت و زمان کافی میتونید یه سیستم عامل مثل دبیان رو تبدیل کنید به سیستمی شبیه این سیستم. لیست این سیستم عامل‌هایی که تا حالا من پیدا کردم هم ایناست

  • Redhat Enterprise Virtualization
  • Promox Ve
  • Ubuntu Cloud

البته من سعی کردم بیشتر بگردم اما سیستم‌عامل‌های دیگه‌ای پیدا نکردم اما اگه شما میشناسید سیستمی رو بگید که به این لیست اضافه شه.

حالا برم سراغ استفاده من. من در یه محیط چند ریختی برنامه نویسی میکنم. یعنی اینکه یکم تحت ویندوز برنامه مینویسم، یکم تحت جاوا که رو تام کت ران میشه و خیلی وقت‌ها بایستی تو یه سناریوی آزمایش یه چند تا کامپیوتر دارم یا در حالت ساده یه سرور میخوام که بصورت تستی نرم افزار رو روش تست کنم. در این موارد واقعا فرقی نداره که از kvm استفاده کنم یا از virtual box و اکثر اوقات از kvm  استفاده میکنم مگر اینکه مجبور باشم با مثلا یو اس بی کاری انجام بدم که توی virtual box سر راست تره.

چرا گنو/لینوکس را دوست دارم؟ یا چه جوری کل پهنای باند ممکن رو نوش جان کنید

خب به نظر میرسه وبلاگ من رو خاک گرفته! میدونم و تنها دلیلی که دارم الان مینویسم اینه دلم رزبری پی میخواد. البته بگم که من یه دونه پاندابرد دارم ولی دلم یکی از اینا رو هم میخواد.

قبلش بگم که این کار اندکی شیطنت و شیطان صفتی توش داره پس اگه خواستید انجامش بدید وجدان داشته باشید

این داستانی که میخوام براتون تعریف کنم توی چله تابستون وقتی که کسی دانشگاه نیست اتفاق افتاده و خب ما چون پایه ثابت خوابگاه بودیم! بودیم!اون سالی که من دانشجو بودم و این اتفاق افتاد دانشگاه صنعتی امیرکبیر اینترنتش رو از طریق سه یا چهارتا پروکسی squid به دانشجوها و اساتیدش در مقاطع مختلف ارائه میداد. اون سال بخاطر چله تابستون بودن دوستان انفورماتیک زحمت کشیده بودن و به همه بدون پسورد سرویس میدادن. یعنی هیچ یک از پراکسی ها پسورد نداشت و تنها محدودیت رو روی آی پی آدرس شما اعمال میکردن و شما رو محدود میکردن خب شما هم اگه جای من بودید دوست داشتید از این فرصت بوجود اومده استفاده کنید.

کل کاری که من کردم این بود که اولا تعداد آی پی هام توی لینوکسم که اگه اشتباه نکنم یه فدورا ۱۵ بود زیاد کردم. یه برنامه پیدا کردم که بتونیم بین پراکسی‌های مختلف تقسیم بار انجام بدم و خب یه سری بازی wii داشتم که میخواستم از megaupload خدا بیارمز دانلودش کنم. خب سعی میکنم که مرحله به مرحله توضیح بدم که چیکار کردم

اول : تقسیم بار روی سرور ها اولین کاری که کردم با استفاده از یه دستور خوب لینوکس به اینترفیس شبکه ام به تعداد کافی آی پی دادم

خب مرحله بعد این بود که بتونم با استفاده از هریک از این آدرسها به اون پروکس‌ها وصل بشم. تحقیقات بسیاری در این زمینه انجام دادم که چطوری این عمل امکان پذیره اما نمیدونم چطور (پیری و هزار عیب) به این نتیجه رسیدم که یه ابزار بسیار خوب برای این کار که خیلی هم ساده عمل میکنه وجود داره به اسم balance که این کار رو به شکل ساده و خیلی راحتی انجام میده تنها نیاز بود که من بگم روی کدوم آدرس به کدوم یک از پروکسی ها وصل بشه. کاری که بالانس میکنه یه پروکسی دیگه بوجود میاره که هر درخواست به اون روی مابقی پروکسی ها تقسیم میشن به همین سادگی. پس کاری که من کردم این بود که به ازای هر آی پی یک بالانس بالا آوردم و در نهایت یک بالانس در لایه بالاتر همه این بالانسهای رو به هم متصل میکرد که کدش تو پایین اومده

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

دوم: دانلود بدون نظارت از megaupload چند تا مشکل توی دانلود از megaupload وجود داشت. یکی اینکه مگا آپلود فی…ل…تر بود. خب راه حلش چی میتونست باشه. من گشتم و گشتم تا متوجه شدم که میشه آدرس سایت رو به این صورت هم استفاده کرد whateveryoucouldthinkof.megaupload.com خب این کشف بزرگی بود و خوشبختانه اکثر این آدرسا فیلتر نبود. پس اول مشکل به حول و قوت خود مگا آپلود حل شد. مشکل بعدی این بود که این سایت برای اینکه بگذاره ما ازش دانلود کنیم نیاز به یوزر نیم و پسورد داشت که معنیش این بود که باید یه بروزر بصورت دستی لاگین بشه تا بشه ازش استفاده کرد. راه حل این مساله هم خدا رو شکر ساده بود. با استفاده از گوگل و یکم سرک کشیدن اینور اونر متوجه شدم اگه بتونم کوکی لاگین رو بسازم میتونم به خیلی از برنامه های دانلود که از خط فرمان پشتیبانی میکنن این کوکی رو میخونن و کارشون رو انجام میدن. خط فرمانی که من برای لاگین کردن به مگا آپلود پیدا کردم این بود

که یه فایل کوکی به نام cook میساخت. حالا میموند اینکه من از یه برنامه با تعداد کانکشن زیاد و بصورت همزمان فایلها رو دانلود کنم. اونم به کمک دانلودر قوی aria2 حل شد. با استفاده از این دانلودر میتونستم لیستی از فایلها رو بهش بدم و بگم به چند تا کانکشن همزمان اونها رو دانلود کن. دستور دانلودم هم این بود

خب بعدش واسه اینکه کل فایلها رو یکجا بتونم دانلود کنم از یه شل اسکریپت دیگه استفاده کردم که اونم اینجا میارمش

خب حالا بریم سراغ مرحله بعد.

مرحله سوم : استخراج اتوماتیک لیست فایلها از متن یک صفحه وب بسیاری از جزئیات این بخش رو یادم نمیاد و خب خیلی هاش رو هم دستی انجام دادم. اما کلیت این بود که متن‌های تکرار شونده (تگ های html و …) توی لیست رو پیدا کردم و حذف کردم. بعدش یه پارسر با سی پلاس پلاس نوشتم‌(اون زمان به awk و sed و …) مسلط نبودم و فایلها رو استخراج کردم که توی هر کردوم یه چیری شببه این بود

همین به کسی پیشنهاد نمیکنم که این کار رو انجام بده اما من انجام دادم و لذتش رو بردم. یادم رفت بگم من اون زمان میتونستم توی یک شب تا صبح (چون در طول روز نامردی بود استفاده از این تریک) میتونستم نزدیک به ۸۰ گیگ از اینترنت دانلود کنم و بخاطر این موفقیت به خودم و لینوکسم میبالم!