22
février 2011
INSIA - Technologies UNIX : TP N°4
Rédigé par Matthieu CERDA Aucun commentaire Mis à jour le 22/02/2011
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.
...