Virtualbox, virtio et PXE

Petite astuce permettant de démarrer une machine virtuelle Virtualbox en PXE via sa carte réseau virtio : il faut charger la ROM qui va bien.

Justement, sous Ubuntu Lucid, le paquet kvm-pxe fournit quelques ROMs.

1. Installer le paquet kvm-pxe :

sudo apt-get install kvm-pxe

2. Configurer la machine virtuelle pour qu’elle utilise cette ROM. Il faudra bien sur remplacer VMNAME par le nom de la machine virtuelle que vous souhaiter configurer.

vboxmanage setextradata VMNAME VBoxInternal/Devices/pcbios/0/Config/LanBootRom /usr/share/kvm/pxe-virtio.bin

Et voilà !

Mesurer le débit réseau entre deux Linux

Subissant des lenteurs réseaux sur notre LAN, j’ai cherché à déterminer la cause du problème en vérifiant le débit utile maximal entre plusieurs postes.

Recette :

- Munissez vous de deux postes Linux
- Installez-y iperf
- Sur le premier, exécutez la commande suivante, qui va attendre une connexion entrante sur le port 5001,

iperf -s

- Sur le second, exécutez cette commande

iperf -c poste1

- Attendez le résultat sur le second poste :

------------------------------------------------------------
Client connecting to poste1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.1 port 58445 connected with 192.168.0.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes    943 Mbits/sec

C’est prêt !

Pense-bête : commandes client iscsi

Le genre de commande qu’on n’utilise pas (trop) souvent, mais qu’il vaut mieux garder sous le coude pour éviter de faire des bêtises (genre déconnecter un disque lorsqu’on voulait en supprimer un autre). Ces commandes sont fournies par open-iscsi :

Ajout d’un disque

iqn='iqn.2001-04.com.acme:storage.tape.sys1.xyz'
scsciserv='scsiserver.fqdn'

# Ajout du disque
iscsiadm -m node -o new    -p "${scsiserv},1" -T "${iqn}"

# Configuration de la connexion automatique au disque
iscsiadm -m node -o update -p "${scsiserv}" -T "${iqn}" --name='node.startup' --value='automatic'

# Connexion à tous les disques configurés en connexion automatique
iscsiadm -m node --loginall=automatic

Liste les disques configurés

iscsiadm -m node

Suppression d’un disque

iqn='iqn.2001-04.com.acme:storage.tape.sys1.xyz'
scsciserv='scsiserver.fqdn'

# Deconnexion du disque
iscsiadm -m node --logout  -p "${scsiserv}" -T "${iqn}"

# Suppression du disque
iscsiadm -m node -o delete -p "${scsiserv}" -T "${iqn}"

Migrer les règles de quota disque

Je suis en train de planifier la migration des données de mes utilisateurs d’un volume vers un autre. Cependant, nous avons des règles de quotas individuelles qu’il va falloir conserver.

En regardant la page man de la commande setquota, j’ai identifié cette ligne :

      -b, --batch
             Read information to set from stdin (input format is name block-softlimit block-hardlimit inode-softlimit inode-hardlimit ). Empty lines and lines starting with # are ignored.

Concrètement, cela signifie qu’il est simple d’importer en masse des règles de quota. Il ne reste donc plus qu’à les exporter. Je pensais trouver une option qui ferais cela tout seul avec une commande comme quota ou repquota, mais non. Tant pis, il va falloir scripter.

Essayons :

repquota -v /mnt/racine_du_fs_source
*** Rapport pour les quotas user sur le périphérique /dev/mapper/fs-source
Période de sursis bloc : 7days ; période de sursis inode : 7days
                        Limites bloc               Limites fichier
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      -- 59877676       0       0         168013     0     0
(...)

Statistiques :
Total des blocs : 31
Blocs de données : 22
Entrées : 460
Moyenne d'utilisation : 20,909090

Il va donc falloir supprimer les 5 premières lignes :

repquota -v /mnt/racine_du_fs_source | tail -n +6
root      -- 59877676       0       0         168013     0     0
(...)

Statistiques :
Total des blocs : 31
Blocs de données : 22
Entrées : 460
Moyenne d'utilisation : 20,909090

Et enlever les 7 dernières :

repquota -v /mnt/racine_du_fs_source | tail -n +6 | head -n -7
root      -- 59877676       0       0         168013     0     0
(...)

Il ne reste plus qu’à remettre en forme les colonnes :

repquota -v /mnt/racine_du_fs_source | tail -n +6 | head -n -7 | awk '{printf("%s %s %s %s %s\n", $1, $4, $5, $7, $8)}'
root 0 0 0 0
(...)

Et pour finir, on migre les règles de quota utilisateurs ET groupes :

repquota -v /mnt/racine_du_fs_source | tail -n +6 | head -n -7 | awk '{printf("%s %s %s %s %s\n", $1, $4, $5, $7, $8)}' | setquota -b /mnt/racine_du_fs_destination

repquota -gv /mnt/racine_du_fs_source | tail -n +6 | head -n -7 | awk '{printf("%s %s %s %s %s\n", $1, $4, $5, $7, $8)}' | setquota -bg /mnt/racine_du_fs_destination

Mesurer le débit réseau entre deux Linux

ÉDIT : cette méthode ayant montré ses limites dans certains de mes tests, je ne le recommande plus du tout, et conseille vivement l’utilisation d’iperf, cf. Mesurer le débit réseau entre deux Linux

Subissant des lenteurs réseaux sur notre LAN, j’ai cherché à déterminer la cause du problème en vérifiant le débit utile maximal entre plusieurs postes.

Recette :

- Munissez vous de deux postes Linux
- Installez-y netcat
- Sur le premier, exécutez la commande suivante, qui va attendre une connexion entrante sur le port 12345,

netcat -l -p 12345 > /dev/null

- Sur le second, exécutez cette commande, qui va envoyer 1Go de 0 sur le premier poste

dd if=/dev/zero bs=1000 count=1000000 | netcat -v poste1 12345

- Attendez le résultat sur le second poste :

poste1 [192.168.0.42] 12345 (?) open
1000000+0 enregistrements lus
1000000+0 enregistrements écrits
1000000000 octets (1,0 GB) copiés, 8,48261 s, 118 MB/s

C’est prêt !

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Billets précédents »