بناء نظام NAS منزلي غير مكلف على Linux

بناء نظام NAS منزلي غير مكلف على Linux

لقد واجهت، مثل العديد من مستخدمي MacBook Pro الآخرين، مشكلة عدم كفاية الذاكرة الداخلية. لكي نكون أكثر دقة، فإن rMBP الذي أستخدمه يوميًا كان مزودًا بمحرك أقراص SSD بسعة 256 جيجابايت فقط، وهو ما لم يكن كافيًا بطبيعة الحال لفترة طويلة.

وعندما بدأت، فوق كل شيء آخر، في تسجيل مقاطع الفيديو أثناء رحلاتي الجوية، أصبح الوضع أسوأ. كان حجم اللقطات التي تم تصويرها بعد هذه الرحلات أكثر من 50 غيغابايت، وسرعان ما امتلأت أقراص SSD الضعيفة بسعة 256 غيغابايت، مما أجبرني على شراء محرك أقراص خارجي بسعة 1 تيرابايت. ومع ذلك، بعد عام واحد، لم يعد بإمكانه التعامل مع كمية البيانات التي كنت أقوم بإنشائها، ناهيك عن عدم وجود التكرار والنسخ الاحتياطي مما جعله غير مناسب لاستضافة معلومات مهمة.

لذلك، قررت في وقت ما بناء NAS كبير على أمل أن يستمر هذا النظام لمدة عامين على الأقل دون الحاجة إلى ترقية أخرى.

لقد كتبت هذا المقال في المقام الأول كتذكير بما فعلته بالضبط وكيف فعلته في حالة اضطررت إلى القيام بذلك مرة أخرى. آمل أن يكون مفيدًا لك أيضًا إذا قررت أن تفعل الشيء نفسه.

ربما يكون من الأسهل الشراء؟

إذن، نعرف ما نريد أن نحصل عليه، ويبقى السؤال: كيف؟

لقد نظرت أولاً إلى الحلول التجارية ونظرت بشكل خاص إلى Synology، التي كان من المفترض أن توفر أفضل أنظمة NAS للمستهلكين في السوق. ومع ذلك، تبين أن تكلفة هذه الخدمة مرتفعة للغاية. أرخص نظام مكون من 4 فتحات يكلف 300 دولارًا أمريكيًا ولا يتضمن محركات الأقراص الثابتة. بالإضافة إلى ذلك، فإن الحشو الداخلي لمثل هذه المجموعة في حد ذاته ليس مثيرًا للإعجاب بشكل خاص، مما يثير الشكوك حول أدائها الحقيقي.

ثم فكرت: لماذا لا أقوم ببناء خادم NAS بنفسي؟

العثور على خادم مناسب

إذا كنت ستقوم بتجميع مثل هذا الخادم، فأنت بحاجة أولاً إلى العثور على الجهاز المناسب. يجب أن يكون الخادم المستخدم مناسبًا تمامًا لهذا الإصدار، لأننا لن نحتاج إلى الكثير من الأداء لمهام التخزين. من بين الأشياء الضرورية، يجب أن نلاحظ كمية كبيرة من ذاكرة الوصول العشوائي والعديد من موصلات SATA وبطاقات الشبكة الجيدة. وبما أن الخادم الخاص بي سيعمل في مكان إقامتي الدائمة، فإن مستوى الضوضاء مهم أيضًا.

لقد بدأت بحثي على موقع ئي باي. على الرغم من أنني وجدت الكثير من أجهزة Dell PowerEdge R410/R210 المستخدمة هناك بأقل من 100 دولار، ولدي خبرة في العمل في غرفة الخادم، إلا أنني كنت أعلم أن هذه الوحدات المكونة من وحدة واحدة تحدث الكثير من الضوضاء ولم تكن مناسبة للاستخدام المنزلي. كقاعدة عامة، غالبًا ما تكون الخوادم البرجية أقل ضوضاءً، ولكن لسوء الحظ، كان هناك عدد قليل منها على موقع eBay، وكانت جميعها إما باهظة الثمن أو ضعيفة القوة.

المكان التالي الذي بحثت فيه هو Craiglist، حيث وجدت شخصًا يبيع جهاز HP ProLiant N40L مستعملًا مقابل 75 دولارًا فقط! كنت على دراية بهذه الخوادم، والتي عادةً ما تكلف حوالي 300 دولار حتى استخدامها، لذلك قمت بإرسال بريد إلكتروني إلى البائع على أمل أن يكون الإعلان لا يزال نشطًا. عندما علمت أن هذا هو الحال، توجهت، دون التفكير مرتين، إلى سان ماتيو لالتقاط هذا الخادم، والذي أسعدني بالتأكيد للوهلة الأولى. كان به حد أدنى من التآكل وباستثناء القليل من الغبار، كان كل شيء آخر رائعًا.

بناء نظام NAS منزلي غير مكلف على Linux
صورة للخادم بعد الشراء مباشرة

فيما يلي مواصفات المجموعة التي اشتريتها:

  • وحدة المعالجة المركزية‏:: معالج AMD Turion(tm) II Neo N40L ثنائي النواة (64 بت)
  • رامات: 8 جيجا بايت من ذاكرة الوصول العشوائي غير ECC (تم تثبيتها من قبل المالك السابق)
  • Flash: محرك أقراص USB سعة 4 جيجابايت
  • موصلات SATA: 4،1 + XNUMX،XNUMX
  • NIC: 1 جيجابت في الثانية على متن الطائرة

وغني عن القول، على الرغم من عمره عدة سنوات، فإن مواصفات هذا الخادم لا تزال متفوقة على معظم خيارات NAS في السوق، وخاصة من حيث ذاكرة الوصول العشوائي. بعد ذلك بقليل، قمت بالترقية إلى 16 جيجابايت ECC مع زيادة حجم المخزن المؤقت وزيادة حماية البيانات.

اختيار محركات الأقراص الصلبة

الآن لدينا نظام عمل ممتاز وكل ما تبقى هو اختيار محركات الأقراص الثابتة له. من الواضح أنه مقابل 75 دولارًا، حصلت فقط على الخادم نفسه بدون محرك الأقراص الثابتة، وهو ما لم يفاجئني.

بعد إجراء القليل من البحث، اكتشفت أن محركات الأقراص الثابتة WD Red هي الأنسب لتشغيل أنظمة NAS على مدار الساعة طوال أيام الأسبوع. لشرائها، لجأت إلى أمازون، حيث اشتريت 24 نسخ سعة كل منها 7 تيرابايت. في الأساس، يمكنك توصيل أي محرك أقراص ثابتة تفضله، ولكن تأكد من أنهما بنفس السعة والسرعة. سيساعدك هذا على تجنب مشكلات أداء RAID المحتملة على المدى الطويل.

إعداد النظام

أعتقد أن الكثيرين سيستخدمون النظام في تصميمات NAS الخاصة بهم FreeNAS، ولا حرج في ذلك. ومع ذلك، على الرغم من إمكانية تثبيت هذا النظام على الخادم الخاص بي، فضلت استخدام CentOS، نظرًا لأن ZFS على نظام Linux مُجهز في البداية لبيئة الإنتاج، وبشكل عام، فإن إدارة خادم Linux مألوفة بالنسبة لي أكثر. بالإضافة إلى ذلك، لم أكن مهتمًا بالواجهة الرائعة والميزات التي توفرها FreeNAS - كانت مجموعة RAIDZ ومشاركة AFP كافية بالنسبة لي.

يعد تثبيت CentOS على USB أمرًا بسيطًا للغاية - ما عليك سوى تحديد USB كمصدر التمهيد، وعند بدء التشغيل، سيرشدك معالج التثبيت خلال جميع مراحله.

بناء RAID

بعد تثبيت CentOS بنجاح، قمت أيضًا بتثبيت ZFS على Linux باتباع الخطوات المذكورة الخطوات هنا.

بمجرد اكتمال هذه العملية، قمت بتحميل وحدة 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، فيمكنه تحمل فشل قرص واحد. يجادل الكثيرون بأنه لا ينبغي استخدام خيار التجمع هذا نظرًا لاحتمال فشل القرص الثاني أثناء عملية إعادة بناء RAID، مما قد يؤدي إلى فقدان البيانات. لقد تجاهلت هذه التوصية، لأنني قمت بانتظام بعمل نسخ احتياطية من البيانات المهمة على جهاز بعيد، وفشل حتى المصفوفة بأكملها يمكن أن يؤثر فقط على توفر البيانات، ولكن ليس على سلامتها. إذا لم تكن لديك القدرة على عمل نسخ احتياطية، فمن الأفضل استخدام حلول مثل RAIDZ1 أو RAID2.

يمكنك التحقق من نجاح إنشاء التجمع عن طريق تشغيل:

$ 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 والآخر لتخزين الملفات المشتركة. لقد حددت حجم مجموعة بيانات Time Machine بحصة تبلغ 512 جيجابايت لمنع نموها الذي لا نهاية له.

الأمثل

zfs set compression=on data

يتيح هذا الأمر دعم ضغط ZFS. يستخدم الضغط الحد الأدنى من طاقة وحدة المعالجة المركزية (CPU)، ولكنه يمكن أن يحسن إنتاجية الإدخال/الإخراج بشكل كبير، لذلك يوصى به دائمًا.

zfs set relatime=on data

باستخدام هذا الأمر نقوم بتقليل عدد التحديثات إلى atimeلتقليل توليد IOPS عند الوصول إلى الملفات.

افتراضيًا، يستخدم ZFS على Linux 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-التلقائي-لقطة لإنشاء لقطات تلقائيًا كل 15 دقيقة وساعة ويوم واحد.

تثبيت نت توك

نتاتالك هو تطبيق مفتوح المصدر لـ AFP (بروتوكول إيداع Apple). التالي تعليمات التثبيت الرسمية لـ 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 يؤدي إلى حفظ قاعدة البيانات في جذر وحدة التخزين، والذي ينتمي في هذه الحالة إلى تجمع 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 UPS ويوقف تشغيل النظام عندما يصبح الشحن منخفضًا للغاية.

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

ترقية الأجهزة

بعد أسبوع من إعداد النظام، بدأت أشعر بقلق متزايد بشأن ذاكرة الخادم التي لا تعمل بنظام تصحيح الأخطاء (ECC). بالإضافة إلى ذلك، في حالة ZFS، ستكون الذاكرة الإضافية للتخزين المؤقت مفيدة جدًا. لذلك عدت إلى Amazon حيث اشتريت 2x Kingston DDR3 8GB ECC RAM مقابل 80 دولارًا لكل منها واستبدلت ذاكرة الوصول العشوائي لسطح المكتب التي قام المالك السابق بتثبيتها. تم تشغيل النظام في المرة الأولى دون أي مشاكل، وتأكدت من تفعيل دعم ECC:

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

نتيجة

كنت راض جدا عن النتيجة. يمكنني الآن إبقاء اتصال الشبكة المحلية (LAN) بسرعة 1 جيجابت في الثانية للخادم مشغولًا باستمرار عن طريق نسخ الملفات، ويعمل Time Machine بشكل لا تشوبه شائبة. لذا، بشكل عام، أنا سعيد بالإعداد.

التكلفة الإجمالية:

  1. 1 * HP ProLiant N40L = 75 دولارًا
  2. ذاكرة الوصول العشوائي (ECC) سعة 2*8 جيجابايت = 174 دولارًا
  3. 4 * محرك الأقراص الصلبة WD Red سعة 3 تيرابايت = 440 دولارًا

في المجموع = $ 689

الآن أستطيع أن أقول أن السعر كان يستحق ذلك.

هل تصنع خوادم NAS الخاصة بك؟

بناء نظام NAS منزلي غير مكلف على Linux

بناء نظام NAS منزلي غير مكلف على Linux

المصدر: www.habr.com

إضافة تعليق