Arzon Linux Home NAS tizimini qurish

Arzon Linux Home NAS tizimini qurish

Men, boshqa ko'plab MacBook Pro foydalanuvchilari kabi, ichki xotiraning etishmasligi muammosiga duch keldim. Aniqroq qilib aytadigan bo'lsak, men har kuni foydalanadigan rMBP atigi 256 Gb SSD bilan jihozlangan, bu, albatta, uzoq vaqt davomida etarli emas edi.

Va parvozlar paytida video yozishni boshlaganimda, vaziyat yanada yomonlashdi. Bunday parvozlardan so'ng tasvirlar hajmi 50+ GB edi va mening baxtsiz 256 GB SSD tezda to'ldi, bu meni 1 TB tashqi disk sotib olishga majbur qildi. Biroq, bir yil o'tgach, u men ishlab chiqarayotgan ma'lumotlar hajmiga moslasha olmadi, ortiqcha va zaxiraning yo'qligi haqida gapirmasa ham bo'ladi, bu muhim ma'lumotlarni joylashtirish uchun yaroqsiz bo'lib qoldi.

Shunday qilib, bir vaqtning o'zida men ushbu tizim boshqa yangilanishni talab qilmasdan kamida bir necha yil xizmat qiladi degan umidda katta quvvatli NAS qurishga qaror qildim.

Men ushbu maqolani, birinchi navbatda, yana nima qilishim kerak bo'lsa, nima qilganimni va qanday qilganimni eslatish uchun yozdim. Umid qilamanki, agar siz ham xuddi shunday qilishga qaror qilsangiz, bu siz uchun foydali bo'ladi.

Ehtimol, sotib olish osonroqdir?

Shunday qilib, biz nimani olishni xohlayotganimizni bilamiz, qanday qilib savol qoladi?

Men birinchi navbatda tijorat echimlarini ko'rib chiqdim va xususan bozorda eng yaxshi iste'molchi darajasidagi NAS tizimlarini taqdim etishi kerak bo'lgan Synology-ga qaradim. Biroq, bu xizmatning narxi ancha yuqori edi. Eng arzon 4-bay tizimning narxi 300$+ va qattiq disklarni o'z ichiga olmaydi. Bundan tashqari, bunday to'plamni ichki to'ldirish juda ta'sirli emas, bu uning haqiqiy ishlashini shubha ostiga qo'yadi.

Keyin men o'yladim: nega o'zingiz NAS serverini yaratmaysiz?

To'g'ri serverni topish

Agar siz bunday serverni to'ldirmoqchi bo'lsangiz, unda birinchi navbatda kerakli uskunani topishingiz kerak. Ishlatilgan server ushbu tuzilma uchun yaxshi bo'lishi kerak, chunki biz saqlash vazifalari uchun unchalik ko'p ishlashga muhtoj emasmiz. Shuni ta'kidlash kerakki, katta hajmdagi operativ xotira, bir nechta SATA ulagichlari va yaxshi tarmoq kartalari. Mening serverim doimiy yashash joyimda ishlashi uchun shovqin darajasi ham muhim.

Men eBay-da qidiruvni boshladim. Garchi men u yerda 410 dollardan past boʻlgan koʻp ishlatilgan Dell PowerEdge R210/R100-larni topsam ham, server xonasida ishlagan boʻlsam ham, bu 1U birliklari juda shovqinli va uyda foydalanish uchun mos emasligini bilardim. Qoidaga ko'ra, minora serverlari ko'pincha kamroq shovqinli, ammo, afsuski, eBay-da ularning bir nechtasi bor edi va ularning barchasi qimmat yoki quvvatsiz edi.

Keyingi joy Craiglist edi, u erda men foydalanilgan HP ProLiant N40L ni atigi 75 dollarga sotayotgan odamni topdim! Men odatda taxminan 300 dollar turadigan ushbu serverlar bilan tanish edim, shuning uchun men sotuvchiga e-pochta orqali xabar yubordim, degan umiddaman. Bu shunday ekanligini bilib, men ikki marta o'ylamasdan, ushbu serverni olish uchun San-Mateoga bordim, bu meni bir qarashda mamnun qildi. U minimal eskirgan va ozgina changdan tashqari, hamma narsa ajoyib edi.

Arzon Linux Home NAS tizimini qurish
Sotib olingandan so'ng darhol server fotosurati

Va men sotib olgan to'plamning tavsifi:

  • Markaziy protsessor: AMD Turion(tm) II Neo N40L ikki yadroli protsessor (64-bit)
  • Ram: 8 GB ECC bo'lmagan RAM (oldingi egasi tomonidan o'rnatilgan)
  • Flash: 4 GB USB disk
  • SATA konnektorlari:4+1
  • HECH: 1Gbps bortdagi NIC

Aytishga hojat yo'q, bir necha yil bo'lishiga qaramay, ushbu serverning spetsifikatsiyasi bozordagi ko'pgina NAS opsiyalaridan, ayniqsa operativ xotira bo'yicha hali ham ustundir. Biroz vaqt o'tgach, men ko'proq bufer maydoni va yaxshi ma'lumotlarni himoya qilish bilan 16 GB ECC ga yangiladim.

Qattiq disklarni tanlash

Endi bizda ajoyib ish tizimi mavjud va buning uchun qattiq disklarni tanlash qoladi. Shubhasiz, o'sha 75 dollarga men HDDsiz faqat serverni oldim, bu meni ajablantirmadi.

Bir oz izlanishlar olib borganimdan so'ng, men 24/7 NAS drayverlari WD Red HDD uchun eng mos ekanligini aniqladim. Ularni sotib olish uchun men Amazonga murojaat qildim, u erda har biri 4 TBdan 3 nusxani sotib oldim. Aslida, siz har qanday afzal qilingan HDD ni ulashingiz mumkin, lekin ular bir xil o'lcham va tezlikda ekanligiga ishonch hosil qiling. Bu uzoq muddatda RAID ishlashi mumkin bo'lgan muammolardan qochishingizga yordam beradi.

Tizimni sozlash

O'ylaymanki, ko'pchilik o'zlarining NAS tuzilmalari uchun tizimdan foydalanadilar. FreeNAS, va buning hech qanday yomon joyi yo'q. Biroq, ushbu tizimni serverimga o'rnatish imkoniyatiga qaramay, men CentOS-dan foydalanishni afzal ko'rdim, chunki Linux tizimidagi ZFS dastlab ishlab chiqarish muhiti uchun tayyorlangan va umuman, men Linux serverini boshqarish bilan ko'proq tanishman. Bundan tashqari, meni FreeNAS taqdim etgan ajoyib interfeys va xususiyatlar qiziqtirmadi - RAIDZ massivi va AFP almashishidan mamnun edim.

CentOS-ni USB-ga o'rnatish juda oddiy - faqat yuklash manbai sifatida USB-ni belgilang va o'rnatish ustasi ishga tushganda barcha qadamlar bo'yicha sizga yo'l-yo'riq ko'rsatadi.

RAID yig'ilishi

CentOS-ni muvaffaqiyatli o'rnatganimdan so'ng, men sanab o'tilganlarga amal qilib, Linux-ga ZFS-ni ham o'rnatdim bu erda qadamlar.

Ushbu jarayon tugallangandan so'ng, men ZFS yadro modulini yukladim:

$ sudo modprobe zfs

Va buyruq yordamida RAIDZ1 massivi yaratildi 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

E'tibor bering, men bu erda ko'rsatilgan nomlar o'rniga qattiq disk identifikatorlaridan foydalanmoqdaman (sdx) harf o'zgarishi sababli yuklashdan keyin o'rnatilmasligi ehtimolini kamaytirish uchun.

Bundan tashqari, men alohida SSD-da ishlaydigan ZIL va L2ARC keshini qo'shdim, bu SSD-ni ikkita bo'limga ajratdim: ZIL uchun 5 Gb, qolgani esa L2ARC uchun.

RAIDZ1 ga kelsak, u 1 diskning ishdan chiqishiga bardosh bera oladi. Ko'pchilik ma'lumotlar yo'qolishi bilan to'la bo'lgan RAID-ni qayta tiklash paytida ikkinchi diskning ishlamay qolishi ehtimoli tufayli ushbu birlashma variantidan foydalanmaslik kerakligini ta'kidlaydi. Men ushbu tavsiyani e'tiborsiz qoldirdim, chunki men uzoqdagi qurilmada muhim ma'lumotlarni muntazam ravishda zaxiralab turdim va hatto butun massivning ishlamay qolishi faqat ma'lumotlarning mavjudligiga ta'sir qilishi mumkin, ammo ularning xavfsizligiga ta'sir qilmaydi. Agar sizda zaxira nusxalarini yaratish imkoniyati bo'lmasa, RAIDZ2 yoki RAID10 kabi echimlardan foydalanish yaxshi bo'ladi.

Hovuz muvaffaqiyatli yaratilganligini quyidagi amallarni bajarish orqali tekshirishingiz mumkin:

$ sudo zpool status

и

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

Odatiy bo'lib, ZFS yangi yaratilgan hovuzni to'g'ridan-to'g'ri o'rnatadi /bu umuman istalmagan. Buni o'zgartirishingiz mumkin:

zfs set mountpoint=/mnt/data data

Bu yerdan siz maʼlumotlaringizni saqlash uchun bir yoki bir nechta maʼlumotlar toʻplamini yaratishni tanlashingiz mumkin. Men ikkitasini yaratdim, biri Time Machine zaxirasi uchun, ikkinchisi esa umumiy fayllarni saqlash uchun. Men Time Machine ma'lumotlar to'plami hajmini cheksiz ravishda o'sishiga yo'l qo'ymaslik uchun 512 Gb kvota bilan chekladim.

Optimallashtirish

zfs set compression=on data

Ushbu buyruq ZFS siqishni qo'llab-quvvatlashini ta'minlaydi. Siqish protsessorning minimal quvvatini sarflaydi, lekin kiritish/chiqarish tezligini sezilarli darajada oshirishi mumkin, shuning uchun har doim tavsiya etiladi.

zfs set relatime=on data

Ushbu buyruq yordamida biz yangilanishlar sonini kamaytiramiz atimefayllarga kirishda IOPS generatsiyasini kamaytirish uchun.

Odatiy bo'lib, Linuxda ZFS ARC uchun jismoniy xotiraning 50% dan foydalanadi. Mening holatimda, fayllarning umumiy soni kichik bo'lsa, bu miqdorni xavfsiz tarzda 90% ga oshirish mumkin, chunki serverdagi boshqa ilovalar ishlamaydi.

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

Keyin yordam bilan arc_summary.py O'zgarishlar kuchga kirganligini tekshirishingiz mumkin:

$ 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
...

Takroriy vazifalarni o'rnatish

foydalandim systemd-zpool-skrab haftada bir marta tozalash uchun tizimli taymerlarni o'rnatish va zfs-auto-snapshot Har 15 daqiqa, 1 soat va 1 kunda avtomatik suratlarni yaratish.

Netatalk o'rnatish

nettalk AFP ning ochiq manbali ilovasi (Apple faylni topshirish protokoli). Kuzatish CentO uchun rasmiy o'rnatish ko'rsatmalariS, men RPM paketini bir necha daqiqada qurib, o'rnatdim.

Konfiguratsiya sozlamalari

$ 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

E'tibor bering vol dbnest bu mening ishimda katta yaxshilanishdir, chunki sukut bo'yicha Netatalk CNID ma'lumotlar bazasini fayl tizimining ildiziga yozadi, bu mening asosiy fayl tizimim USB-da bo'lgani uchun istalmagan va shuning uchun nisbatan sekin. Xuddi shu tarzda yoqish vol dbnest ma'lumotlar bazasini Volume ildizida saqlashga olib keladi, bu holda bu ZFS hovuziga tegishli va allaqachon tezroq kattalik tartibidir.

Xavfsizlik devoridagi portlarni yoqish

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

sudo xavfsizlik devori-cmd --doimiy --zone=public --add-port=afpovertcp/tcp
Agar hamma narsa to'g'ri sozlangan bo'lsa, u holda qurilmangiz Finder-da paydo bo'lishi kerak va Time Machine ham ishlashi kerak.

Qo'shimcha sozlamalar
SMART monitoring

Disklarning ishdan chiqishini oldini olish uchun ularning holatini kuzatish tavsiya etiladi.

$ sudo yum install smartmontools
$ sudo systemctl start smartd

UPS uchun daemon

APC UPS zaryadini kuzatib boradi va zaryad juda past bo'lganda tizimni o'chiradi.

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

Uskunani yangilash

Tizimni o'rnatishdan bir hafta o'tgach, men serverda o'rnatilgan ECC bo'lmagan xotira haqida ko'proq tashvishlana boshladim. Bundan tashqari, ZFS holatida buferlash uchun qo'shimcha xotira juda foydali bo'ladi. Shunday qilib, men yana Amazonga murojaat qildim, u erda har biri 2 dollarga 3x Kingston DDR8 80GB ECC operativ xotirasini sotib oldim va oldingi egasi o'rnatgan ish stoli operativ xotirasini almashtirdim. Tizim birinchi marta hech qanday muammosiz ishga tushdi va men ECC qo'llab-quvvatlashi yoqilganligiga ishonch hosil qildim:

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

natija

Natija meni juda xursand qildi. Endi men fayllarni nusxalash orqali serverning 1Gbps LAN ulanishini doimiy ravishda yuklay olaman va Time Machine benuqson ishlaydi. Umuman olganda, men o'rnatishdan mamnunman.

Umumiy xarajat:

  1. 1 * HP ProLiant N40L = 75 dollar
  2. 2 * 8 GB ECC operativ xotira = 174 dollar
  3. 4*WD Red 3TB HDD = 440 dollar

jami = $ 689

Endi aytishim mumkinki, narx bunga loyiq edi.

O'zingizning NAS serverlaringizni yaratasizmi?

Arzon Linux Home NAS tizimini qurish

Arzon Linux Home NAS tizimini qurish

Manba: www.habr.com

a Izoh qo'shish