Линукс дээр хямд үнэтэй гэрийн NAS системийг бий болгох

Линукс дээр хямд үнэтэй гэрийн NAS системийг бий болгох

Би бусад олон MacBook Pro хэрэглэгчдийн адил дотоод санах ой хангалтгүй гэсэн асуудалтай тулгарсан. Илүү нарийвчлалтай хэлэхэд миний өдөр бүр ашигладаг rMBP нь ердөө 256 ГБ багтаамжтай SSD-ээр тоноглогдсон байсан бөгөөд энэ нь мэдээжийн хэрэг удаан хугацаанд хангалтгүй байсан.

Дээрээс нь би нислэгийнхээ үеэр видео бичлэг хийж эхлэхэд байдал улам дордов. Ийм нислэгийн дараа авсан бичлэгийн хэмжээ 50+ ГБ байсан бөгөөд миний муу 256 ГБ SSD тун удалгүй дүүрч, намайг 1 TB багтаамжтай гадаад диск худалдаж авахад хүргэв. Гэсэн хэдий ч, нэг жилийн дараа энэ нь миний үүсгэж буй мэдээллийн хэмжээг даахаа больсон, нөөц байхгүйгээс гадна чухал мэдээллийг хадгалахад тохиромжгүй болсон.

Тиймээс, нэг удаа би энэ системийг дахин шинэчлэх шаардлагагүйгээр дор хаяж хоёр жил үйлчилнэ гэж найдаж том NAS барихаар шийдсэн.

Би энэ нийтлэлийг юуны өмнө яг юу хийснээ, дахин хийх хэрэг гарвал яаж хийснээ сануулах үүднээс бичсэн. Хэрэв та үүнийг хийхээр шийдсэн бол энэ нь танд хэрэг болно гэж найдаж байна.

Магадгүй худалдаж авахад хялбар болов уу?

Тиймээс бид юу авахыг хүсч байгаагаа мэдэж байгаа тул асуулт хэвээр байна: яаж?

Би эхлээд арилжааны шийдлүүдийг судалж, ялангуяа зах зээл дээрх хамгийн сайн хэрэглэгчийн түвшний NAS системийг хангах ёстой Synology-ийг харлаа. Гэсэн хэдий ч энэ үйлчилгээний өртөг нэлээд өндөр болсон. Хамгийн хямд 4 булантай систем нь 300 долларын үнэтэй бөгөөд хатуу дискийг оруулаагүй болно. Нэмж дурдахад ийм иж бүрдлийг дотоод дүүргэх нь тийм ч гайхалтай биш бөгөөд энэ нь түүний бодит гүйцэтгэлд эргэлзээ төрүүлдэг.

Тэгээд би яагаад өөрөө NAS сервер байгуулж болохгүй гэж бодсон юм бэ?

Тохиромжтой сервер хайж байна

Хэрэв та ийм сервер угсрах гэж байгаа бол юуны түрүүнд тохирох техник хангамжийг олох хэрэгтэй. Ашигласан сервер нь энэ бүтээн байгуулалтад маш тохиромжтой байх ёстой, учир нь бид хадгалах даалгаврын хувьд нэг их гүйцэтгэл шаардагддаггүй. Шаардлагатай зүйлсийн дунд бид их хэмжээний RAM, хэд хэдэн SATA холбогч, сайн сүлжээний картуудыг тэмдэглэх хэрэгтэй. Миний сервер миний байнгын оршин суугаа газарт ажиллах тул дуу чимээний түвшин бас чухал юм.

Би eBay дээр хайж эхэлсэн. Хэдийгээр би серверийн өрөөнд ажиллаж байсан туршлагатай Dell PowerEdge R410/R210-ийг 100 доллараас бага үнээр олоод байсан ч эдгээр 1U нэгжүүд хэт их дуу чимээ гаргаж, гэрийн хэрэглээнд тохиромжгүй гэдгийг мэдэж байсан. Дүрмээр бол цамхаг серверүүд ихэвчлэн чимээ шуугиан багатай байдаг ч харамсалтай нь eBay дээр цөөхөн байсан бөгөөд бүгд үнэтэй эсвэл хүч чадал муутай байдаг.

Дараагийн хайх газар бол Craiglist байсан бөгөөд тэндээс би хуучин HP ProLiant N40L-ийг ердөө 75 доллараар зарж байхыг олж харлаа! Би эдгээр серверүүдийг мэддэг байсан бөгөөд ихэвчлэн 300 долларын үнэтэй байдаг тул зар идэвхтэй хэвээр байна гэж найдаж худалдагч руу имэйл илгээв. Ийм зүйл болохыг мэдээд би хоёр ч удаа бодолгүйгээр энэ серверийг авахаар Сан Матео руу явсан нь анх харахад надад таалагдсан. Энэ нь хамгийн бага элэгдэлтэй байсан бөгөөд бага зэрэг тоос шороог эс тооцвол бусад бүх зүйл гайхалтай байсан.

Линукс дээр хямд үнэтэй гэрийн NAS системийг бий болгох
Худалдан авсны дараа серверийн зураг

Миний худалдаж авсан иж бүрдлийн техникийн үзүүлэлтүүд энд байна:

  • CPU-ийн: AMD Turion(tm) II Neo N40L хоёр цөмт процессор (64 бит)
  • RAM: 8 GB ECC бус RAM (өмнөх эзэмшигч суулгасан)
  • Flash: 4 ГБ USB диск
  • SATA холбогч:4+1
  • юу ч: 1 Gbps on-board NIC

Хэд хэдэн жилийн настай ч энэ серверийн техникийн үзүүлэлтүүд нь зах зээл дээрх ихэнх NAS сонголтуудаас, ялангуяа RAM-ийн хувьд давуу хэвээр байгааг хэлэх нь илүүц биз. Хэсэг хугацааны дараа би буферийн хэмжээ нэмэгдэж, мэдээллийн хамгаалалт нэмэгдсэнээр 16 ГБ ECC хүртэл шинэчилсэн.

Хатуу дискийг сонгох

Одоо бид маш сайн ажиллах системтэй бөгөөд зөвхөн хатуу дискийг сонгоход л үлддэг. Мэдээжийн хэрэг, 75 доллараар би серверийг зөвхөн HDDгүйгээр авсан нь намайг гайхшруулсангүй.

Бага зэрэг судалгаа хийсний дараа би WD Red HDD нь NAS системийг 24/7 ажиллуулахад хамгийн тохиромжтой болохыг олж мэдсэн. Тэдгээрийг худалдаж авахын тулд би Amazon руу хандаж, тус бүр нь 4 TB хэмжээтэй 3 хувь худалдаж авсан. Үндсэндээ та хүссэн HDD-ээ холбож болно, гэхдээ тэдгээр нь ижил хүчин чадал, хурдтай эсэхийг шалгаарай. Энэ нь урт хугацаанд RAID гүйцэтгэлийн асуудлаас зайлсхийхэд тусална.

Системийн тохиргоо

Олон хүмүүс уг системийг NAS бүтээхдээ ашиглах болно гэж би бодож байна FreeNAS, мөн үүнд буруу зүйл байхгүй. Гэсэн хэдий ч энэ системийг сервер дээрээ суулгах боломжтой байсан ч Linux дээрх ZFS нь анх үйлдвэрлэлийн орчинд бэлтгэгдсэн, ерөнхийдөө Линукс серверийг удирдах нь надад илүү танил болсон тул би CentOS ашиглахыг илүүд үзсэн. Нэмж дурдахад би FreeNAS-ийн өгсөн гоёмсог интерфэйс болон функцуудыг сонирхдоггүй байсан - RAIDZ массив болон AFP хуваалцах нь надад хангалттай байсан.

CentOS-ийг USB дээр суулгах нь маш энгийн - ачаалах эх үүсвэрээр USB-г зааж өгөхөд л суулгацын шидтэн бүх үе шатыг нь удирдан чиглүүлэх болно.

RAID бүтээх

CentOS-ийг амжилттай суулгасны дараа би ZFS-г Линукс дээр жагсаасан дагуу суулгасан энд алхамууд.

Энэ процесс дууссаны дараа би ZFS цөмийн модулийг ачааллаа:

$ 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

Энд би хатуу дискний дэлгэцийн нэрний оронд ID-г ашиглаж байгааг анхаарна уу (sdx) үсгийн өөрчлөлтийн улмаас ачаалсны дараа тэдгээрийг холбож чадахгүй байх боломжийг багасгах.

Би мөн тусдаа SSD дээр ажилладаг ZIL болон L2ARC кэшийг нэмж, тэр SSD-г ZIL-д 5ГБ, үлдсэн хэсэг нь L2ARC-д зориулагдсан хоёр хуваалт болгон хуваасан.

RAIDZ1-ийн хувьд энэ нь 1 дискний эвдрэлийг тэсвэрлэх чадвартай. RAID-ийг дахин бүтээх явцад хоёр дахь диск эвдэрч, өгөгдөл алдагдах магадлалтай тул энэ бассейны сонголтыг ашиглах ёсгүй гэж олон хүн үзэж байна. Би энэ зөвлөмжийг үл тоомсорлов, учир нь би алсын төхөөрөмж дээр чухал өгөгдлийн нөөц хуулбарыг тогтмол хийдэг байсан бөгөөд массив бүхэлдээ бүтэлгүйтэх нь зөвхөн мэдээллийн хүртээмжид нөлөөлөх боловч аюулгүй байдалд нөлөөлөхгүй. Хэрэв танд нөөцлөлт хийх чадвар байхгүй бол 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 нөөцлөлтөд зориулагдсан, нөгөө нь хуваалцсан файл хадгалах зориулалттай. Би Time Machine өгөгдлийн багцын хэмжээг эцэс төгсгөлгүй өсөлтөөс урьдчилан сэргийлэхийн тулд 512 ГБ-ын квотоор хязгаарласан.

Оновчтой болгох

zfs set compression=on data

Энэ тушаал нь ZFS шахалтын дэмжлэгийг идэвхжүүлдэг. Шахалт нь CPU-ийн хамгийн бага хүчийг ашигладаг боловч оролт/гаралтын дамжуулалтыг мэдэгдэхүйц сайжруулдаг тул үргэлж зөвлөж байна.

zfs set relatime=on data

Энэ командын тусламжтайгаар бид шинэчлэлтийн тоог багасгадаг atimeфайлд хандах үед IOPS үүсэхийг багасгах.

Анхдагч байдлаар, Linux дээрх ZFS нь ARC-ийн физик санах ойн 50%-ийг ашигладаг. Миний хувьд, нийт файлын тоо бага байх үед сервер дээр өөр ямар ч програм ажиллахгүй тул үүнийг 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-скраб Долоо хоногт нэг удаа цэвэрлэгээ хийх системийн таймерыг тохируулах ба zfs-автомат агшин зураг 15 минут, 1 цаг, 1 өдөр тутамд агшин зуурын зургийг автоматаар үүсгэх.

Netatalk суулгаж байна

nettalk нь AFP-ийн нээлттэй эхийн хэрэгжилт юм (Apple-ийн мэдүүлгийн протокол). Дагаж байна CentO-ийн албан ёсны суулгах зааварS, би хэдхэн минутын дотор угсарч суулгасан 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 root-д хадгалдаг бөгөөд энэ тохиолдолд ZFS санд хамаарах бөгөөд аль хэдийн илүү бүтээмжтэй болсон.

Галт хананд портуудыг идэвхжүүлж байна

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

sudo галт хана-cmd --байнгын --zone=public --add-port=afpovertcp/tcp
Хэрэв бүх зүйл зөв тохируулагдсан бол таны машин Finder дээр гарч ирэх бөгөөд Time Machine бас ажиллах ёстой.

Нэмэлт тохиргоо
SMART хяналт

Дискний эвдрэлээс урьдчилан сэргийлэхийн тулд дискнийхээ статусыг хянахыг зөвлөж байна.

$ 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 руу буцаж очоод тус бүрийг нь 2 доллараар 3x Kingston DDR8 80GB ECC RAM худалдаж аваад өмнөх эзэмшигчийн суулгасан ширээний RAM-г сольсон. Систем анх удаа ямар ч асуудалгүйгээр ачаалагдсан бөгөөд би ECC дэмжлэгийг идэвхжүүлсэн эсэхийг шалгасан:

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

үр дүн

Үр дүнд нь би маш их сэтгэл хангалуун байсан. Одоо би файл хуулж серверийн 1Gbps LAN холболтыг байнга завгүй байлгаж, Time Machine нь өөгүй ажилладаг. Ерөнхийдөө би тохиргоонд сэтгэл хангалуун байна.

Нийт зардал:

  1. 1 * HP ProLiant N40L = 75 доллар
  2. 2 * 8 GB ECC RAM = 174 доллар
  3. 4 * WD Red 3 TB HDD = 440 доллар

Нийт = 689 доллар

Одоо үнэ нь үнэ цэнэтэй байсан гэж хэлж болно.

Та NAS серверээ өөрөө хийдэг үү?

Линукс дээр хямд үнэтэй гэрийн NAS системийг бий болгох

Линукс дээр хямд үнэтэй гэрийн NAS системийг бий болгох

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх