22
février 2011

INSIA - Technologies UNIX : TP N°4

Rédigé par Matthieu CERDA   Aucun commentaire   Mis à jour le  22/02/2011

Comme promis le sujet du jour : LVM.

Mais avant, petit détour par les quotas utilisateur ext2.

Pour ceci, il nous faut une partition de test (il est peu recommandé de le faire sur la racine...).

Ici, la partition sera /dev/sdb1. Elle est vierge.



[code lang="shell"]
$ sudo apt-get install quota quotatool
$ sudo mke2fs /dev/sdb1
$ sudo mkdir /mnt/database1
$ # On édite fstab et on rajoute :
---
# Test des quotas
/dev/sdb1    /mnt/database1    ext2    defaults,usrquota,grpquota    0    0
---
$ sudo mount /dev/sdb1
$ sudo quotacheck -vgum /mnt/database1
$ sudo quotaon -avug
$ sudo edquota -u <utilisateur a soumettre>
$ # Et on obtient :
---
user1@trollface:/mnt/database1/user1$ dd if=/dev/zero of=foobar.dat bs=1M count=92
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
dd: écriture de « foobar.dat »: Débordement du quota d'espace disque
1+0 enregistrements lus
0+0 enregistrements écrits
122880 octets (123 kB) copiés, 0,00858868 s, 14,3 MB/s
---
$ # Héééé oui DTC monsieur. Tu peux plus stocker ton pr0n
$ # On peut aussi vérifier ou on en est :
% sudo repquota -a
*** Rapport pour les quotas user sur le périphérique /dev/sdb1
Période de sursis bloc : 7days ; période de sursis inode : 7days
Block limits                File limits
Utilisateur     utilisé souple stricte sursis utilisé souple stricte sursis
----------------------------------------------------------------------
root      --      20       0       0              2     0     0
user1     +-     100      64     128  6days       2     0     0
$ # Bon allez, utilisons cron pour nous offrir un peu de luxe !
$ sudo crontab -e
$ # Et on met dedans :
---
#Send a report to the admin
MAILTO=kegeruneku
#
# Exécuter chaque jour, 5 minutes après minuit
* * * * *       /sbin/repquota -a
---
$ # Aka : Send me the repquota result every minute plz kthxbye
$ # Da result :
---
Message 1:
From root@trollface Tue Feb 22 11:23:01 2011
Envelope-to: kegeruneku@trollface
Delivery-date: Tue, 22 Feb 2011 11:23:01 +0100
Date: Tue, 22 Feb 2011 11:23:01 +0100
From: root@trollface (Cron Daemon)
To: kegeruneku@trollface
Subject: Cron <root@trollface> /usr/sbin/repquota -a
Content-Type: text/plain; charset=UTF-8
X-Cron-Env: <MAILTO=kegeruneku>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>

*** Rapport pour les quotas user sur le pM-CM-)riphM-CM-)rique /dev/sdb1
PM-CM-)riode de sursis bloc : 7days ; pM-CM-)riode de sursis inode : 7days
Block limits                File limits
Utilisateur     utilisM-CM-) souple stricte sursis utilisM-CM-) souple stricte sursis
----------------------------------------------------------------------
root      --      20       0       0              2     0     0
user1     --       4      64     128              1     0     0
---
[/code]

Bon on passe maintenant sur une structure plus professionnelle :
1 Disque SATA pour le système, 3 Disques SCSI, vides pour les expériences. 8Go de chaque.
Racine, Boot, Swap : /dev/sdaX
Sur SCSI : /dev/sd{b,c,d}
Et maintenant attention... Ladies 'n' Gentlemen, Welcome to the main event !
LLLLLLET'S GET READY TO RUMBLEEEEEEEE ... *khf* pardon

[code lang="shell"]
$ sudo aptitude install lvm2
$ sudo mdadm -C /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb /dev/sdc
$ # On crée nos Physical Groups :
$ sudo pvcreate /dev/md0
Physical volume "/dev/md0" successfully created
$ sudo pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created
% sudo vgcreate SpaceJam /dev/md0 /dev/sdd
Volume group "SpaceJam" successfully created
% sudo pvdisplay
--- Physical volume ---
PV Name               /dev/md0
VG Name               SpaceJam
PV Size               8,00 GiB / not usable 2,99 MiB
Allocatable           yes
PE Size               4,00 MiB
Total PE              2047
Free PE               2047
Allocated PE          0
PV UUID               mCpZL9-KRH7-l7hB-6yTu-eMJc-KUfr-DH0pSF

--- Physical volume ---
PV Name               /dev/sdd
VG Name               SpaceJam
PV Size               8,00 GiB / not usable 4,00 MiB
Allocatable           yes
PE Size               4,00 MiB
Total PE              2047
Free PE               2047
Allocated PE          0
PV UUID               2SPPRU-Bgtt-Dlvm-yJH7-JvXB-Pc8B-gM3zj8
% sudo vgdisplay
--- Volume group ---
VG Name               SpaceJam
System ID
Format                lvm2
Metadata Areas        2
Metadata Sequence No  1
VG Access             read/write
VG Status             resizable
MAX LV                0
Cur LV                0
Open LV               0
Max PV                0
Cur PV                2
Act PV                2
VG Size               15,99 GiB
PE Size               4,00 MiB
Total PE              4094
Alloc PE / Size       0 / 0
Free  PE / Size       4094 / 15,99 GiB
VG UUID               Z6t33e-GwIl-mfPw-GRYm-Rlcq-N5DE-qpafx0
$ # Et on achève tout ça :
% sudo lvcreate --size 4G --name Bugs SpaceJam
Logical volume "Bugs" created
% sudo lvcreate --size 4G --name Lola SpaceJam
Logical volume "Lola" created
% sudo lvcreate -i2 -I4 -L4G --name Marvin SpaceJam # Striping maaaan !!! RAID0 du pauvre
Logical volume "Marvin" created
$ # OK, on arrive au bout de la taille que l'on peut allouer. On pousse encore un peu.
% sudo lvcreate --size 3,99G --name Michael SpaceJam
Rounding up size to full physical extent 3,99 GiB
Logical volume "Michael" created
$ # Ca c'est trop la classe ! "J'ai compris ce que tu veux faire, je m'en occupe !"
% sudo lvdisplay
--- Logical volume ---
LV Name                /dev/SpaceJam/Bugs
VG Name                SpaceJam
LV UUID                4M0nIA-2Hnz-R7oZ-nIWE-4rcv-vsSC-soPGbe
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                4,00 GiB
Current LE             1024
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:0

--- Logical volume ---
LV Name                /dev/SpaceJam/Lola
VG Name                SpaceJam
LV UUID                G5cQtr-eHi9-ZtmF-Dy4v-ft0f-mx78-iqq9NU
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                4,00 GiB
Current LE             1024
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:1

--- Logical volume ---
LV Name                /dev/SpaceJam/Marvin
VG Name                SpaceJam
LV UUID                iI06jo-fKrK-HGtU-H2cD-N4Dp-cQoy-08T3jE
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                4,00 GiB
Current LE             1024
Segments               2
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:2

--- Logical volume ---
LV Name                /dev/SpaceJam/Michael
VG Name                SpaceJam
LV UUID                Sw5hR8-Qdtj-p3RP-4amw-eRJJ-aCPS-a7yJBx
LV Write Access        read/write
LV Status              available
# open                 0
LV Size                3,99 GiB
Current LE             1022
Segments               1
Allocation             inherit
Read ahead sectors     auto
- currently set to     256
Block device           253:3
$ # Et voila, c'est dans la poche.
$ # Testons avec un FS qui supporte les modifications a chaud
$ sudo aptitude install reiserfsprogs
$ rehash (oui j'utilise ZSH)
$ sudo mkreiserfs /dev/SpaceJam/Bugs
$ sudo mount /dev/SpaceJam/Bugs /mnt/database1
$ # Ne pas oublier de créer le mountpoint si il n'existe pas.
$ # Bon ... on a un FS ... maintenant, on s'amuse un peu
% df -h
Sys. de fichiers    Taille  Uti. Disp. Uti% Monté sur
/dev/sda2             7,2G  877M  6,0G  13% /
tmpfs                 252M     0  252M   0% /lib/init/rw
udev                  248M  164K  247M   1% /dev
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sda1             236M   21M  203M  10% /boot
/dev/mapper/SpaceJam-Bugs
4,0G   33M  4,0G   1% /mnt/database1
/dev/mapper/SpaceJam-Lola
4,0G   33M  4,0G   1% /mnt/database2
/dev/mapper/SpaceJam-Marvin
4,0G   33M  4,0G   1% /mnt/database3
/dev/mapper/SpaceJam-Michael
3.99G 33M 3.99G 1% /mnt/database4
$ # Bon on a de la place. On a plus besoin de Michael
% sudo umount /mnt/database4
% sudo lvremove /dev/SpaceJam/Michael
Do you really want to remove active logical volume Michael? [y/n]: y # Oui
Logical volume "Michael" successfully removed
% sudo lvextend -l +100%FREE /dev/SpaceJam/Bugs
Extending logical volume Bugs to 7,99 GiB
Logical volume Bugs successfully resized
$ # Sorry Michael... no offense.
% sudo resize_reiserfs -f /dev/SpaceJam/Bugs
resize_reiserfs 3.6.21 (2009 www.namesys.com)
resize_reiserfs: On-line resizing finished successfully.
% df -h
Sys. de fichiers    Taille  Uti. Disp. Uti% Monté sur
/dev/sda2             7,2G  877M  6,0G  13% /
tmpfs                 252M     0  252M   0% /lib/init/rw
udev                  248M  164K  247M   1% /dev
tmpfs                 252M     0  252M   0% /dev/shm
/dev/sda1             236M   21M  203M  10% /boot
/dev/mapper/SpaceJam-Bugs
8,0G   33M  8,0G   1% /mnt/database1
/dev/mapper/SpaceJam-Lola
4,0G   33M  4,0G   1% /mnt/database2
/dev/mapper/SpaceJam-Marvin
4,0G   33M  4,0G   1% /mnt/database3
$ # Héhéééé ... c'est t'y pas magnifique ???
$ # On peut aussi faire ça :
% sudo umount /mnt/database1 # Oui, on-line pamarch faut pas rêver
% sudo resize_reiserfs -s -1G /dev/SpaceJam/Bugs
resize_reiserfs 3.6.21 (2009 www.namesys.com)

You are running BETA version of reiserfs shrinker.
This version is only for testing or VERY CAREFUL use. # Fear !!!
Backup of you data is recommended.

Do you want to continue? [y/N]:y
Processing the tree: 0%....20%....40%....60%....80%....100%                           left 0, 0 /sec

nodes processed (moved):
int        0 (0),
leaves     1 (0),
unfm       0 (0),
total      1 (0).

check for used blocks in truncated region

ReiserFS report:
blocksize             4096
block count           1832960 (2095104)
free blocks           1824693 (2086829)
bitmap block count    56 (64)

Syncing..done

resize_reiserfs: Resizing finished successfully.
% sudo lvresize --size -1G /dev/SpaceJam/Bugs
WARNING: Reducing active and open logical volume to 6,99 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce Bugs? [y/n]: y # Ta gueule
Reducing logical volume Bugs to 6,99 GiB
Logical volume Bugs successfully resized
% sudo mount /dev/SpaceJam/Bugs /mnt/database1
$ # Et voila, c'est rigolo.
[/code]

Interrogation du jour : Si les utilitaires de disques n'avaient pas la même conception de l'espace (Gigabyte/Gigabit) ?
=> Gagné, on pète tout. Mais bon ça n'arrive pas en théorie...
Hein?

Non

Je pense pas.

...

Classé dans : INSIA Mots clés : aucun

Les commentaires sont fermés.