L'année dernière, j'avais besoin de créer des instructions pour l'installation du système d'exploitation Ubuntu 18.04. Soit dit en passant, il n'y a rien de compliqué à installer Ubuntu, mais il y a une nuance: je voulais utiliser le système de fichiers ZFS comme base. D'une part, Ubuntu prend en charge ZFS au niveau du noyau, mais il n'y a pas encore de programme d'installation pour cela, mais il y a une instruction, oui:
https://github.com/zfsonlinux/zfs/wiki/Ubuntu-18.04-Root-on-ZFS
La séquence d'actions dans ce manuel est généralement correcte, mais certains points nécessitent un ajustement. Ce qui suit n'est donc pas une traduction directe des instructions, mais gratuite, en tenant compte des corrections, de mon expérience avec ZFS et autres. Je ne considère pas non plus les problèmes de chiffrement du disque et j'utilise le chargeur de démarrage MBR. Mes instructions d'installation peuvent être obtenues ici.
0. Préparation du serveur
La première chose qui manque dans les instructions et qui n'est en aucun cas prise en compte est que ZFS ne fonctionne pas très bien avec les matrices RAID matérielles, en particulier, il est connecté au cache d'écriture, ce qui est compréhensible: le système de fichiers ZFS est journalisé et nécessite un contrôle complet sur les opérations d'écriture. De plus, lorsque vous utilisez une matrice RAID matérielle prête à l'emploi, les capacités ZFS sont perdues en termes de cache, de rechange et plus encore. Par conséquent, tous les disques doivent être transférés en mode HBA, et si cela n'est pas possible, créez un RAID distinct pour chaque disque et désactivez le contrôleur de cache d'écriture.
De plus, lorsque vous utilisez l'agrégation de ports réseau, vous pouvez les désactiver au stade de l'installation, afin de ne pas le compliquer (j'effectuerai toutes les autres opérations sans liaison).
1. Préparation de l'environnement d'installation
1.1. Livecd
Comme mentionné précédemment, malheureusement, il n'y a pas de programme d'installation Ubuntu prêt à l'emploi utilisant root sur ZFS, donc l'installation est effectuée à l'aide d'un disque LiveCD:
Téléchargez ici: http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso
En même temps, j'ai essayé avec des collègues d'utiliser différentes images de disque car je ne voulais pas vraiment utiliser le shell graphique, mais cela n'a rien donné de bon.
Nous démarrons à partir du LiveCD, sélectionnez Try Ubuntu et ouvrons le terminal (Ctrl + Alt + T).
1.2. Mise à jour et installation de référentiels
''
sudo apt-add-repository universe sudo apt update
Ici, nous attendons la première erreur si les paramètres réseau du serveur ne sont pas déterminés par DHCP. La mise à jour des référentiels ne fonctionnera pas, alors configurons le réseau.
Nous examinons les interfaces réseau et trouvons celle par laquelle nous nous connecterons:
sudo ip a
Configurez l'interface réseau:
sudo echo "auto {{ NAME }}" >> /etc/network/interfaces sudo echo "iface {{ NAME }} inet static" >> /etc/network/interfaces sudo echo " address {{ IP }}" >> /etc/network/interfaces sudo echo " netmask {{ NETMASK }}" >> /etc/network/interfaces sudo echo " gateway {{ GATEWAY }}" >> /etc/network/interfaces sudo service networking restart
Et résolveur DNS:
sudo echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
Mise à jour des référentiels:
sudo apt update
1.3. Serveur SSH (facultatif)
Pour faciliter l'installation, vous pouvez augmenter le serveur OpenSSH et effectuer toutes les autres opérations via le client SSH
Définissez le mot de passe de l'utilisateur ubuntu:
passwd
C'est important! Sinon, l'accès via ssh se fera sans mot de passe avec les droits sudo. Cependant, vous ne pouvez pas définir un mot de passe simple.
Installez et exécutez OpenSSH:
sudo apt install openssh-server sudo service ssh start
Et dans le terminal du poste de travail:
ssh ubuntu@{{ ip server }}
1.4. Devenez root
sudo -s
1.5. Installation de la prise en charge ZFS dans un environnement LiveCD
apt install --yes debootstrap gdisk zfs-initramfs
2. Partitionnement et formatage des disques durs
2.0. Définition de tableaux de disques
L'instruction principale ne contient pas de point important sur la façon de déterminer les matrices de disques.
En règle générale, le nombre de disques sur les serveurs est le suivant:
- 2 disques;
- 4 disques;
- de nombreux disques;
Nous ne considérons pas 1 disque car il s'agit généralement d'une anomalie.
2.0.1. 2 disques
Ici, tout est simple, une baie MIRROR (RAID1). S'il existe un autre troisième disque, vous pouvez le placer dans un disque de secours (SPARE) ou assembler une matrice RAIDZ (RAID5). Mais 3 disques sur le serveur sont très rares.
2.0.2. 4 disques
Si tous les disques sont identiques, il n'y a que trois options (le quatrième RAID0 que je ne considère pas fondamentalement):
- MIRROR + MIRROR est un analogue de RAID10, plus précisément RAID01, car dans ZFS c'est miroir + miroir. 50% de l'espace disque disponible;
- RAIDZ est un analogue de RAID5. 75% de l'espace disque disponible;
- RAIDZ2 est un analogue de RAID6. 50% de l'espace disque disponible;
En pratique, j'utilise le tableau MIRROR + MIRROR, alors qu'il est évident que le tableau RAIDZ est le plus rentable, car il fournit plus d'espace disque, mais il y a des nuances
En termes de tolérance aux pannes, les tableaux sont classés dans cet ordre (du meilleur au pire):
- RAIDZ2 - deux disques peuvent être perdus sans perte de données;
- MIROIR + MIROIR - un disque peut être perdu sans perte de données, et avec une probabilité de 66% un deuxième disque peut être perdu sans perte de données;
- RAIDZ - un seul disque peut être perdu sans perte de données;
En termes de vitesse, les tableaux sont organisés dans cet ordre:
- MIROIR + MIROIR - à la fois en termes d'écriture et de lecture;
- RAIDZ - en termes d'enregistrement est plus lent, car en plus de l'enregistrement, il est nécessaire de calculer la somme de contrôle;
- RAIDZ2 - en termes d'écriture est encore plus lent car il nécessite le calcul de sommes de contrôle plus complexes;
En termes de vitesse de la baie lors de la dégradation d'un disque:
- MIROIR + MIROIR - lorsqu'un lecteur tombe en panne, essentiellement seule la lecture parallèle d'un miroir est perdue, le deuxième miroir fonctionne sans dégradation des performances;
- RAIDZ2 - la dégradation de la dégradation des performances est plus élevée car elle nécessite une allocation en arrière du bloc à partir de la somme de contrôle pour 1/4 des données + recherche de bloc;
- RAIDZ - la dégradation est beaucoup plus importante, car elle nécessite un recalcul du bloc à partir de la somme de contrôle pour 1/3 des données + recherche de bloc;
La comparaison des caractéristiques est subjective, mais reflète suffisamment mon choix comme terrain d'entente.
Dans le même temps, vous devez comprendre que «plus lent» et «encore plus lent» ne l'est pas parfois, mais seulement 10 à 20% dans le pire des cas. Par conséquent, si votre base de données ou votre application pour travailler avec des disques n'est pas optimisée, vous perdrez de la vitesse en principe, ne remarquez pas. Le facteur de vitesse d'enregistrement ne doit être pris en compte que lorsque vous en avez vraiment besoin.
2.0.2. De nombreux disques
Le problème principal est que si nous avons beaucoup de disques et que nous voulons créer une matrice commune pour tout, nous devrons marquer chaque disque avec le secteur de démarrage ou faire une petite feinte avec nos oreilles. En pratique, pour les plateformes multi-disques, j'essaye de construire cette configuration:
- 2 disques SSD - nous faisons un miroir et en tant que baie de démarrage principale avec le système d'exploitation et le cache ZFS pour la deuxième baie de disques;
- Le reste est encombré de disques SATA ou SAS et sans balisage, nous collectons une matrice de disques ZFS;
La mĂŞme chose s'applique aux serveurs Ă 4 disques si nous voulons obtenir une plate-forme assez universelle;
Si les disques sont tous identiques et qu'il est inutile d'allouer deux disques à une baie distincte (par exemple, 6 disques de 8 To chacun), vous pouvez créer des disques amorçables du premier groupe de la baie. Autrement dit, si vous allez créer un tableau comme: MIRROR + MIRROR + MIRROR ou RAIDZ + RAIDZ, alors nous marquons le secteur de démarrage uniquement pour le premier groupe. En principe, il est possible de partitionner un seul disque, même pour MIRROR et RAIDZ, et de remplacer le reste sous une forme brute, ZFS fera le tableau par le plus petit élément lui-même, mais dans ce cas, si le premier disque tombe en panne, vous perdez le seul disque de démarrage, donc vous ne le faites pas ça vaut le coup.
Il est important de comprendre que dans le système de fichiers à bandes ZFS, ce n'est pas exactement RAID0, et cela fonctionne un peu différemment et ne nécessite pas les mêmes tailles de disque, donc l'allocation d'un petit espace pour le secteur de démarrage de la météo ne fera pas grand-chose, l'essentiel est d'indiquer dans le BIOS le disque correct à partir duquel démarrer .
2.1. Partitionnement et nettoyage de disque
Le package mdadm est utilisé pour marquer le disque, mettez-le:
apt install --yes mdadm
Nous regardons quels disques nous avons disponibles:
lsblk
Et nettoyez-les:
sgdisk --zap-all /dev/{{ disk name }}
2.2. Disposition du disque
En fait, la partition de démarrage:
sgdisk -a1 -n1:34:2047 -t1:EF02 /dev/{{ disk name }}
La section principale.
Ici, il peut y avoir des variations: si vous devez allouer une partition supplémentaire de disques SSD, par exemple, pour ZFS Cache ou pour Aerospike, alors vous faites la partition principale de volume limité:
sgdisk -n2:0:+100GB -t2:BF01 /dev/{{ disk name }} sgdisk -n3:0:0 -t2:BF01 /dev/{{ disk name }}
Si nous utilisons tout l'espace, créez simplement une section pour l'espace restant:
sgdisk -n2:0:0 -t2:BF01 /dev/{{ disk name }}
N'oubliez pas de vérifier comment cela s'est avéré:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 1.8T 0 disk ├─sda1 8:1 0 1007K 0 part └─sda2 8:2 0 1.8T 0 part sdb 8:16 0 1.8T 0 disk ├─sdb1 8:17 0 1007K 0 part └─sdb2 8:18 0 1.8T 0 part ...
2.3. Création d'un tableau ZFS
zpool create \ -o ashift=12 \ -O atime=off \ -O canmount=off \ -O compression=lz4 \ -O checksum=fletcher4 \ -O normalization=formD \ -m legacy \ -R /mnt \ -f \ tank \ mirror \ /dev/{{ disk a part 2}} \ /dev/{{ disk b part 2}}
Le premier rake sur lequel l'un de mes administrateurs familiers est immédiatement intervenu, c'est que lors de la création d'un tableau ZFS, il est nécessaire de spécifier non pas un disque mais une partition sur le disque, s'il est spécialement créé pour cela.
Ensuite, dans l'ordre:
- ashift = 12 - utilise la taille de bloc en 4K, en principe, je ne comprends toujours pas pourquoi souvent dans les systèmes d'exploitation la taille de bloc par défaut est de 512 octets alors qu'il n'y a pratiquement pas de tels disques;
- atime = off - désactiver la mise à jour de la date d'accès aux fichiers, je la désactive toujours car je n'ai jamais vraiment eu besoin de ces informations et il n'est pas nécessaire de charger à nouveau le noyau;
- canmount = off - désactive la possibilité de monter la partition racine;
- compression = lz4 - active la compression des données avec l'algorithme LZ4. Il est recommandé d'inclure ce paramètre non seulement pour économiser de l'espace disque, mais également pour réduire le nombre d'opérations d'E / S. Dans le même temps, pour ce rythme de compression, utilisation extrêmement faible du CPU;
- checksum = fletcher4 - l'algorithme de somme de contrôle par défaut, et donc fletcher4 mérite d'être vérifié à nouveau;
- normalisation = formD - utilisé pour améliorer le travail avec UTF-8, limitant en fait la possibilité d'utiliser des noms de fichiers non UTF-8. Ici, chacun décide pour lui-même, dans notre travail, nous n'utilisons toujours que l'encodage UTF-8;
- xattr = sa - Accélération du travail avec des attributs étendus. Je n'utilise pas cette option car, lorsque cette option est utilisée, la compatibilité avec d'autres implémentations OpenZFS est désactivée (par exemple: FreeBSD). Et la compatibilité avec Windows et d'ailleurs, je dois. De plus, cette option peut être activée sur la dernière section;
- -m legacy - point de montage vers nulle part, et pas besoin de monter la partition racine;
- -R / mnt - préfixe de montage de partition temporaire pour l'installation du noyau;
- -f - force la création d'un tableau. Si la baie ZFS a déjà été collectée sur des disques, la commande create ne fonctionnera pas, vous ne savez jamais, vous avez peut-être fait une erreur et vous voulez effacer des données importantes;
J'indique habituellement le nom de la matrice de disques du système racine en tant que tank, bien qu'à l'heure actuelle, ils préfèrent utiliser le nom rpool (pool racine) dans l'environnement Linux. Dans ma pratique, j'utilise généralement cette dénomination des tableaux:
- tank - le réseau principal du système;
- store - une baie supplémentaire avec de grands disques pour le stockage des données;
- cache - un tableau supplémentaire de disques SSD, si la partition principale ne s'y trouve pas;
En général, je recommande fortement de développer immédiatement une pratique de nommer quelque chose qui ne serait pas confondu.
3. Installation du système
3.1. et 3.2. Création d'un système de fichiers racine
J'ai spécifiquement combiné les paragraphes 3.1. et 3.2. car je pense que spécifier la partition racine au troisième niveau est absolument redondant. C'est vrai, pendant plusieurs années de travail avec ZFS, je n'ai jamais eu besoin de faire de manipulations avec la partition racine. De plus, il existe des images avec lesquelles vous pouvez créer des points de contrôle. Par conséquent, ma section racine est tank / root:
zfs create -o mountpoint=/ tank/root
Dans le même temps, la première erreur fatale est détectée dans l'instruction d'origine, à savoir l'absence de partition de démarrage pour la matrice de disques:
zpool set bootfs=tank/root tank
3.3. Créer des partitions supplémentaires
Dans cette partie des instructions de base, vous pouvez tout jeter et oublier. Les gars ont évidemment exagéré avec l'écrasement et les options, à cause de quoi, en cours de route, j'ai dû réparer quelque chose. Certes, cela n'a pas beaucoup aidé. Etant donné que des problèmes ultérieurs apparaissent à nouveau et qu'en fin de compte, il s'avère que cela ne fonctionne tout de même pas, par conséquent, au paragraphe 4.11. cela est à nouveau corrigé.
Séparer une section distincte pour / var / games semble assez épique. Cela ne me dérange pas, mais c'est clairement trop.
Le fait que les partitions soient créées dans ZFS simplement et prennent en charge une hiérarchie ne signifie pas que les répertoires classiques doivent être abandonnés. Un exemple simple: j'ai déjà eu plus de 4K partitions ZFS sur un groupe de serveurs, c'était nécessaire, mais le redémarrage du serveur a ralenti pendant plusieurs minutes en raison du montage de ces partitions.
Commençons par une table rase.
Il existe des partitions de fichiers statiques et dynamiques.
Les sections de fichiers statiques incluent des sections avec des programmes et leurs paramètres, elles sont remplies une fois et ne changent pas pendant le fonctionnement. En même temps, les anciennes partitions statiques étaient divisées en partitions système et partitions utilisateur (/ usr), mais pour le moment elles sont mélangées dans les systèmes d'exploitation Linux et il n'y a aucun sens à les séparer, et cela ne fonctionnera pas.
Les sections de fichiers dynamiques incluent des sections dans lesquelles sont stockées:
- Données temporaires - éq.: Tmp, swap;
- Journaux de travail - éq.: Var / log;
- Données utilisateur - par exemple: domicile;
- Données - éq.: Var / db et quelle chance;
- D'autres programmes se présentent sous forme de fichiers;
Dans les familles Linux, les partitions dynamiques incluent / tmp et / var, mais ce n'est pas exact, car elles peuvent entrer dans / var / lib, les programmes et les bibliothèques, en général, tout est mélangé, mais néanmoins ...
Vous devez d'abord décider de créer la partition / tmp sur le disque ou en mémoire en tant que tmpfs. Si nous créons sur disque, alors créez une partition distincte pour cela:
zfs create -o mountpoint=legacy tank/tmp
Options com.sun: auto-snapshot = false setuid = bien, peu importe la météo, ne vous compliquez pas. Mais avec SWAP, nous le ferons plus tard à l'étape 7.
Séparez la section var séparément:
zfs create -o mountpoint=legacy tank/var
Et les sections utilisateurs:
zfs create -o mountpoint=/home tank/home zfs create -o mountpoint=legacy tank/home/root
Il est logique d'allouer des partitions utilisateur, car dans la pratique, elles sont périodiquement obstruées par différents artefacts et pour faciliter leur surveillance, il est préférable de créer des partitions distinctes pour elles, ainsi que le répertoire personnel de l'utilisateur root (en particulier pour ceux qui aiment travailler en tant que root). L'utilisation de quotas sur les répertoires utilisateur non seulement n'aide pas à obstruer l'espace disque, mais interfère également, car dans de tels cas, les utilisateurs commencent à laisser des artefacts n'importe où et il peut être assez difficile de les retrouver plus tard. Ce n'est pas traité, il vous suffit donc de contrôler et de battre les mains.
Le point de montage tank / home / root est répertorié comme hérité, pas comme / root. Ceci est correct, car le montage de cette section est effectué dans la section 4.11
Nous devons maintenant monter temporairement nos partitions dynamiques dans / mnt:
cd /mnt/ mkdir var tmp root mount -t zfs tank/var /mnt/var/ mount -t zfs tank/tmp /mnt/tmp/ mount -t zfs tank/home/root /mnt/root/
3.4 Installer le noyau
Dans l'instruction principale, il y a quelques commandes supplémentaires inutiles, nous n'y prêtons pas attention, apparemment des artefacts d'expériences:
debootstrap bionic /mnt
En conséquence, vous devriez obtenir quelque chose comme ceci:
zfs list NAME USED AVAIL REFER MOUNTPOINT tank 213M 1.76T 96K legacy tank/home 208K 1.76T 96K /mnt/home tank/home/root 112K 1.76T 112K legacy tank/root 147M 1.76T 147M /mnt tank/tmp 96K 1.76T 96K legacy tank/var 64.6M 1.76T 64.6M legacy
La taille de la partition 96K vide, respectivement, seul tank / tmp est resté vide, et le reste a été enregistré lors de l'installation du noyau, ce qui signifie que les partitions ont été montées correctement.
4. Configuration du système
4.1. Configurer les hĂ´tes et le nom d'hĂ´te
echo HOSTNAME > /mnt/etc/hostname echo “127.0.0.1 localhost” > /mnt/etc/hosts echo “127.0.0.1 HOSTNAME” >> /mnt/etc/hosts
4.2. Configurer l'interface réseau
Alors oui, nous avons déjà netplan ici:
nano /mnt/etc/netplan/setup.yaml network: version: 2 renderer: networkd ethernets: eno2: dhcp4: no dhcp6: no addresses: [ {{ IP }}/{{ netmask }}, ] gateway4: {{ gateway IP }} nameservers: addresses: [8.8.8.8]
4.3. Configurer les référentiels apt
nano /mnt/etc/apt/sources.list deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe
src - pas nécessaire surtout
4.4. Nous montons les sections de fichiers virtuels LiveCD et «allons» au nouveau système
mount --rbind /dev /mnt/dev mount --rbind /proc /mnt/proc mount --rbind /sys /mnt/sys chroot /mnt /bin/bash --login
il est nécessaire d'utiliser - rbind, mais pas - bind
Nous sommes déjà dans le nouveau système ...
4.5. Configurer l'environnement de base
ln -s /proc/self/mounts /etc/mtab chmod 1777 /tmp apt update
Paramètres régionaux et heure:
dpkg-reconfigure locales * en_US.UTF-8 * ru_RU.UTF-8 dpkg-reconfigure tzdata
Et des éditeurs supplémentaires qui aiment quoi:
apt install --yes vim nano
4.6. Installation du support ZFS
apt install --yes --no-install-recommends linux-image-generic apt install --yes zfs-initramfs
4.8. Installez le chargeur de démarrage
Comme dit précédemment, j'utilise un MBR obsolète:
apt install --yes grub-pc
Pendant l'installation du chargeur de démarrage, il est nécessaire de sélectionner tous nos disques que nous avons identifiés comme amorçables, tandis que le programme d'installation jure sur tous les autres disques sauf le premier, nous sommes d'accord et faisons l'étape 5 (on ne sait pas pourquoi le reste a été laissé pour plus tard):
4.8.1. (5.1) Vérifiez que le système de fichiers racine est reconnu:
grub-probe / zfs
4.8.2. (5.2) Mettre Ă jour initrd
update-initramfs -u -k al
4.8.3. (5.3) Simplifier le débogage GRUB
vi /etc/default/grub ... GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX="console" ...
4.8.4. (5.4.) Mise à jour de la configuration du chargeur de démarrage
update-grub
4.8.5. (5.5.) Installez le chargeur de démarrage sur chaque disque marqué comme amorçable
grub-install /dev/sda grub-install /dev/sdb ...
Il est important que ces commandes fonctionnent correctement. Pour être honnête, je ne pouvais pas obtenir le contraire au moins une fois, donc je ne sais pas quoi faire, mais très probablement, si vous avez une erreur, vous avez probablement fait quelque chose de mal lors du marquage du disque (Section 2.2.).
4.8.6. (5.6.) Vérifiez que le module ZFS est installé
ls /boot/grub/*/zfs.mod /boot/grub/i386-pc/zfs.mod
4.10. Définissez le mot de passe root (difficile!)
passwd
Et oui, nous installerons openssh tout de suite, sinon nous aurons une surprise après le redémarrage si nous travaillons à distance:
apt install --yes openssh-server
N'oubliez pas de corriger la configuration sshd:
vi /etc/ssh/sshd_config ... PermitRootLogin yes ... PasswordAuthentication yes ...
4.11. Fixer les systèmes de fichiers de montage
Ici, nous sommes arrivés au plus intéressant. Le fait est que les partitions ZFS sont montées après le démarrage de certains démons (nous avons également fait basculer ZFS_INITRD_ADDITIONAL_DATASETS dans / etc / default / zfs), ce qui, à son tour, crée une structure par eux-mêmes dans / var commence à remplir les journaux système. Lorsque vient le temps de monter des partitions ZFS, il s'avère que les points de montage ne sont pas vides et que rien ne monte, les données sont dispersées, tout va mal. Par conséquent, vous devez spécifier des points de montage dans / etc / fstab car systemd se concentre principalement sur eux lors de l'accès au dossier:
vi /etc/fstab tank/var /var zfs noatime,nodev 0 0 tank/tmp /tmp zfs noatime,nodev 0 0 tank/home/root /root zfs noatime,nodev 0 0
Le reste dépend de l'article 6. déjà fait
6. Premier redémarrage
6.1. Prenez une photo de la partition racine
zfs snapshot tank/root@setup
Cela n'a aucun sens de sa part, dans la pratique, je n'ai jamais secoué la partition racine du système et je n'ai jamais utilisé d'instantanés de cette partition, mais laissez-la néanmoins mentir, cela peut être utile
6.2. Quitter chroot
exit
6.3. Démontez les partitions LiveCD et exportez le tableau ZFS
cd mount | grep -v zfs | tac | awk '/\/mnt/ {print $3}' | xargs -i{} umount -lf {} umount /mnt/root umount /mnt/var umount /mnt/tmp zpool export tank
Exportation de la baie de disques requise pour vider le cache zfs
6.4 Redémarrage
Le redémarrage est mieux effectué dans le terminal LiveCD, car si vous travaillez via un client ssh, le redémarrage via celui-ci peut entraîner le gel du serveur.
reboot
Si, néanmoins, quelque chose s'est mal passé et que le serveur n'est pas allé redémarrer, vous pouvez redémarrer de quelque manière que ce soit, car le tableau ZFS est exporté et il est difficile de l'endommager.
6.5. Nous attendons un redémarrage et allons en tant que root
6.6. Créez votre compte utilisateur
zfs create tank/home/{{ LOGIN }} useradd -u {{ UID }} -G adm,sudo -d /home/{{ LOGIN }}/ -s /bin/bash {{ LOGIN }} cp -a /etc/skel/.[!.]* /home/{{ LOGIN }} chown -R {{ LOGIN }}:{{ LOGIN }} /home/{{ LOGIN }}
Ajoutez la clé publique ssh à l'utilisateur et définissez le mot de passe pour lui:
su - {{ LOGIN }} mkdir .ssh chmod 0700 .ssh vi .ssh/authorized_keys exit passwd {{ LOGIN }}
Dans OpenSSH, nous supprimons la possibilité de se connecter en tant qu'authentification root et mot de passe:
vi /etc/ssh/sshd_config ... PermitRootLogin no ... PubkeyAuthentication yes ... PasswordAuthentication no ... service ssh restart
6.7. 6.8. Plus nécessaire
7. Configuration du swap
7.1. Créer une partition ZFS
zfs create \ -V 32G \ -b $(getconf PAGESIZE) \ -o compression=zle \ -o logbias=throughput \ -o sync=always \ -o primarycache=metadata \ -o secondarycache=none \ tank/swap
- -V 32G - La taille de notre SWAP, vous pouvez déterminer celle qui est vraiment nécessaire;
- -b $ (getconf PAGESIZE) - taille de bloc (4K avec ashift = 12);
- compression = zle - choisissez l'algorithme de compression qui est minimal en termes de consommation de ressources, car en fait la taille du bloc est 4K, la compression en tant que telle ne permettra pas l'utilisation pour l'entrée-sortie, mais il sera possible d'économiser sur zéro bloc;
- logbias = throughput - définition de la bande passante pour optimiser les opérations synchrones;
- sync = always - synchronise toujours l'enregistrement. Cela réduit légèrement les performances, mais garantit pleinement la fiabilité des données;
- primarycache = metadata - met en cache uniquement les métadonnées, car le swap ne sera pas utilisé pour lire le même bloc plusieurs fois;
- secondairecache = aucun - désactiver complètement le cache secondaire pour les raisons mentionnées ci-dessus;
7.2. Configurer la partition de swap
mkswap -f /dev/zvol/tank/swap echo /dev/zvol/tank/swap none swap defaults 0 0 >> /etc/fstab echo RESUME=none > /etc/initramfs-tools/conf.d/resume
7.3. Activer l'échange
swapon -av
En suivant les instructions, il n'y a pas grand-chose d'intéressant, car cela dépend fortement des préférences d'administrateurs spécifiques et des tâches du serveur dans son ensemble, à l'exception d'un point, à savoir: "Démarrage d'urgence"
Et n'oubliez pas de mettre le pare-feu
R. Botte d'urgence
Nous préparons l'environnement d'installation (point 1.)
Pendant la préparation, le tableau ZFS est importé, vous devez donc le réimporter, mais avec le point de montage correct:
zpool export -a zpool import -N -R /mnt tank zfs mount -a
, , , fstab, :
mount -t zfs tank/var /mnt/var/ mount -t zfs tank/tmp /mnt/tmp/ mount -t zfs tank/home/root /mnt/root/
, , chroot .4.4., . 6.3.
D.
3.3. . , : , /spool, /data. ZFS .
Résumé
- ZFS , , ;
- ZFS, , . ZFS — , ;
- .