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
- Afficher les infos sur un lv spécifique :
dumpe2fs -h /dev/vg_vrk1/lv_testben
- Supprimer le journal du filesystem :
tune2fs -O ^has_journal /dev/vg_vrk1/lv_testben
- Créer un journal pour un filesystem :
tune2fs -O has_journal -J size=128 /dev/vg_vrk1/lv_testben
- Bypasser le cache FS
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
- Modifier les paramètres de fsck automatique
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
- Déterminer la taille du journal
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
- Backup de la table de partition (MBR) :
dd if=/dev/hdx of=/chemin/sauvegarde.dd bs=512 count=1
- Restauration de la table de partition (MBR) :
dd if=/chemin/sauvegarde.dd of=/dev/hdx
- Backup de la table de partition étendue uniquement :
sfdisk -d /dev/hdx > /chemin/save_etendue.sf
- Restauration de la table de partition étendue uniquement :
sfdisk /dev/hdx < /chemin/save_etendue.sf
Migrer des données d'un vg à un autre
- Créer le lv sur le vg de destination
lvcreate -L 4G -n lv_dest vg_dest
- On migre les données avec dd
dd if=/dev/rootvg/lv_depart of=/dev/vg_dest/lv_dest
- Un petit fsck s'impose avant de monter le FS
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
- A positionner au boot après que /, /proc, /dev/pts/ et /sys soient positionnés.
#/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.
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
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