Linux боюнча арзан үй NAS системасын куруу

Linux боюнча арзан үй NAS системасын куруу

Мен, башка көптөгөн MacBook Pro колдонуучулары сыяктуу эле, ички эс тутумдун жетишсиздиги көйгөйүнө туш болдум. Тагыраак айтканда, мен күн сайын колдонгон rMBP 256 ГБ гана сыйымдуулугу бар SSD менен жабдылган, бул, албетте, узак убакытка жетишсиз болчу.

Анын үстүнө, мен учуу учурунда видео жаздыра баштаганда, абал ого бетер начарлап кетти. Мындай каттамдардан кийин тартылган кадрлардын көлөмү 50+ ГБ болгон жана менин начар 256 ГБ SSD бат эле толуп, мени тышкы 1 ТБ диск сатып алууга мажбурлады. Бирок, бир жылдан кийин, ал мындан ары мен иштеп жаткан маалыматтардын көлөмүн көтөрө албай калды, ашыкча жана камдык көчүрмөнүн жоктугун айтпаганда да, аны маанилүү маалыматты жайгаштыруу үчүн жараксыз кылды.

Ошентип, бир убакта мен бул система дагы бир жаңыртууну талап кылбастан, жок эле дегенде, бир-эки жылга жетет деген үмүт менен чоң УИА курууну чечтим.

Мен бул макаланы биринчи кезекте так эмне кылганымды жана кайра жасоо керек болсо, аны кантип жасаганымды эске салуу үчүн жаздым. Эгер сиз да ушундай кылууну чечсеңиз, бул сизге да пайдалуу болот деп ишенем.

Балким, сатып алуу оңойдур?

Ошентип, биз эмнени алгыбыз келгенин билебиз, суроо бойдон калууда: кантип?

Мен алгач коммерциялык чечимдерди карап чыктым жана өзгөчө рынокто эң жакшы керектөөчү класстагы NAS тутумдарын камсыз кылышы керек болгон Synologyди карадым. Бирок, бул кызматтын баасы кыйла жогору болуп чыкты. Эң арзан 4 булуңдуу системанын баасы $300+ турат жана катуу дисктерди камтыбайт. Мындан тышкары, мындай комплекттин ички толтуруу өзү өзгөчө таасирдүү эмес, бул анын реалдуу иштешине шек туудурат.

Анан мен ойлодум: эмне үчүн NAS серверин өзүм курбайм?

Ылайыктуу серверди табуу

Эгер сиз мындай серверди чогулта турган болсоңуз, анда биринчи кезекте керектүү жабдыкты табышыңыз керек. Колдонулган сервер бул куруу үчүн абдан ылайыктуу болушу керек, анткени сактоо тапшырмалары үчүн көп аткарууну талап кылбайбыз. Керектүү нерселердин арасында биз көп сандагы RAM, бир нече SATA туташтыргычы жана жакшы тармак карталарын белгилешибиз керек. Менин серверим туруктуу жашаган жеримде иштей тургандыктан, ызы-чуу деңгээли да маанилүү.

Мен eBayден издей баштадым. Мен ал жерден 410 доллардан ашпаган көп колдонулган Dell PowerEdge R210/R100 тапсам да, сервердик бөлмөдө иштөө тажрыйбасы бар, мен бул 1U бирдиктери өтө көп ызы-чуу чыгарганын жана үйдө колдонууга ылайыктуу эмес экенин билчүмүн. Эреже катары, мунара серверлери көбүнчө ызы-чуу азыраак, бирок, тилекке каршы, eBayде алардын саны аз болчу жана алардын бардыгы кымбат же кубаттуу эмес.

Кийинки издей турган жер Крейглист болчу, анда мен колдонулган HP ProLiant N40Lди болгону 75 долларга саткан адамды таптым! Мен бул серверлер менен тааныш болчумун, алардын баасы 300 доллардын тегерегинде болгон, ошондуктан мен сатуучуга жарнама дагы эле активдүү деп үмүттөнүп электрондук кат жөнөттүм. Ушундай болгонун билип, мен эки жолу ойлонбостон, бул серверди алуу үчүн Сан-Матеого жөнөдүм, бул бир караганда мени кубандырды. Анын эскилиги минималдуу болгон жана бир аз чаңдан башкасынын баары сонун болчу.

Linux боюнча арзан үй NAS системасын куруу
Сатып алгандан кийин дароо сервердин сүрөтү

Бул жерде мен сатып алган комплекттин мүнөздөмөлөрү:

  • CPU: AMD Turion(tm) II Neo N40L Dual-Core Processor (64-бит)
  • RAM: 8 ГБ эмес ECC RAM (мурунку ээси тарабынан орнотулган)
  • жалын: 4 ГБ USB Drive
  • SATA туташтыргычтары:4+1
  • NIC: 1 Gbps борттогу NIC

Айта кетчү нерсе, бир нече жыл болгонуна карабастан, бул сервердин спецификациясы рыноктогу NAS варианттарынын көбүнөн, өзгөчө оперативдүү эс тутум жагынан дагы эле жогору турат. Бир аз убакыт өткөндөн кийин, мен буфердин көлөмүн көбөйтүү жана маалыматты коргоону жогорулатуу менен 16 ГБ ECCге чейин жаңырттым.

Катуу дисктерди тандоо

Азыр бизде эң сонун иштөө системасы бар жана ал үчүн катуу дисктерди тандоо гана калды. Албетте, ошол 75 долларга мен серверди HDDсиз гана алдым, бул мени таң калтырган жок.

Бир аз изилдөө жүргүзгөндөн кийин, мен WD Red HDDs NAS тутумдарын 24/7 иштетүү үчүн эң ылайыктуу экенин билдим. Аларды сатып алуу үчүн мен Amazonга кайрылдым, ал жерден ар бири 4 ТБдан 3 нуска сатып алдым. Негизинен, сиз каалаган HDDди туташтыра аласыз, бирок алардын кубаттуулугу жана ылдамдыгы бирдей экендигин текшериңиз. Бул узак мөөнөттүү келечекте мүмкүн болгон RAID аткаруу көйгөйлөрүнөн качууга жардам берет.

Системаны орнотуу

Мен көптөр NAS куруу үчүн системаны колдонот деп ойлойм FreeNAS, жана мунун эч кандай жаман жери жок. Бирок, бул системаны сервериме орнотуу мүмкүнчүлүгүнө карабастан, мен CentOSту колдонууну туура көрдүм, анткени Linux системасындагы ZFS адегенде өндүрүш чөйрөсү үчүн даярдалган жана жалпысынан Linux серверин башкаруу мага көбүрөөк тааныш. Мындан тышкары, мени кооз интерфейс жана FreeNAS тарабынан берилген функциялар кызыктырган жок - RAIDZ массиви жана AFP бөлүшүү мен үчүн жетиштүү болду.

CentOS'ту USB'ге орнотуу абдан жөнөкөй - жөн гана USB'ди жүктөө булагы катары көрсөтүңүз жана ишке киргенде орнотуу устасы сизге анын бардык этаптары боюнча жетекчилик кылат.

RAID куруу

CentOSту ийгиликтүү орноткондон кийин, мен Linux'ка 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

Сураныч, бул жерде мен алардын дисплей аталыштарынын ордуна катуу дисктердин идентификаторлорун колдонуп жатканымды эске алыңыз (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 кысуу колдоосун иштетет. Кысуу процессордун минималдуу күчүн колдонот, бирок I/O өткөрүү жөндөмдүүлүгүн кыйла жакшыртат, ошондуктан дайыма сунушталат.

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 Fileing Protocol). Кийинки 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 Бул учурда ZFS бассейнине таандык жана ансыз деле жемиштүү чоңдуктун тартибине ээ болгон Көлөмдүн тамырында маалымат базасын сактоого алып келет.

Firewallдагы портторду иштетүү

$ 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 үчүн Daemon

APC UPSтин зарядын көзөмөлдөйт жана заряд өтө азайганда системаны өчүрөт.

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

Аппараттык камсыздоону жаңыртуу

Системаны орноткондон бир жума өткөндөн кийин мен сервердин ECC эмес эс тутуму жөнүндө көбүрөөк тынчсыздана баштадым. Мындан тышкары, ZFS учурда буферлөө үчүн кошумча эстутум абдан пайдалуу болот. Ошентип, мен Amazonга кайтып бардым, ал жерден 2x Kingston DDR3 8 ГБ ECC оперативдүү эс тутумун ар бири 80 долларга сатып алдым жана мурунку ээси орноткон рабочий оперативдүү эстутумду алмаштырдым. Система биринчи жолу эч кандай көйгөйсүз жүктөлдү жана мен ECC колдоосу иштетилгенине ынандым:

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

жыйынтык

Мен натыйжага абдан ыраазы болдум. Эми мен файлдарды көчүрүү менен сервердин 1 Гбит/сек LAN туташуусун дайыма бош кыла алам жана Time Machine кемчиликсиз иштейт. Ошентип, жалпысынан мен орнотууга ыраазымын.

Жалпы наркы:

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

жалпы = $ 689

Эми баасына татыктуу болду десем болот.

Сиз NAS серверлериңизди жасайсызбы?

Linux боюнча арзан үй NAS системасын куруу

Linux боюнча арзан үй NAS системасын куруу

Source: www.habr.com

Комментарий кошуу