ساختن یک سیستم NAS خانگی ارزان قیمت در لینوکس

ساختن یک سیستم NAS خانگی ارزان قیمت در لینوکس

من نیز مانند بسیاری دیگر از کاربران مک بوک پرو با مشکل کمبود حافظه داخلی مواجه بودم. به طور دقیق تر، rMBP که من روزانه استفاده می کردم مجهز به یک SSD با ظرفیت تنها 256 گیگابایت بود که طبیعتاً برای مدت طولانی کافی نبود.

و هنگامی که علاوه بر همه چیز، شروع به ضبط ویدیو در طول پروازهایم کردم، وضعیت فقط بدتر شد. حجم فیلم‌های فیلم‌برداری شده پس از چنین پروازهایی بیش از 50 گیگابایت بود، و SSD 256 گیگابایتی ضعیف من خیلی زود پر شد و مجبور شدم یک درایو خارجی 1 ترابایتی بخرم. با این حال، پس از یک سال، دیگر نمی‌توانست حجم داده‌ای را که من تولید می‌کردم، مدیریت کند، و به غیر از نبود افزونگی و پشتیبان‌گیری، آن را برای میزبانی اطلاعات مهم نامناسب کرد.

بنابراین، در یک نقطه تصمیم گرفتم یک NAS بزرگ بسازم به این امید که این سیستم حداقل دو سال بدون نیاز به ارتقای دیگری دوام بیاورد.

من این مقاله را در درجه اول به عنوان یادآوری دقیقاً به آنچه انجام دادم نوشتم و در صورت نیاز به انجام مجدد آن، چگونه این کار را انجام دادم. امیدوارم اگر تصمیم به انجام این کار دارید برای شما هم مفید باشد.

شاید خرید راحت تر باشد؟

بنابراین، ما می دانیم که می خواهیم به چه چیزی برسیم، این سوال باقی می ماند: چگونه؟

من ابتدا به راه حل های تجاری نگاه کردم و به طور خاص به Synology نگاه کردم، که قرار بود بهترین سیستم های NAS درجه مصرف کننده را در بازار ارائه دهد. با این حال، هزینه این سرویس بسیار بالا بود. ارزان ترین سیستم 4-bay قیمتی بیش از 300 دلار دارد و شامل هارد دیسک نمی شود. علاوه بر این، پر کردن داخلی چنین کیت به خودی خود چشمگیر نیست، که عملکرد واقعی آن را زیر سوال می برد.

سپس فکر کردم: چرا خودم یک سرور NAS نسازیم؟

یافتن سرور مناسب

اگر قصد دارید چنین سروری را جمع آوری کنید، قبل از هر چیز باید سخت افزار مناسب را پیدا کنید. یک سرور استفاده شده باید برای این ساخت کاملاً مناسب باشد، زیرا ما به عملکرد زیادی برای وظایف ذخیره سازی نیاز نخواهیم داشت. از جمله موارد ضروری باید به مقدار زیاد رم، چندین کانکتور SATA و کارت شبکه خوب اشاره کرد. از آنجایی که سرور من در محل اقامت دائم من کار خواهد کرد، سطح نویز نیز اهمیت دارد.

من جستجوی خود را در eBay شروع کردم. اگرچه من تعداد زیادی Dell PowerEdge R410/R210 کارکرده را با قیمت کمتر از 100 دلار در آنجا پیدا کردم، با داشتن تجربه کار در اتاق سرور، می دانستم که این واحدهای 1U سر و صدای زیادی ایجاد می کنند و برای استفاده خانگی مناسب نیستند. به عنوان یک قاعده، سرورهای برج اغلب نویز کمتری دارند، اما، متأسفانه، تعداد کمی از آنها در eBay وجود داشت، و همه آنها یا گران یا ضعیف بودند.

مکان بعدی Craiglist بود، جایی که شخصی را پیدا کردم که یک HP ProLiant N40L دست دوم را فقط به قیمت 75 دلار می‌فروشد! من با این سرورها آشنا بودم که معمولاً حدود 300 دلار حتی استفاده می شود، بنابراین به فروشنده ایمیل زدم به این امید که تبلیغ هنوز فعال باشد. با اطلاع از این موضوع، بدون دوبار فکر کردن، به سمت San Mateo رفتم تا این سرور را انتخاب کنم، که در نگاه اول قطعاً من را خوشحال کرد. حداقل سایش داشت و به جز کمی گرد و غبار، بقیه چیزها عالی بود.

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

مشخصات کیتی که خریداری کردم در اینجا آمده است:

  • پردازنده: پردازنده دو هسته ای AMD Turion(tm) II Neo N40L (64 بیت)
  • رم: 8 گیگابایت رم غیر ECC (نصب شده توسط مالک قبلی)
  • فلاش: 4 گیگابایت درایو USB
  • کانکتورهای SATA:4+1
  • NIC: کارت شبکه داخلی 1 گیگابیت بر ثانیه

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

انتخاب هارد دیسک ها

اکنون ما یک سیستم کار عالی داریم و تنها چیزی که باقی می ماند انتخاب هارد دیسک برای آن است. بدیهی است که با آن 75 دلار فقط خود سرور را بدون هارد دیسک دریافت کردم، که تعجب نکرد.

پس از انجام کمی تحقیق، متوجه شدم که هارد دیسک های WD Red برای اجرای 24/7 سیستم های NAS مناسب ترین هستند. برای خرید آنها، به آمازون مراجعه کردم و از آنجا 4 نسخه 3 ترابایتی خریدم. اساسا، شما می توانید هر HDD را که ترجیح می دهید متصل کنید، اما مطمئن شوید که ظرفیت و سرعت یکسانی دارند. این به شما کمک می کند از مشکلات احتمالی عملکرد RAID در طولانی مدت جلوگیری کنید.

راه اندازی سیستم

من فکر می کنم که بسیاری از این سیستم برای ساخت NAS خود استفاده خواهند کرد فرینس، و هیچ ایرادی در آن وجود ندارد. اما با وجود امکان نصب این سیستم بر روی سرورم، ترجیح دادم از CentOS استفاده کنم، زیرا سیستم ZFS روی لینوکس در ابتدا برای محیط تولید آماده شده است و به طور کلی مدیریت سرور لینوکس برای من آشناتر است. علاوه بر این، من علاقه ای به رابط کاربری و ویژگی های ارائه شده توسط FreeNAS نداشتم - آرایه RAIDZ و اشتراک گذاری AFP برای من کافی بود.

نصب CentOS بر روی USB بسیار ساده است - فقط USB را به عنوان منبع بوت مشخص کنید، و پس از راه اندازی، جادوگر نصب شما را در تمام مراحل آن راهنمایی می کند.

ساخت RAID

پس از نصب موفقیت آمیز CentOS، ZFS را بر روی لینوکس نیز به دنبال موارد ذکر شده نصب کردم مراحل اینجا.

پس از تکمیل این فرآیند، ماژول ZFS Kernel را بارگذاری کردم:

$ sudo modprobe zfs

و آرایه RAIDZ1 را با استفاده از دستور ایجاد کرد zpool:

$ sudo zpool create data raidz1 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609145 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609146 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609147 ata-WDC_WD30EFRX-68AX9N0_WD-WMC1T0609148
$ sudo zpool add data log ata-SanDisk_Ultra_II_240GB_174204A06001-part5
$ sudo zpool add data cache ata-SanDisk_Ultra_II_240GB_174204A06001-part6

لطفا توجه داشته باشید که در اینجا من از شناسه هارد دیسک ها به جای نام نمایشی آنها استفاده می کنم (sdx) برای کاهش احتمال عدم نصب آنها پس از بوت شدن به دلیل تغییر حرف.

همچنین کش ZIL و L2ARC را که روی یک SSD جداگانه اجرا می‌شود، اضافه کردم و آن SSD را به دو پارتیشن تقسیم کردم: 5 گیگابایت برای ZIL و بقیه برای L2ARC.

در مورد RAIDZ1، می تواند 1 دیسک خرابی را تحمل کند. بسیاری استدلال می کنند که به دلیل احتمال خرابی دیسک دوم در طول فرآیند بازسازی RAID، که می تواند منجر به از دست رفتن اطلاعات شود، نباید از این گزینه Pool استفاده شود. من این توصیه را نادیده گرفتم، زیرا من به طور مرتب از داده های مهم در یک دستگاه راه دور نسخه پشتیبان تهیه می کردم و خرابی حتی کل آرایه فقط می تواند بر در دسترس بودن داده ها تأثیر بگذارد، اما بر ایمنی آن تأثیر نمی گذارد. اگر توانایی تهیه نسخه پشتیبان را ندارید، بهتر است از راه حل هایی مانند RAIDZ2 یا RAID10 استفاده کنید.

می‌توانید تأیید کنید که ایجاد استخر با اجرای:

$ sudo zpool status

и

$ sudo zfs list
NAME                               USED  AVAIL  REFER  MOUNTPOINT
data                               510G  7.16T   140K  /mnt/data

به طور پیش‌فرض، ZFS استخر تازه ایجاد شده را مستقیماً روی آن نصب می‌کند /، که به طور کلی نامطلوب است. شما می توانید این را با اجرا تغییر دهید:

zfs set mountpoint=/mnt/data data

از اینجا می توانید انتخاب کنید که یک یا چند مجموعه داده برای ذخیره داده ها ایجاد کنید. من دو مورد را ایجاد کردم، یکی برای پشتیبان گیری Time Machine و دیگری برای ذخیره سازی فایل های مشترک. من اندازه مجموعه داده ماشین زمان را به 512 گیگابایت محدود کردم تا از رشد بی پایان آن جلوگیری کنم.

بهینه سازی

zfs set compression=on data

این دستور پشتیبانی فشرده سازی ZFS را فعال می کند. فشرده سازی از حداقل توان CPU استفاده می کند، اما می تواند به طور قابل توجهی توان I/O را بهبود بخشد، بنابراین همیشه توصیه می شود.

zfs set relatime=on data

با این دستور تعداد به روز رسانی ها را کاهش می دهیم atimeبرای کاهش تولید IOPS هنگام دسترسی به فایل ها.

به طور پیش فرض، ZFS در لینوکس از 50 درصد حافظه فیزیکی برای ARC استفاده می کند. در مورد من، زمانی که تعداد کل فایل ها کم باشد، می توان با خیال راحت این مقدار را تا 90 درصد افزایش داد زیرا هیچ برنامه دیگری روی سرور اجرا نخواهد شد.

$ cat /etc/modprobe.d/zfs.conf 
options zfs zfs_arc_max=14378074112

سپس با استفاده از arc_summary.py می توانید تأیید کنید که تغییرات اعمال شده اند:

$ python arc_summary.py
...
ARC Size:				100.05%	11.55	GiB
	Target Size: (Adaptive)		100.00%	11.54	GiB
	Min Size (Hard Limit):		0.27%	32.00	MiB
	Max Size (High Water):		369:1	11.54	GiB
...

تنظیم وظایف تکرار شونده

من استفاده کردم systemd-zpool-scrub برای پیکربندی تایمرهای systemd برای انجام پاکسازی یک بار در هفته و zfs-auto-snapshot برای ایجاد خودکار عکس های فوری هر 15 دقیقه، 1 ساعت و 1 روز.

در حال نصب Netatalk

نتاتالک یک پیاده سازی منبع باز AFP است (پروتکل بایگانی اپل). ذیل دستورالعمل نصب رسمی برای CentOS، من به معنای واقعی کلمه یک بسته RPM مونتاژ و نصب شده را فقط در چند دقیقه دریافت کردم.

تنظیمات پیکربندی

$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf 
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
mimic model = TimeCapsule6,106

; [Homes]
; basedir regex = /home

; [My AFP Volume]
; path = /path/to/volume

; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes

[Datong's Files]
path = /mnt/data/datong
valid users = datong

[Datong's Time Machine Backups]
path = /mnt/data/datong_time_machine_backups
time machine = yes
valid users = datong

لطفا توجه داشته باشید که vol dbnest یک پیشرفت بزرگ در مورد من است، زیرا Netatalk به طور پیش فرض پایگاه داده CNID را در ریشه سیستم فایل می نویسد، که اصلاً مطلوب نبود زیرا سیستم فایل اصلی من روی USB اجرا می شود و بنابراین نسبتاً کند است. روشن شدن vol dbnest منجر به ذخیره پایگاه داده در ریشه Volume می شود، که در این مورد به استخر ZFS تعلق دارد و در حال حاضر یک مرتبه تولید بیشتر است.

فعال کردن پورت ها در فایروال

$ sudo firewall-cmd --permanent --zone=public --add-service=mdns
$ sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp

sudo firewall-cmd --permanent --zone=public --add-port=afpovertcp/tcp
اگر همه چیز به درستی پیکربندی شده باشد، دستگاه شما باید در Finder نشان داده شود و Time Machine نیز باید کار کند.

تنظیمات اضافی
نظارت هوشمند

توصیه می شود برای جلوگیری از خرابی دیسک، وضعیت دیسک های خود را کنترل کنید.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

دیمون برای یو پی اس

شارژ UPS APC را کنترل می کند و هنگامی که شارژ به شدت کم شد، سیستم را خاموش می کند.

$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsd

ارتقاء سخت افزار

یک هفته پس از راه اندازی سیستم، من به طور فزاینده ای در مورد حافظه غیر ECC سرور نگران شدم. علاوه بر این، در مورد ZFS، حافظه اضافی برای بافر بسیار مفید خواهد بود. بنابراین من به آمازون برگشتم، جایی که رم 2x Kingston DDR3 8GB ECC را به قیمت 80 دلار خریدم و رم دسکتاپ نصب شده توسط مالک قبلی را جایگزین کردم. سیستم اولین بار بدون هیچ مشکلی بوت شد و من مطمئن شدم که پشتیبانی ECC فعال شده است:

$ dmesg | grep ECC
[   10.492367] EDAC amd64: DRAM ECC enabled.

نتیجه

من از نتیجه بسیار راضی بودم. اکنون می توانم به طور مداوم اتصال LAN 1 گیگابیت بر ثانیه سرور را با کپی کردن فایل ها مشغول نگه دارم و Time Machine بی عیب و نقص کار می کند. بنابراین، به طور کلی، من از تنظیم راضی هستم.

کل هزینه:

  1. 1 * HP ProLiant N40L = 75 دلار
  2. رم 2 * 8 گیگابایت ECC = 174 دلار
  3. 4 * WD Red 3 TB HDD = 440 دلار

در کل = $ 689

الان میتونم بگم ارزشش رو داشت

آیا سرورهای NAS خود را می سازید؟

ساختن یک سیستم NAS خانگی ارزان قیمت در لینوکس

ساختن یک سیستم NAS خانگی ارزان قیمت در لینوکس

منبع: www.habr.com

اضافه کردن نظر