Moi, comme de nombreux autres utilisateurs de MacBook Pro, j'ai rencontré le problème d'un manque de mémoire interne. Pour être plus précis, mon rMBP utilisé quotidiennement était équipé d'un SSD de seulement 256 Go, ce qui, bien sûr, n'était pas suffisant sur le long terme.
Et quand, en plus, j'ai commencé à enregistrer des vidéos pendant mes vols, la situation est devenue encore plus compliquée. Le volume des matériaux enregistrés après de tels vols atteignait plus de 50 Go, et mon malheureux SSD de 256 Go s'est très vite rempli, m'obligeant à acheter un disque externe de 1 To. Cependant, au bout d'un an, celui-ci n'a plus été à la hauteur des volumes de données que je générais, sans parler du fait que le manque de redondance et de sauvegardes le rendait inadapté pour stocker des informations importantes.
Ainsi, à un moment donné, j'ai décidé de construire un NAS de grande capacité, en espérant que ce système tiendrait au moins quelques années sans nécessiter une nouvelle mise à niveau.
Cet article, je l'ai écrit avant tout comme un rappel de ce que j'ai fait et comment, au cas où j'aurais besoin de le refaire. J'espère que cela vous sera également utile si vous envisagez de faire de même.
N'est-il pas plus simple d'acheter ?
Donc, nous savons ce que nous voulons obtenir, la question qui reste est : comment ?
D'abord, j'ai étudié les solutions commerciales et j'ai notamment examiné la société Synology, qui, il semble, offre les meilleurs systèmes NAS pour les consommateurs sur le marché. Cependant, le coût de ce service s'est avéré assez élevé. Le système le moins cher avec 4 baies coûte plus de 300 $, et de plus, les disques durs ne sont pas fournis. En outre, le matériel interne de cet ensemble n'est pas vraiment impressionnant, ce qui remet en question sa réelle performance.
C'est alors que j'ai pensé : pourquoi ne pas construire un serveur NAS moi-même ?
Recherche du serveur approprié
Si vous envisagez de composer un tel serveur, il est d'abord nécessaire de trouver le bon matériel. Pour cette construction, un serveur d'occasion devrait convenir, car pour les tâches de stockage, nous n'avons pas besoin d'une performance particulière. Il est nécessaire de noter un grand volume de RAM, plusieurs connecteurs SATA et de bonnes cartes réseau. Comme mon serveur fonctionnera à mon domicile, le niveau de bruit est aussi un critère important.
J'ai commencé mes recherches sur eBay. Bien que j'y ai trouvé de nombreux serveurs Dell PowerEdge R410/R210 d'occasion à moins de 100 $, avec mon expérience dans un centre de données, je savais que ces unités 1U émettent trop de bruit et ne conviennent pas pour un usage domestique. En général, les serveurs de type tour sont souvent moins bruyants, mais malheureusement, il y en avait peu en vente sur eBay, et tous étaient soit chers, soit peu puissants.
Le site suivant que j'ai visité était Craigslist, où j'ai trouvé une personne vendant un HP ProLiant N40L d'occasion pour seulement 75 $ ! Je connaissais ces serveurs, qui en général, même d'occasion, coûtent environ 300 $, donc j'ai envoyé un message au vendeur en espérant que l'annonce soit toujours d'actualité. En apprenant que c'était le cas, je me suis rapidement dirigé vers San Mateo pour récupérer ce serveur, qui m'a immédiatement plu au premier coup d'œil. Il avait peu d'usure et, à part une légère couche de poussière, tout le reste était en parfait état.

Photo du serveur, juste après l'achat
Voici la spécification du kit que j'ai acheté :
- CPU: AMD Turion(tm) II Neo N40L Processeur Dual-Core (64 bits)
- RAM: 8 Go de RAM non-ECC (installé par le précédent propriétaire)
- Flash: Lecteur USB de 4 Go
- Connecteurs SATA: 4 + 1
- NIC: NIC intégré de 1 Gbps
Inutile de dire qu'en dépit de ses quelques années, la spécification de ce serveur surpasse toujours la plupart des options NAS offertes sur le marché, surtout en ce qui concerne la mémoire vive. Plus tard, j'ai même fait une mise à jour à 16 Go ECC avec un tampon plus large et une protection des données améliorée.
Choix des disques durs
Maintenant que nous avons un excellent système fonctionnel, il nous reste à choisir des disques durs. Il est évident qu'avec ces 75 $, je n'ai reçu que le serveur sans HDD, ce qui ne m'a pas surpris.
Après avoir effectué des recherches, j'ai découvert que pour fonctionner avec des systèmes NAS en continu 24/7, les HDD WD Red sont les meilleurs. Pour les acheter, je me suis tourné vers Amazon, où j'ai acheté 4 exemplaires de 3 To. En principe, vous pouvez connecter n'importe quel HDD de votre choix, mais veillez à ce qu'ils soient de même capacité et vitesse. Cela vous aidera à éviter d'éventuels problèmes de performance RAID à l'avenir.
Configuration du système
Je pense que beaucoup utiliseront un système pour leurs montages NAS. , et il n'y a rien de mal à cela. Cependant, malgré la possibilité d'installer ce système sur mon serveur, j'ai préféré utiliser CentOS, car le système ZFS sur Linux est initialement préparé pour un environnement de production, et en général, la gestion des serveurs Linux m'est plus familière. De plus, je ne m'intéressais pas à l'interface à la mode et aux fonctionnalités offertes par FreeNAS – un ensemble RAIDZ et le partage AFP me suffisaient.
Installer CentOS sur une clé USB est assez simple : il suffit de spécifier la clé USB comme source de démarrage, et lors du lancement, l'assistant d'installation vous guidera à travers toutes les étapes.
Création de RAID
Après l'installation réussie de CentOS, j'ai également installé ZFS sur Linux, en suivant les .
Après ce processus, j'ai chargé le module ZFS Kernel :
$ sudo modprobe zfs J'ai créé un ensemble RAIDZ1 à l'aide de la commande 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 Notez que j'utilise ici les ID des disques durs au lieu de leurs noms affichés (sdx), afin de réduire le risque d'échec de leur montage après le démarrage en raison de la modification des lettres d'appellation.
J'ai également ajouté un ZIL et un cache L2ARC, s'exécutant sur un SSD séparé, en divisant ce SSD en deux partitions : 5 Go pour le ZIL et le reste pour le L2ARC.
Concernant le RAIDZ1, il peut tolérer la défaillance d'un disque. Beaucoup affirment que cette option de pool ne devrait pas être utilisée en raison du risque de défaillance d'un second disque pendant la reconstruction du RAID, ce qui peut entraîner une perte de données. J'ai ignoré cette recommandation car je fais régulièrement des sauvegardes de données importantes sur un appareil distant, et la défaillance de l'ensemble du pool peut n'affecter que l'accès aux données, mais pas leur intégrité. Si vous ne pouvez pas faire de sauvegardes, il est préférable d'utiliser des solutions comme RAIDZ2 ou RAID10.
Pour vérifier le succès de la création du pool, vous pouvez exécuter :
$ sudo zpool statuset
$ sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 510G 7.16T 140K /mnt/data Par défaut, ZFS monte le pool nouvellement créé directement dans /, ce qui est généralement indésirable. Vous pouvez changer cela en exécutant :
zfs set mountpoint=/mnt/data dataIci, vous pouvez choisir de créer un ou plusieurs jeux de données pour stocker des données. J'en ai créé deux, un pour la sauvegarde Time Machine et un autre pour le stockage commun de fichiers. J'ai limité la taille du jeu de données Time Machine à une quota de 512 Go pour éviter sa croissance infinie.
Optimisation
zfs set compression=on dataCette commande active la prise en charge de la compression ZFS. La compression utilise un minimum de puissance CPU, mais peut considérablement améliorer la bande passante I/O, c'est pourquoi son utilisation est toujours recommandée.
zfs set relatime=on data Avec cette commande, nous réduisons le nombre de mises à jour à atime, afin de diminuer la génération d'IOPS lors de l'accès aux fichiers.
Par défaut, ZFS sur Linux utilise 50 % de la mémoire physique pour l'ARC. Dans mon cas, où le nombre total de fichiers est relativement faible, ce volume peut être augmenté en toute sécurité à 90 %, car aucune autre application ne tournera sur le serveur.
$ cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=14378074112Ensuite, en utilisant , vous pouvez vérifier que les modifications ont été prises en compte :
$ python arc_summary.py
...
Taille de l'ARC: 100.05% 11.55 GiB
Taille cible : (Adaptive) 100.00% 11.54 GiB
Taille min (Limite dure) : 0.27% 32.00 MiB
Taille max (Haute eau) : 369:1 11.54 GiB
...Configuration des tâches répétées
J'ai utilisé pour configurer les timers systemd exécuter le nettoyage une fois par semaine et pour créer automatiquement des instantanés d'état toutes les 15 minutes, 1 heure et 1 jour.
Installation de Netatalk
est une implémentation open-source de l'AFP (). En suivant S, j'ai littéralement eu un paquet RPM compilé et installé en quelques minutes.
Configuration du fichier
$ cat /etc/netatalk/afp.conf
[datong@Titan ~]$ cat /etc/netatalk/afp.conf
;
; Fichier de configuration Netatalk 3.x
;
[Global]
; Paramètres du serveur global
mimic model = TimeCapsule6,106
; [Homes]
; regex du répertoire de base = /home
; [Mon Volume AFP]
; chemin = /path/to/volume
; [Mon Volume Time Machine]
; chemin = /path/to/backup
; time machine = yes
[Fichiers de Datong]
chemin = /mnt/data/datong
utilisateurs valides = datong
[Sauvegardes de Time Machine de Datong]
chemin = /mnt/data/datong_time_machine_backups
time machine = yes
utilisateurs valides = datong Veuillez noter que vol dbnest est dans mon cas une amélioration significative, car par défaut, Netatalk écrit la base de données CNID à la racine du système de fichiers, ce qui était tout à fait indésirable, puisque mon système de fichiers principal fonctionne sur USB, ce qui est relativement lent. L'activation de vol dbnest permet de conserver la base de données à la racine du Volume, qui dans ce cas fait référence au pool ZFS et est déjà beaucoup plus performant.
Activation des ports dans le pare-feu
$ 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
Si tout a été configuré correctement, votre machine devrait apparaître dans le Finder, et Time Machine devrait également fonctionner.
Installations supplémentaires
Surveillance S.M.A.R.T
Il est recommandé de suivre l'état de vos disques afin de prévenir leur défaillance.
$ sudo yum install smartmontools
$ sudo systemctl start smartdDémon pour l'UPS
Surveille la charge de l'UPS APC et éteint le système lorsque la charge devient critique.
$ sudo yum install epel-release
$ sudo yum install apcupsd
$ sudo systemctl enable apcupsdMise à niveau matérielle
Une semaine après la configuration du système, j'ai commencé à m'inquiéter de la mémoire sans ECC installée sur le serveur. De plus, dans le cas de ZFS, une mémoire supplémentaire pour la mise en cache serait très utile. J'ai donc de nouveau fait appel à Amazon, où j'ai acheté 2x Kingston DDR3 8 Go RAM ECC pour 80 $ chacun et remplacé la RAM de bureau installée par le propriétaire précédent. Le système a démarré du premier coup sans aucun problème, et j'ai vérifié que la prise en charge de l'ECC était activée :
$ dmesg | grep ECC
[ 10.492367] EDAC amd64: DRAM ECC enabled.Résultat
Le résultat m'a beaucoup réjoui. Maintenant, je peux constamment saturer la connexion LAN 1 Gbps du serveur en copiant des fichiers, et Time Machine fonctionne parfaitement. En somme, je suis satisfait de la configuration.
Coût total :
- 1 * HP ProLiant N40L = 75 $
- 2 * 8 Go RAM ECC = 174 $
- 4 * WD Red 3 To HDD = 440 $
Au total = $689
Maintenant, je peux dire que ça en valait la peine.
Constituez-vous vos propres serveurs NAS ?
Source : habr.com
