Catégorie : Systèmes

4 août 2015 /

Il ya une idée répandue parmi les utilisateurs de Linux qui est fausse. A savoir que nos disques n’ont jamais besoin d’être défragmenté. Cette situation découle de la performance des systèmes de fichiers utilisés par la plupart des distributions, y compris EXT2,3 et 4, JFS, XFS, ZFS, ReiserFS et BTRFS. Tous ont une façon intelligente de fonctionnement  et de techniques en ce qui concerne l’allocation des fichiers dans les disques, en minimisant le problème de la fragmentation à un tel point qu’il n’y a pratiquement aucune raison de défragmenter son disque même après de nombreuses années d’utilisation, d’installation et de désinstallation d’applications et de bibliothèques.

Les fichiers sont stockés à plusieurs endroits sur le disque, laissant d’immenses espaces entre eux, leurs permettant de grandir au fil du temps si nécessaire, contrairement aux systèmes de fichiers comme les NTFS, qui place les fichiers côte à côte.
Si le disque devient saturé et qu’un fichier a besoin de plus d’espace sans découper le fichier, Un système de fichiers Linux tentera de réécrire complètement le fichier sur un autre secteur qui a assez d’espace pour le stocker en entier. De cette façon, tout est propre, bien rangé et sur tout, en un seul morceau. Cela va générer au fil du temps des espaces vide sur le disque.

Voici donc comment faire face à ce problème et comment défragmenter son disque sous Linux:

La première chose à faire c’est d’installer un outil de défragmentation. Il y a beaucoup de défragmenteurs disponibles pour de Linux, je vais utiliser « e4defrag», il y a de grande chance qu’il soit déjà installé sur votre système. Le programme de e4defrag fait partie du paquet e2fsprogs qui devrait déjà être installé sur votre ordinateur.

Dans le cas où le programme est manquant, vous pouvez l’installer avec cette commande sur Ubuntu:

sudo apt-get install e2fsprogs

Grâce à cet outil, vous pouvez déterminer si vous avez des fichiers fragmentés et le niveau de gravité de la fragmentation.
Pour cela, ouvrez un terminal et tapez:

sudo e4defrag -c /emplacement

Ici, j’ai scanné mon /home et e4defrag a trouvé cinq fichiers fragmentés. Mon niveau de fragmentation est cependant assez faible donc une défragmentation ne fera pas beaucoup différente en termes de performance pour mon système dans ce cas de figure.

e4defrag

Si cette sortie rapportée plus de « 30 » fichiers fragmentés, une petite défragmentation serait une bonne idée.

 

Voyons maintenant comment défragmenter ses fichiers.
Dans un premier temps, je vais montrer comment défragmenter ses fichiers fragmentés un par un.

Pour ce faire, on utilise la commande ed4defrag suivit du chemin du fichier:

sudo e4defrag /chemin/fichier/fragmenté

Exemple en image:

e4defrag2

Maintenant si vous souhaitez défragmenter un disque entier, alors vous devrez d’abord démonter toutes les partitions puis d’exécuter la commande suivante:

sudo e4defrag /dev/*

Si vous souhaitez défragmenter le disque entier sans démonter les partitions:

sudo e4defrag /

Si vous avez un SSD, il est tout simplement inutile de se soucier de fichiers fragmentés car ces disques peuvent accéder à leurs cellules stockage au hasard, alors que les disques durs le font séquentiellement.
Défragmenter votre SSD ne fera qu’augmenter le nombre d’accès en lecture/écriture et ainsi réduire sa durée de vie.

3 août 2015 /

Pour supprimer tous les fichiers « .db » a partir du répertoire courant:

find . -type f -name "*db" -exec rm -f {} \;

Pour supprimer tous les fichiers « .db » à partir de la racine en demandant une confirmation:

find . -type f -name "*.db" -exec rm -i {} \;

Pour supprimer tous les repertoires se terminant par « db » à partir du répertoire courant:

find . -type d -name "*db" -exec rm -rf {} \;

3 août 2015 /

Pour pouvoir faire les commande de cet article, vérifiez la présence sur votre système des outils suivants :

  1. Pciutils
  2. Usbutils
  3. Smartmontools

Pour obtenir des informations sur sa carte mère ainsi que sur votre matériel:

dmidecode:

Pour afficher le type de processeur pour lequel est compilé le noyau :

uname -p

Pour afficher les informations du fabricant, du bios, le modèle:

cat /proc/cpuinfo

Pour afficher la charge moyenne du processeur:

cat /proc/loadavg

Pour déterminer l’activité du CPU:

top

Pour avoir un etat des processus:

ps -ef

Pour afficher la quantité de mémoire utilisée:

free -mt

Pour avoir des informations détaillées:

cat /proc/meminfo

Pour connaitre la vitesse et la température du ventilateur (paquet « lm-sensors »necessaire):

sensors-detect

Cela vous indiquera un nom pour chaque composant.

Pour obtenir des informations un composant:

modeprobe + nom du composant

Pour connaître le modèle et le nom de sa carte graphique :

lspci | grep VGA

Pour vérfier la présence de l’accélération graphique:

glxinfo | grep rendering

Calculer le nombre de fps :

glxgears

Pour obtenir des informations sur les Cartes PCI (rajouter un « v » augmente le detail des informations):

lspci -v

lspci -vv

lspci -vvv

Pour obtenir vendeur et code des peripheriques sur les Cartes PCI

lspci -n

Pour visualiser toutes les informations sur /dev/sda1:

smartctl -a /dev/sda1

ou

smartctl -t long /dev/sda1

ou

hdparm -i /dev/sda1

Pour taux d’occupation des disques:

df -h

Pour Taux d’utilisation d’un répertoire sur le disque:

du -h /home/starmate

Pour obtenir des informations sur les périphériques USB:

lsusb

Pour afficher  la version du noyau :

uname -r

2 août 2015 /

Logrotate est conçu pour faciliter l’administration des systèmes qui génèrent un grand nombre de journaux. Il automatise la permutation, la compression, la suppression, et l’envoi des journaux. Chaque journal peut être traité quotidiennement, hebdomadairement, mensuellement, ou quand il devient trop volumineux.

Il est lance automatiquement via /etc/cron.daily/logrotate.

La configuration de logrotate se fait en deux parties :

  • 1 –  les options générales (le fichier de configuration par défaut est /etc/logrotate.conf)
  • 2 –  les fichiers à archiver et les options spécifiques à leurs archivages (les fichiers particuliers se trouvent dans /etc/logrotate.d/).

1 – Voici un exemple de /etc/logrotate.conf:

# see "man logrotate" for details
# Fréquence de rotation par défaut :
weekly
# Utilise par defaut le groupe syslog, avec l'utilisateur roots
su root syslog
#nombre de semaine où sont conservé les logs ( a cause de weekly plus haut)
rotate 4
# Lors d'une rotation, un fichier de remplacement est créé avec les droits 0640 appartenant à
# root et au groupe root.
create 0640 root root
# Le fichier sur le point d'expirer est envoyé à cette adresse:
mail starmate@entropia
# Insertion de la date dans l'archivage des journaux.
dateext
# Les logs sont compréssé avant rotation :
#compress
# Inclusion des scripts propres aux logs.
include /etc/logrotate.d
# Définition de la rotation des logs de wtmp et btmp :
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0660 root utmp
rotate 1
}
# system-specific logs may be configured here

 

Voici les options les plus utilisés:

  • compress : impose la compression des anciens fichiers de log au format gzip.
  • compresscmd Permet de définir la commande à exécuter pour la compression.
  • compressext, uncompresscmd et compressoptions Permettent respectivement de définir l’extension des fichiers compressés, la commande utilisée pour décompresser les archives et les options de compressions à passer a l’outil de compression.
  • copytruncate : copie le fichier de log original, le compresse et vide ensuite le journal système d’origine. Cette notion est très importante car elle répond aux problème du type : “je logue dans le fichier que j’archive…” qui peut poser quelques problèmes à certains services…
  • create : Permet de spécifier les droits, le propriétaire et le groupe auquel un nouveau fichier de log vide devra appartenir après avoir été archivé.
  • daily, weekly, monthly et yearly : Spécifie quand un fichier doit être archivé.
  • dateext : Par défaut, les fichiers archivés sont numéroté de 1 à N, l’option dateext remplace cette numérotation par la date. Si le format de date par défaut ne vous convient pas, il peut être spécifié par l’option “dateformat“.
  • dateformat -%Y-%m-%d:  Spécifie la façon dont est écris la date sur le fichier archivé. Les valeurs par defaut sont  -%Y%m%d.
  • dateyesterday: Utilisez la date d’hier au lieu d’aujourd’hui pour créer l’extension dateext , de sorte que le fichier en rotation possède une date dans son nom qui soit la même que ses données.
  • delaycompress : Reporte la compression du journal précédent au prochain cycle de permutation. Ceci n’a un effet qu’utilisé en combinaison avec l’option compress. Elle peut être utilisée quand il n’est pas possible de demander à un programme de fermer son journal et qu’il puisse par conséquent continuer à écrire pour un moment dans le journal précédent.
  • extension log:  Vous avez un fichier journal nommé journal.log et que vous voulez le faire pivoter à journal.1.log.gz lieu de journal.log.1.gz .
  • ifempty : oblige la rotation des logs même si le fichier est vide… (ce qui simplifie les recherche parfois…).
  • include fichier_repertoire: Permets de renseigner un fichier ou répertoire contenant une configuration a prendre en compte.
  • mailfirst, maillast, mail adresse@domain : après un certain délais, les archives peuvent être automatiquement détruites. Dans ce cas, si maillast est définit, le fichier détruit est envoyé par mail a l’adresse spécifiée par la variable “mail“. Si mailfirst est définit, c’est la dernière rotation qui est expédiée.
  • maxage : définit l’age maximum des archives (en jours).
  • maxsize: demande la rotation des log si le fichier fait au maximum la taille définie par cette variable.
  • minsize : demande la rotation des log si le fichier fait au minimum la taille définie par cette variable.
  • missingok : aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
  • notifempty : n’archive aucun fichier vide.
  • nocompress: Les vieux log ne sont pas compressés.
  • nocopytruncate: Ne tronque pas le journal original en place après avoir créé une copie (ceci outrepasse l’option copytruncate).
  • nocreate: Les nouveaux journaux ne sont pas créés (ceci outrepasse l’option create).
  • nodelaycompress: Ne reporte pas la compression du journal précédent au prochain cycle de permutation (ceci outrepasse l’option delaycompress).
  • nomail: N’envoie aucun journal.
  • nomissingok: Si un journal n’existe pas, produit une erreur (ceci est la valeur par défaut).
  • noolddir: Les journaux sont permutés dans le répertoire où ils résident normalement (ceci outrepasse l’option olddir).
  • size : les fichiers ne sont archivés que si leur taille dépasse la valeur définie ici.
  • olddir : précise le répertoire dans lequel placer les archives.
  • prerotate, postrotate/endscript : définissent respectivement une séquence de script à effectuer avant ou après la rotation des logs (redémarrage d’un service, etc.).
  • firstaction, lastaction/endscript : définissent des séquences de scripts à exécuter avant et après avoir archivé les logs.
  • rotate : spécifie le nombre d’archives a conserver. Passé ce nombre les archives sont soit détruite (comportement par défaut) soit envoyées par mail voir mail* ci dessus.
  • sharedscripts : permet d’executer qu’ une fois le script postrotate par rotation
  • shred: Supprime les log en utilisant shred
  • start count: C’est le chiffre à utiliser pour commencer la numérotation. Par exemple , si vous spécifiez 0 , les journaux seront créé en commençant la numérotation par 0. Si vous spécifiez 9 , les fichiers journaux seront créés avec un en commençant par 9 , en sautant 0 à 8 .
  •   tabooext [+] list: Change la liste courante des extensions taboues (voir la directive include pour les informations sur les expressions taboues). Si un + précède la liste d’extensions, la liste courante des expressions taboues est augmentée, sinon elle est remplacée. Au démarrage, la liste des extensions taboues contient .rpmorig, .rpmsave, .v et ~.

2 – Déclarer les fichiers à archiver

Voici comment on déclare un fichier de log pour le mettre dans la rotation (à mettre dans un fichier spécifique dans le répertoire /etc/logrotate.d/:

/chemin/du/fichier/nom_du_fichier_log {
options propres au fichier
}

Exemple avec dpkg:

cat /etc/logrotate.d/dpkg

/var/log/dpkg.log {
monthly #tous les mois
rotate 12 #conserve 12 fichiers
compress #compresse les fichiers
delaycompress #Reporte la compression du journal précédent sur le prochain
missingok #aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
notifempty # n’archive aucun fichier vide.
create 644 root root #lors d'une rotation, un fichier est créé avec les droits 0640 appartenant à root:root.
}
/var/log/alternatives.log {
monthly #tous les mois
rotate 12 #conserve 12 fichiers
compress #compresse les fichiers
delaycompress #Reporte la compression du journal précédent sur le prochain
missingok #aucune erreur n’est remontée si la rotation d’un fichier de log spécifié est absent.
notifempty # n’archive aucun fichier vide.
create 644 root root #lors d'une rotation, un fichier est créé avec les droits 0640 appartenant à root:root.
}

Une fois la configuration terminée, on peut forcer sont exécution:

logrotate -f  /etc/logrotate.conf

en mode Debug:

logrotate -d /etc/logrotate.conf

1 août 2015 /

Voici une solution simple qui permet de limiter les écritures sur votre disque SSD afin de prolonger sa durée de vie.

Pour cela, nous allons utiliser l’outil Ramlog qui crée un disque temporaire en mémoire vive, où sont stockés et mis à jour les logs. Les logs originels sont conservés dans le répertoire /var/log.hdd jusqu’à l’arrêt de ramlog où à ce moment elles prennent le chemin inverse. Donc pas de perte de logs systèmes sauf bien sûr si votre ordinateur plante.

On va également placer le paramètre « swappiness ». Ubuntu est conçu pour mettre directement en SWAP, ce qui est destiné à la RAM à partir d’un certain taux d’occupation.
Par défaut ce paramètre est réglé à 60 sur Ubuntu. Cela signifie qu’à partir de 40% d’occupation en RAM, le système part écrire dans la SWAP. On va réduire cette valeur à 90.

On va aussi changer la destination du cache de Firefox et les options de montages des disques.

Cela limitera ainsi grandement le nombre d’accès en écriture sur la carte.

Installation de ramlog sur Ubuntu

Il faut d’abord télécharger le paquet .deb:

wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb

Maintenant que nous avons le  paquet ramlog_2.0.0_all.deb, il faut l’installer:

sudo dpkg -i ramlog_2.0.0_all.deb

On active Ramlog au démarrage:

sudo update-rc.d ramlog start 2 2 3 4 5 . stop 99 0 1 6 .

Il ne reste plus qu’a redémarré:

sudo reboot

Pour voir l’état de Ramlog il suffit d’utiliser la commande suivante :

/etc/init.d/ramlog status

En cas de problème la log de Ramlog peut être consulté:

more /var/log/ramlog

Pour désinstaller Ramlog :

sudo dpkg -P ramlog

Vous pouvez modifier la configuration de Ramlog en éditant le fichier /etc/default/ramlog.

 

Modification du Swappiness

On édite le fichier:

vi /etc/sysctl.conf

On recherche ensuite le paramètre « vm.swappiness=60 » suivant.

S’il n’est pas présent, ajoutez le et mettez la valeur à 10 pour indiquer au système d’écrire en SWAP à partir de 90% d’occupation de la RAM:

vm.swappiness=10

Il ne vous reste plus qu’a redémarrer votre système pour en profiter.

Vous pouvez aussi supprimer votre partition Swap soi votre machine à beaucoup de Ram ( > à 6 Go).

Pour cela, soit vous ne créer aucune partition swap lors de l’installation du système, soit vous commentez la ligne de montage du fichier swap dans le fichier /etc/fstab:

# swap was on /dev/sda5 during installation
#UUID=1f4d44e9-25bc-43f3-abe7-5a3d002b0d3a none            swap    sw              0       0 

Ne pas écrire sur le disque la date du dernier accès

Montez vos partitions avec l’ option  » noatime » en ouvrant le fichier /etc/fstab:

UUID=5afbf352-08d6-b368-3be6e4574b7c /               ext4    noatime,errors=remount-ro 0       1 

Mettre les fichiers temporaires ( ~ )en mémoire vive

Ajoutez la ligne suivante à la fin du fichier /etc/fstab pour mettre les fichiers temporaires en mémoire vive:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 

 

# swap was on /dev/sda5 during installation
#UUID=1f4d44e9-25bc-43f3-abe7-5a3d002b0d3a none            swap    sw              0       0 

Déplacer le cache Firefox

Tapez about:config dans firefox et puis créez une nouvelle chaîne de caractères que vous nommerez browser.cache.disk.parent_directory et saisir comme destination /tmp/firefox. Vous pouvez également si vous avez une connexion suffisamment rapide, désactiver le cache persistant en modifiant l’option browser.cache.disk.enable avec la valeur false.

 

Activer le Trimming

Vous devez d’abord vérifier que votre SSD supporte la fonction TRIM avec cette commande:

sudo hdparm -I /dev/sda

Cela va lister tous les paramètres et fonctionnalités du SSD. Dans le paragraphe « Commands/features » une ligne doit clairement indiquer le support TRIM:

/dev/sda:

ATA device, with non-removable media
Model Number:       OCZ-VERTEX4
Serial Number:      OCZ-695030Z008038154
Firmware Revision:  1.5
Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6
Likely used: 9
Configuration:
Logical        max    current
cylinders    16383    0
heads        16    0
sectors/track    63    0
--
LBA    user addressable sectors:  250069680
LBA48  user addressable sectors:  250069680
Logical  Sector size:                   512 bytes
Physical Sector size:                   512 bytes
Logical Sector-0 offset:                  0 bytes
device size with M = 1024*1024:      122104 MBytes
device size with M = 1000*1000:      128035 MBytes (128 GB)
cache/buffer size  = unknown
Nominal Media Rotation Rate: Solid State Device
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16    Current = 16
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
Enabled    Supported:
*    SMART feature set
Security Mode feature set
*    Power Management feature set
*    Write cache
*    Host Protected Area feature set
*    WRITE_BUFFER command
*    READ_BUFFER command
*    NOP cmd
*    DOWNLOAD_MICROCODE
*    48-bit Address feature set
*    Mandatory FLUSH_CACHE
*    General Purpose Logging feature set
*    WRITE_{DMA|MULTIPLE}_FUA_EXT
*    64-bit World wide name
*    Write-Read-Verify feature set
*    WRITE_UNCORRECTABLE_EXT command
*    Gen1 signaling speed (1.5Gb/s)
*    Gen2 signaling speed (3.0Gb/s)
*    Gen3 signaling speed (6.0Gb/s)
*    Native Command Queueing (NCQ)
Non-Zero buffer offsets in DMA Setup FIS
*    DMA Setup Auto-Activate optimization
*    In-order data delivery
*    DOWNLOAD MICROCODE DMA command
*    WRITE BUFFER DMA command
*    READ BUFFER DMA command
       *    Data Set Management TRIM supported (limit 16 blocks)
Security:
Master password revision code = 65534
supported
not    enabled
not    locked
not    frozen
not    expired: security count
not    supported: enhanced erase
20min for SECURITY ERASE UNIT. 400min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5e83a9749d61c923
NAA        : 5
IEEE OUI    : e83a97
Unique ID    : 49d61c923
Checksum: correct 

 

Si le SSD supporte le Trimming, Il suffit d’éditer le fichier /etc/fstab et de rajouter l’option discard sur les volumes en ext4:

# / was on /dev/sda1 during installation
UUID=5afbf352-08d6-b368-3be6e4574b7c /               ext4    noatime,discard,errors=remount-ro 0       1