Archive

Author Archive

Reasons to (not) setup swap on GNU/Linux

February 5, 2010 Leave a comment

Disclaimer: this article does not pretend to be a complete picture of using swap on UNIX.

Most of the time, recent GNU/Linux distributions insist on creating a swap area.

Swap is generally used to temporarily store memory used by running(/sleeping) applications, but might as well be used to store a copy of RAM to disk for hibernation. As disks are still many times slower than RAM, it always comes with huge performances impact.

Historically, RAM was so expensive that UNIX users bought only a fraction of actually used memory, and relied on swap for 2/3 of it (number still found in many advices today, while it is certainly outdated).

Today, you can buy quite a huge amount of RAM (even ECC) for almost nothing, it is not uncommon to be able to buy more than 4GB for less than 100€. So today, you buy RAM based on the total memory used by all the applications that might ever run at the same time. Of course, you probably don’t need then to allocate three times that amount to swap, especially when you know applications won’t use it.

The main danger of allocating much swap is that some application goes mad, eats up all memory, then swap and starts slowing down the whole machine (because it brings I/O in the dance), then (and only then) eventually get killed by the Linux OOM Killer, which is rather basic (just kills the running application taking currently the more memory, so might even miss the real guilty). Without swap (or reasonable amount), in contrast, the kill would happen far earlier, and not generate incredible I/O usage levels.

Of course, I/O impact is even worst in virtualized environments.

HOWTO Enable temporary swap file on GNU/Linux

February 5, 2010 1 comment

GNU/Linux supports swapping to a file on any filesystem, with reasonable performance impact since kernel 2.4. This might be useful whenever needing a temporary increase in available memory, I’m writing this article with that goal in mind.

Create a zero-filled regular file (following example would create a 1024x1M=1G swap size):

dd if=/dev/zero of=/.swapfile bs=1024 count=1M

Setup a swap area in it:

mkswap /.swapfile

Activate swap to this file (would not survive a reboot):

swapon /.swapfile

To check it did it:

swapon -s

Disable swap to this file:

swapoff /.swapfile

Of course, the file is not deleted on reboot, and you might reuse it several times.

Fixes for Gallery 2 French translation in module ‘core’

August 29, 2009 Leave a comment

After years using G2, I finally fixed the fr.po for core module and submitted it to latest registered French translator of Gallery2 several weeks again. After review, he encoded the following tracker on SF.net for everybody to benefit from it, even if no G2 update is ever published again:

https://sourceforge.net/tracker/?func=detail&aid=2846783&group_id=7130&atid=582564

As G2 is using gettext, updating it it fairly easy.

Enjoy!

VirtualBox

May 31, 2009 Leave a comment

VirtualBox (http://www.virtualbox.org/) un logiciel libre basé sur Qemu (http://www.nongnu.org/qemu/)[1] et édité par la société Innotek (rachetée récemment par Sun), est un excellent outil pour virtualiser des stations de travail sur une station de travail[2].
Non content d’être très fluide, il tourne sous Windows, GNU/Linux et (Open)Solaris[3].

Il en existe une version libre (VirtualBox Open Source Edition aka OSE) et une autre, propriétaire, offrant plus de fonctionnalités (surtout au niveau du hardware émulé).

La version OSE est disponible dans toutes les bonnes distributions GNU/Linux, tandis que la version de Sun n’est disponible que depuis leur site. Ils fournissent même des sources APT[4] pour qu’il soit facile de l’installer sur une Debian ou dérivée.

Attention cependant, la version OSE utilise aussi des fichiers de configuration des machines virtuelles dans une version nettement plus ancienne que celle du VirtualBox propriétaire. VirtualBox proposera au démarrage d’upgrader le format s’il y a lieu.

Read more…

Nexenta (OpenSolaris + Ubuntu)

May 31, 2009 3 comments

Vous le savez probablement, Sun a libéré (GPL v3) le code de son OS-phare (Solaris) il y a déjà quelques années.
La version communautaire de cet OS s’appelle assez logiquement OpenSolaris.
De cette version, en développement constant, sont issues les versions propriétaires de Sun (appelées “Solaris 10″).

Il tourne sous plusieurs architectures différentes: x86, x86_64 (selon la nomenclature Solaris, AMD64 selon la nomenclature Linux), et Sparc (l’architecture de Sun, pour les incultes). Il faut d’ailleurs savoir que cela fait longtemps que Solaris est à la fois 32 et 64 bits (multiarch, selon la nomenclature Linux).

Après une période de prise en main par une communauté (toujours assez réduite aujourd’hui, il faut bien le dire), plusieurs dérivés ont commencé à apparaître, menant à des versions LiveCD, des versions seulement pour une architecture ou une autre, …
Toutes intègrent tout ou parties des fonctionnalités particulières de Solaris (ZFS, SMF, Containers, DTrace, …).

Le problème de Solaris venant plutôt des outils utilisateurs (non-)fournis. Le choix (et souvent la qualité ou le côté pratique) est beaucoup plus vaste sous GNU/Linux.

Alors, plusieurs jouent le rapprochement avec Debian/Ubuntu, à des niveaux divers (avec ou sans Glibc, avec ou sans système de packaging correct, …).
Parmi celles-ci, l’une d’entre elles à retenu toute mon attention: Nexenta.

Nexenta est une petite société spécialisée dans le storage à base d’OpenSolaris (grâce à ZFS, qui Tue(tm)[1]). Pour son produit-phare, NexentaStor, elle a décidé d’utiliser un kernel OpenSolaris avec un userland Ubuntu[2].
Et pour (avoir une chance d’)obtenir de l’aide de l’extérieur, ils se basent sur une version communautaire, totalement libre[3], et appelée Nexenta Core Platform (qui en est à sa version 2.0, la version 3.0 étant en préparation).

Le problème principal de NCP est la fraîcheur des logiciels qui viennent du monde GNU/Linux, puis la non-intégration des Zones dans apt-clone (on ne peut pas mettre à jour les packages d’une zone non-globale). Mais c’est déjà actuellement une solution particulièrement adaptée comme serveur (de fichiers ou même applicatif).

Et donc voilà, c’est cool, mais il y a encore du travail pour que ce soit vraiment utilisable par le commun des mortels.

Read more…

FreeNAS

May 31, 2009 3 comments

FreeNAS (http://www.freenas.org) est, comme son nom l’indique, un NAS libre. Il est basé sur FreeBSD.

Historiquement, il est parti d’un fork de m0n0wall, dérivé de FreeBSD spécialisé pour un usage de firewall avec une interface web écrite spécialement pour l’occasion. Petit à petit, le principe de réécrire (et maintenir) tous les scripts de démarrage (initscripts) a été abandonné, ensuite l’interface web a été revue, et les deux projets sont assez divergeants aujourd’hui.

Les versions se succèdent à un rythme effréné depuis maintenant plusieurs années. Certaines sont plus réussies que d’autres (il y a encore parfois des régressions par rapport à la précédente).
La série des versions 0.6x est basée sur FreeBSD 6.x, tandis que la série des 0.7x est basée sur FreeBSD 7.x.

Le maître-mot de FreeNAS pourrait être: “fonctionnalités”.
Ce qui ne le place pas d’emblée dans la catégorie des NAS pour entreprise, où “performances” et “fiabilité” seraient plus adaptés.

Le développeur qui a lancé le projet (Olivier Cochard-Labbe) est plutôt brouillon (et a une orthographe et une conception de l’anglais particulières), mais aime bien lancer de nouvelles pistes. C’est un fonceur. Un second développeur (qui est maintenant le développeur principal du projet pour diverses raisons), Volker Theile, l’a rejoint et corrige à un rythme soutenu tous les problèmes introduits par le premier ou rapportés par des utilisateurs. Jusqu’ici, la combinaison donne un résultat très intéressant.

Malgré ou grâce à tout cela, les performances en NFS (ce qui nous intéresse principalement), sont excellentes.
Et la facilité de gestion et de restauration de la configuration le replace de nouveau dans le cercle des solutions plus qu’utilisables en entreprise.

Et comme en plus ZFS est disponible à partir de FreeBSD 7.x donc aussi dans FreeNAS 0.7x, c’est un très bon point en sa faveur.
Cela dit, il ne support pas encore les snapshots de ZFS (depuis l’interface web) pour l’instant. Or, pour tout filesystem de volume important (disons au-dessus du TB), seul ZFS permet de faire des snapshots qui n’impactent pas (du tout) les performances de la machine pendant plusieurs minutes.

iSCSI est aussi disponible, ce qui ne gâche rien, mais nous ne l’avons pas encore testé en pratique.

Les performances des dernières versions ont l’air particulièrement impressionnantes.

Comme beaucoup de projets de Logiciel Libre, des Nightly Builds sont disponibles, ici: http://www.freenas.org/index.php?option=com_versions&Itemid=51#Nightly%20Build

Categories: French, OSS Solutions Tags: , ,

m0n0wall

May 31, 2009 Leave a comment

m0n0wall (http://m0n0.ch) est un dérivé embarqué de FreeBSD spécialisé en pare-feu (firewall).

Le but premier du projet était de générer un firewall très réduit en taille (pour pouvoir facilement le faire tenir sur une mémoire Flash) et très
rapide (au boot notamment). Le constat de départ est que les UNIX libres utilisent trop d’interpréteurs différents (ex.: shell, Perl, Python, PHP, …) pour
leurs scripts de démarrage (initscripts) et leur gestion.
Ils ont alors décidé de n’en garder qu’un, et comme ils voulaient une interface web pour leur firewall, ils ont sélectionné PHP.
Grâce à ces deux choix, ils ont obtenu un système très économe en espace disque (de telle sorte qu’on peut le mettre sur un tout petit média
selon la norme actuelle) et RAM.
Ensuite, ils se sont dit[1] qu’un fichier XML serait approprié pour stocker toute la configuration.
Et le résultat est qu’un seul fichier (XML) sauvegardé permet de restaurer un firewall en quelques instants, que les erreurs dans ce fichier sont faciles à trouver/éviter, et qu’on peut facilement le faire tourner depuis un média en lecture seule (read-only, comme un CD par exemple).

Associé au firewall de FreeBSD (pf), c’est probablement un ensemble de très bons choix qui mènent sans surprise à l’une des solutions de ce
genre les plus abouties[2].

Read more…

À propos de NAS

May 31, 2009 Leave a comment

Un NAS est un Network-Attached Storage. C’est-à-dire un serveur de fichiers, mais qui ne fait vraiment que cela (enfin, au départ, puisqu’on verra ensuite que ça peut se compliquer beaucoup).

Au départ, c’est seulement une solution abordable pour remplacer en Ethernet les SAN (Storage Area Network), qui font la même chose mais sur de la fibre optique, bien plus chère à l’usage (pour diverses raisons[1]). Il existe même du matériel qui fait les deux (SAN + NAS, par exemple en Ethernet pour les longues distances ou le grand nombre de clients et en Fiber Channel pour les plus courtes).

Dans les deux cas, le but est de rassembler la problématique du stockage en un seul endroit, et ainsi pouvoir l’allouer de manière plus souple, plus fiable,
plus économique, et plus gérable (exemple: simplification des backups). La virtualisation par exemple en bénéfie très rapidement et très naturellement.

Un certain nombre de protocoles ou de technologies, viennent rapprocher les deux systèmes.
Je pense ici à des protocoles comme iSCSI, AoE[2], qui font passer à travers le réseau un protocole standard utilisé d’habitude pour les disques locaux. Et
l’OS s’en accomode d’habitude bien, souvent à travers une implémentation ad-hoc dans le kernel.

Enfin, tout un tas de protocoles exotiques existent, souvent orientés vers un OS ou un type de matériel Multimédia, mais pas toujours, permettent d’augmenter
l’utilisabilité du tout. Je pense en particulier à uPNP, DLNA, TFTP, FTP, SMB, NFS, rsync, …

Souvent, la sécurité n’est pas gérée au niveau du NAS, mais au sein du reste de l’infrastructure.

Puisque ses fonctionnalités sont supposées être plutôt restreintes, on attendra d’un NAS une fiabilité et des performances exceptionnelles. On y trouvera donc
souvent des systèmes de redondance (RAID, alimentations électriques, load-balancing réseau, …) ainsi que des systèmes pour améliorer (aggrégation de liens réseau, fine-tuning des disques et des NIC, …) et/ou diagnostiquer les performances de tous les éléments (disques, contrôleurs, OS, réseau, client, …).

Et il en existe maintenant pour tous les budgets. Depuis les systèmes prévus pour être installés sur des PC de récupération jusqu’aux NAS d’entreprise avec
support, redondance complète (haute disponibilité) et sélection de tout le matériel le plus cher en passant par des systèmes hyper économes en énergie pour
le salon de Monsieur Tout Le Monde (qu’on appelle alors souvent Media Server).

Linux, de par sa légerté proverbiale et ses fonctionnalités est assez intéressant pour ce genre d’usage, tout comme FreeBSD.
Solaris (et OpenSolaris), toutefois apporte des avantages non négligeables sous la forme de ZFS (avec snapshots, compression et déduplication) et DTrace (notamment).

Et ce n’est pas fini…

Read more…

Améliorer les performances de NFS

September 10, 2008 Leave a comment

Voici quelques pistes pour améliorer les performances de NFS sous Linux (du moins en environnement peu chargé). On fera directement attention aux points suivants:

1. Performances réelles du serveur

Est-ce que les disques/contrôleurs qu’on utilise sont réellement plus
rapides que le réseau?
Des petits coups de “dd” et de “bonnie” nous le diront.

2. Vitesse du réseau

Est-ce que le réseau est capable de transférer les informations
rapidement entre les clients et le serveur? On utilisera pour cela un
protocole réseau minimaliste, comme FTP par exemple. Mais évidemment, on
pourrait probablement obtenir déjà des informations intéressantes avec
tout autre protocole. Si la vitesse de transfert est déjà mauvaise,
inutile d’aller plus loin.
De même, tracker les erreurs sur l’interface réseau (output d’ifconfig)
sur le client et le serveur est intéressant.

3. Résolution de noms

Si on voit apparaître des délais (freeze) particulièrement quand on
commence à accéder à la ressource réseau, il y a de fortes chances que
ce soit lié à la résolution de noms, du client ou du serveur (les deux
sont importants), et ce dans les deux sens.
Les outils suivants nous y aideront: “ping”, “dig” et “host”.

4. Configuration propre au protocole NFS

De nos jours, on veillera à utiliser NFSv3 au moins, et ce en TCP (et
non pas en UDP, pourtant par défaut sous Linux, à moins d’être sur un
réseau local vraiment “propre” et totalement dédié à NFS).
Pour vérifier cela, on fera des transferts par NFS, et on vérifiera
ensuite ce que l’output de “nfsstat” nous dit à propos de ce qui est
passé (on verra de cette façon la version de NFS réellement utilisée
ainsi que le transport TCP ou UDP, et des erreurs éventuelles).
Ensuite, en fonction du type de données transférées (petits fichiers,
gros fichiers accédés séquentiellement ou de manière aléatoire), on
jouera avec la taille des blocs (“rsize” et “wsize”, ainsi que “sync”,
“async”, etc…).

5. Gestion des locks

Pour garantir la validité des données lors de l’accès en écriture
simultané de plusieurs clients NFS, celui-ci utilise un “lock manager”.
Dans certains cas, ce “lock manager” ne fonctionne pas bien (problème de
communication entre implémentations, …) et peut sévèrement affecter
les performances. Dès lors, il faut être attentif à cela, surtout dans
les environnements hétérogènes (y compris entre les versions d’une
distribution GNU/Linux).

Categories: French, Tech Crunch Tags: , ,

Free Software Projects

September 7, 2008 Leave a comment

Here is a non-exhaustive (73 so far) list of some Free Software projects which we contributed [1] to:

  • apt-proxy
  • Asterisk
  • Auto Nice Daemon (AND)
  • AWstats
  • Bacula
  • BNPanel
  • Cedar Backup
  • Chamilo
  • Claroline
  • COnfigurator for GNOME (COG)
  • Crystal Space
  • DCL
  • Debian / Debian Education / Debian-Edu
  • Debian-Installer
  • Dokeos
  • Dolibarr
  • dotProject
  • Drupal [1][2][3][4]
  • Etherboot
  • Evolution
  • Evolution mail template plugin
  • EXACT (POP- and IMAP-before-SMTP daemon)
  • FreeCiv
  • FreeNAS
  • FreeRADIUS
  • Fwanalog
  • Galeon
  • Glasnost
  • GNOME
  • Gnoppix
  • InitNG
  • IPblocker
  • ISPConfig
  • JFFNMS
  • Knoppix
  • LAM
  • Librassoc
  • LibSSH extension for PHP
  • LTSP
  • MnoGoSearch
  • Netatalk
  • Netsaint/Nagios
  • Ntop
  • NVU
  • OpenOffice.org
  • Open ERP
  • OpenC2C
  • p910nd
  • Pancho Project
  • Pessulus
  • PhpCompta
  • PHPiCalendar
  • phpLangEditor (Firefox extension)
  • PhpLdapAdmin
  • PHP-PENS
  • Plume
  • PostgreSQL
  • qemu
  • Replicator
  • SER
  • Sip Express Router (SER)
  • Swocket
  • THT
  • TORCS
  • Tulip (Editor written in PHP-GTK)
  • Ubuntu
  • UmiGumi / DLS
  • Webalizer
  • Webcalendar
  • Widelands
  • XAMS
  • Zebra / Quagga
  • Xapian

See also our BeezNest’s Free Software Specialities.

[1] code, documentation or suggestions which have been applied

This article was first written in January 2006 for the BeezNest technical
website (http://glasnost.beeznest.org/articles/324).
Follow

Get every new post delivered to your Inbox.

Join 63 other followers

%d bloggers like this: