Table des matières

Opérations de bases

On travaille en ext3.

Créer un FS

On créé le LV :

lvcreate -L 2G -n lv_ben rootvg

Puis le FS :

mkfs.ext3 /dev/rootvg/lv_ben

Les paramètres par défaut sont généralement suffisants.

Augmenter un FS

On augmente le LV :

lvextend -L +4G /dev/rootvg/lv_ben

ou

lvextend -L 6G /dev/rootvg/lv_ben

Puis on augmente le FS (RHEL 4.x) :

ext2online /fs

ou (selon la distrib Debian/RHEL 5.x) :

resize2fs /dev/rootvg/lv_ben

Supprimer un FS

On démonte le FS :

umount /tmp/test_ben

Si KO :

fuser -km /tmp/test_ben

On supprime le LV :

lvremove /dev/rootvg/lv_ben

Réduire un FS

On est obligé de démonter le FS pour cette opération :

umount /tmp/test_ben

On réduit le FS :

root@server9000157:/tmp# umount /tmp/ben

root@server9000157:/tmp# e2fsck -f /dev/rootvg/lv_test
e2fsck 1.35 (28-Feb-2004)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/rootvg/lv_test: 11/131072 files (9.1% non-contiguous), 21802/524288 blocks

root@server9000157:/tmp# resize2fs /dev/rootvg/lv_test 128M
resize2fs 1.35 (28-Feb-2004)
Resizing the filesystem on /dev/rootvg/lv_test to 131072 (1k) blocks.
The filesystem on /dev/rootvg/lv_test is now 131072 blocks long.

root@server9000157:/tmp# lvreduce -L 128M /dev/rootvg/lv_test
  WARNING: Reducing active and open logical volume to 128.00 MB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv_test? [y/n]: y
  Reducing logical volume lv_test to 128.00 MB
  Logical volume lv_test successfully resized

root@server9000157:/tmp# mount /dev/rootvg/lv_test /tmp/ben

Ext3

dumpe2fs -h /dev/vg_vrk1/lv_testben
tune2fs -O ^has_journal /dev/vg_vrk1/lv_testben
tune2fs -O has_journal -J size=128 /dev/vg_vrk1/lv_testben
mount -o sync -o dirsync /dev/rootvg/lv_test /tmp/test

Ensuite on peut estimer le débit d'un disque :

dd if=/dev/zero of=/tmp/test/fichier.img bs=1024k count=1000

Parfois on veut pouvoir éviter le fsck automatique et le lancer à la main. Ces paramètres peuvent être visualisés grâce à la commande dumpe2fs :

root@server9000157:/tmp# dumpe2fs /dev/rootvg/lv_test 2>/dev/null|egrep "Max|interval"
Maximum mount count:      22
Check interval:           15552000 (6 months)
root@server9000157:/tmp# tune2fs -i 14d -c 50 /dev/rootvg/lv_test
tune2fs 1.35 (28-Feb-2004)
Setting maximal mount count to 50
Setting interval between check 1209600 seconds
root@server9000157:~# debugfs -R "stat <`tune2fs -l /dev/rootvg/tmp|grep "Journal inode"  \
  |awk '{print $NF}'`>" /dev/rootvg/tmp 2>&1| awk '/Size: / {print $6}'|head -1
33554432

root@server9000157:~# echo $((33554432/1024))
32768

Soit 32 Mo.

Tips

Nombre max de fichiers ouvrables

root@machine:~# cat /proc/sys/fs/file-max
1593454

Nombre de fichiers ouverts

root@machine:~# cat /proc/sys/fs/file-nr
3391    969     52427
|	 |       |
|	 |       |
|        |       maximum open file descriptors
|        total free allocated file descriptors
total allocated file descriptors
(the number of file descriptors allocated since boot)

Backuper et restaurer le MBR

dd if=/dev/hdx of=/chemin/sauvegarde.dd bs=512 count=1
dd if=/chemin/sauvegarde.dd of=/dev/hdx
sfdisk -d /dev/hdx > /chemin/save_etendue.sf
sfdisk /dev/hdx < /chemin/save_etendue.sf

Migrer des données d'un vg à un autre

lvcreate -L 4G -n lv_dest vg_dest
dd if=/dev/rootvg/lv_depart of=/dev/vg_dest/lv_dest
fsck -y /dev/vg_dest/lv_dest

:!: Il y a surement plus propre mais c'est rapide pour migrer un grand nombre de LVs (avec une boucle). On peut aussi utiliser pvmove, tar, cp, etc.

Déterminer le type d'un fs (sans fstab)

root@server:~# lvcreate -L 128M -n lv_testben rootvg
root@server:~# mkfs.ext3 /dev/rootvg/lv_testben
root@server:~# lvdisplay /dev/rootvg/lv_testben|grep "Block device"
  Block device           253:12
root@server:~# ls -l /dev/dm* |fgrep -w "253"|egrep "\-12"
brw-r-----  1 root root 253, 12 Mar  7 10:49 /dev/dm-12
root@server:~# blkid |grep dm-12
/dev/dm-12: UUID="d03dc2de-f7c1-4a88-8ca6-89108b22570c" SEC_TYPE="ext3" TYPE="ext2"

Débloquer le boot si fstab foireux

#/bin/bash

### On verifie que les LVs sont bien presents
### On corrige le fstab en consequence

# Backup du fichier fstab
cp /etc/fstab /etc/fstab.orig.`date "+%d%m%Y_%Hh%Mm%Ss"`

awk '/vg/ {print $1" "$2}' /etc/fstab|grep -v swap |while read LV FS
do
if ! [[ -b $LV ]] ;then
# On ne logge pas dans /var/log vu qu'il est peut etre pas monte
echo "$LV inexistant, on corrige le fstab" >> /sbin/check_fstab.log
cat /etc/fstab |sed "s%$LV%#$LV%g" > /etc/fstab.temp
mv /etc/fstab.temp /etc/fstab
fi
done

Monter un partage samba au boot

Rajouter, dans le fstab :

//xp2400/tmp /mnt/xp2400/tmp cifs username=ben,password=PASSWORD 0 0

Ou avec credentials=/home/madirectory/.credentials

Ou faire un script de montage auto.

Troubleshooting

Restaurer des fichiers

Avec extundelete.

Impossible d'augmenter un FS (ext3)

Lors d'une extension à chaud avec ext2online on peut tomber sur ces messages d'erreur (notamment en RHEL 4) :

ext2online: ext2_ioctl: No space left on device
ext2online: unable to resize /dev/mapper/vg_vrk1-lv_testben

Et on trouve dans /var/log/messages :

JBD: ext2online wants too many credits (2053 > 2048)

Ou le supprimer puis le récréer :

tune2fs -O ^has_journal /dev/vg_vrk1/lv_testben
tune2fs -O has_journal -J size=128 /dev/vg_vrk1/lv_testben

Un petit coup de resize2fs :

resize2fs /dev/vg_vrk1/lv_testben

On sinon remonter le FS et l'augmenter avec ext2online.

Conseils sur taille du journal

Erreurs : spurious interrupt

ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0xffffe00)
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x7fffff07)
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x1e00000)
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)
ata1: spurious interrupt (irq_stat 0x8 active_tag -84148995 sactive 0x0)

Parfois l'implémentation du NCQ pour certains disques SATA peut être foireuse selon sa conf (kernel, modules, etc). On peut avoir des corruptions de données. Pour désactiver le NCQ :

echo 1 > /sys/block/sdX/device/queue_depth

cf. http://linux-ata.org/faq.html#ncq

parted

On peut créer des partitions en mode non intéractif :

parted --script /dev/emcpowera mkpartfs primary ext2 0 20
parted --script /dev/emcpowera mkpartfs primary ext2 20 40
parted --script /dev/emcpowera mkpartfs primary ext2 40 60
parted --script /dev/emcpowera mkpart extended 60 111540
parted --script /dev/emcpowera mkpartfs logical ext2 60 80
parted --script /dev/emcpowera mkpartfs logical ext2 80 100

Monter automatiquement un device USB

apt-get install usbmount

Éditer le fichier /etc/usbmount/usbmount.conf

Eviter les FSCK au boot

Soit on créé un fichier un fichier fastboot à la racine :

touch /fastboot

Soit on rajoute fastboot au niveau de grub :

kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/rootvg/root crashkernel=128M@16M console=tty1 fastboot

FS busy

Si lsof et fuser ne rendent rien on peut checker avec dmsetup info, on récupère le nom et on lance un dmsetup info NOM_DU_LV et on checke le paramètre “Open count”. Si c'est différent de zéro vérifier le /etc/mtab et faire un mount |grep NOM_DU_LV pour voir si le kernel n'a pas gardé un entrée. Ensuite refaire un umount ou umount -f

Monter un FS freebsd (ufs)

mount -t ufs -o ufstype=ufs2,ro /dev/sdb2 /mnt

Resizer une partition sans LVM

⇒ augmenter la taille du device sur l'ESX
⇒ rebooter si besoin pour la prise en compte

/dev/sdc1                 1020M  943M   78M  93% /test
umount /test
fdisk /dev/sdc : p (print), d (deleter la partition sdc1), n (recréer une partoche plus grande)
xfs_repair /dev/sdc1 ou e2fsck -fy /dev/sdc1
mount /dev/sdc1 /test
xfs_growfs /dev/sdc1 ou resize2fs /dev/sdc1
/dev/sdc1                  2.0G  943M  1.1G  47% /test

Supprimer un répertoire si un FS a été monté dessus

mount --bind / /mnt

Supprimer fichier ouvert

$ /usr/sbin/lsof | grep deleted
ora    25575 data   33u   REG      65,65  4294983680   31014933 /oradata/DATAPRE/UNDOTBS009.dbf (deleted)
    $ file /proc/25575/fd/33
    /proc/25575/fd/33: broken symbolic link to `/oradata/DATAPRE/UNDOTBS009.dbf (deleted)'
    $ echo > /proc/25575/fd/33