Gjournaling un server à usage général sur un petit réseau

J'ai un server général (courrier, internet, file, etc.) qui fonctionne sur un petit réseau mixte (Windows / FreeBSD). Je ne suis pas satisfait de la façon dont j'ai exposé le disque à l'origine et, étant donné qu'il est plutôt dépassé de toute façon, j'ai l'intention de simplement réinstaller toute la machine et de réparer tous les petits ennuis pendant que je suis là.

J'ai utilisé le gjournal sur d'autres machines et je suis content de ça. Je sais comment configurer de nouvelles partitions afin qu'elles contiennent à la fois le journal et datatables, et je sais comment créer un journal pour une partition existante sur une partition nouvellement créée. J'ai encore quelques questions à propos de gjournal avant de commencer la machine:

  1. Comment puis-je créer des partitions pour contenir à la fois le journal et datatables pendant l'installation de FreeBSD, si je dois créer une partition de journal distincte pour chaque partition, je franchirai la limite de 8 lettres de partition.

  2. Je sais qu'il est sécurisé de monter des filesystems au fil du journal, mais les gens montent-ils le système de files racine aussi bien que journalistique ou est-il imprudent?

  3. Est-il possible de consulter une tranche entière à la fois? Cela permettrait d'augmenter considérablement la taille de ma racine, / var et plusieurs autres petites partitions pour avoir assez d'espace pour stocker datatables du journal.

Après avoir dérangé, j'ai finalement trouvé un moyen d'accomplir ce que je voulais il y a quelque time, mais j'ai oublié de mettre à jour ma question ici. À l'avenir (au début d'octobre), je replace l'set de la machine et, en fait, passer à ZFS. En attendant, je publierai ma solution ici afin que d'autres personnes puissent l'utiliser.

La solution consiste à faire en sorte que le système de files à installer à partir de FreeBSD. Je n'ai pas pu charger le module gjournal kernel du disque Fixit, alors j'ai installé une installation de base sur une key USB. Après avoir effacé tout le disque que j'allais installer, j'ai démarré la machine à partir de la key USB.

La première étape consistait à charger le module gJournal kernel avec " gjournal load " puis à marquer le disque sur /dev/ad0 j'allais installer ( /dev/ad0 ) " gjournal label ad0 ". Vous devriez maintenant voir une input /dev/ad0.journal inside /dev . La prochaine étape consiste à écrire un secteur de démarrage sur ce disque avec bsdlabel . Dans le cas de mon système amd64, il s'agissait de « bsdlabel -wBm amd64 ad0.journal », pour bsdlabel -wBm amd64 ad0.journal les spécificités de votre système, voir la page de manuel bsdlabel(8) . J'ai continué à éditer les labels avec bsdlabel, car vous modifiez normalement la configuration du disque, mais en utilisant /dev/ad0.journal où vous utilisez normalement /dev/ad0 . J'ai fini par spécifier la disposition suivante dans bsdlabel -e ad0.journal :

 # size offset fstype [fsize bsize bps/cpg] a: 256M 16 4.2BSD 2048 16384 b: 2G * swap c: * * unused d: 2G * 4.2BSD 2048 16384 e: 512M * 4.2BSD 2048 16384 f: 6G * 4.2BSD 2048 16384 g: * * 4.2BSD 2048 16384 

Les tailles spécifiques dont vous avez besoin varieront bien. Après avoir spécifié ces partitions /dev/ devrait afficher les différentes inputs /dev/ad0.journala via /dev/ad0.journalg . Maintenant, nous pouvons formater les nouveaux filesystems en utilisant newfs(8) . J'ai utilisé UFS2 avec des labels pour pouvoir me référer à /dev/label/<label> dans /etc/fstab au lieu du périphérique de disque. La command que j'ai exécuté était newfs -O 2 -J -L rootfs /dev/ad0.journala , -O 2 utilise UFS2, -J active la journalisation sur une partition spécifique et -L rootfs noms /dev/ad0.journala vers /dev/label/rootfs . N'oubliez pas que vous voudrez peut-être désactiver la journalisation sur, par exemple, la partition /tmp , dans ce cas, ne passez pas le drapeau -J pour ces partitions. Même si elles sont sur le disque journalisé, GEOM ne publiera que les systèmes UFS de journal qui indiquent si datatables écrites sont des méta-données ou non, ce qui n'arrive que pour les filesystems créés avec -J ou pour lesquels vous activez la journalisation manuellement via tunefs(8) .

Maintenant, la partie délicate est terminée et nous avons juste besoin d'installer le operating system dans notre système de files journalisé récemment créé, j'ai simplement utilisé le disque d'installation. Comme nous avons déjà créé notre système de files, le programme d'installation du CD ne peut pas être utilisé. Au lieu de cela, il suffit de monter le CD à partir de l'installation USB, puis de monter le système de files racine nouvellement créé (j'utiliserai /tmp/newinstall comme sharepoint assembly ici). Ensuite, montez toutes les autres partitions que vous avez créées dans /tmp/newinstall sous /var , /usr et tout ce que vous avez divisé. Ensuite, définissez la variable d'environnement DESTDIR sur ce nouveau path ( export DESTDIR=/tmp/newinstall ).

Maintenant, modifiez le directory où vous montrez le CD d'installation, sur le CD, vous findez un dossier nommé d'après la version de FreeBSD que vous avez téléchargé. Dans ce dossier, il existe plusieurs dossiers contenant chacun un file install.sh , exécutez chacun de ces scripts (vous doit spécifier le kernel GENERIC comme argument du script d'installation dans le directory du kernel).

Après cela, n'oubliez pas de copyr / déplacer /tmp/newinstall/boot/GENERIC vers /tmp/newinstall/boot/kernel ou vous findez que le système ne peut pas find un kernel à démarrer. Enfin, modifiez /tmp/newinstall/boot/loader.conf et ajoutez la ligne geom_journal_load="YES" pour charger le support gjournal au démarrage, vous pouvez (et devez) supprimer cette ligne si vous comstackz un kernel personnalisé avec un support gJournal inclus (les options requirejses pour cela sont les options UFS_GJOURNAL et les options GEOM_JOURNAL ).

La dernière chose à faire consiste à créer un file /tmp/newinstall/etc/fstab qui monte les partitions requirejses au démarrage. Vous pouvez spécifier les périphériques /dev/ad0.journala ou les /dev/label/rootfs et les autres labels que vous avez fournies. Les détails sur la syntaxe et les options pour le file peuvent être lus dans la page de manuel de fstab(5) . Gardez à l'esprit qu'avec la journalisation, il est maintenant «sûr» [1] de monter votre système de files de manière asynchronous. Notez également que si les périphériques journalisés n'ont pas besoin de fsck vous devez toujours remplir la colonne fsck dans le file fstab. Si vous ne le faites pas, votre système ne démarrera pas. Le système reconnaît les disques journalisés et les traite différemment dans les controls fsck automatisés, tout en exécutant les controls appropriés pour un système journalisé.

[1] – Safe signifie que votre système de files ne sera pas corrompu par un crash lors de la journalisation. Les données qui n'ont pas été écrites sur le disque au moment du crash peuvent encore être perdues, par exemple si elles sont mises en memory tampon par le operating system ou le disque. Les données peuvent restr dans ces tampons pendant un bon moment.

Juste une suggestion pour 1. – utilisez la table Gpt, elle supporte jusqu'à 26 partitions

Pour 3. – vous pouvez joindre tout le disque à la fois (données d'ici)

PS. Et de toute façon, vous devriez essayer tout cela à partir de VM comme VirtualBox.

PPS. Peut-être que vous devriez essayer ZFS?