vineri, 14 iunie 2013

Blocarea inchiderii sistemului de catre utilizatorii obisnuiti

In versiunile noi de Slackware, un utilizator obinuit, fara privilegii suplimentare care sa-i fi fost acordate, poate inchide sistemul doar prin intermediul meniului oferit in cadrul interfetelor grafice (KDE, XFCE etc) la care este conectat. Dar uneori, chiar si doar aceasta facilitate poate fi considerata a fi prea mult si administratorul sistemului sa doreasca sa blocheze facilitatea de shutdown sau de reboot prin care alti utilizatori decat el, sa poata inchide sau reporni sistemul. Este cazul tipic in care sistemul functioneaza ca server si nu dorim ca acesta sa poata fi inchis de orice utilizator conectat de la distata.

Altfel, administratorul (root) are la dispozitie 3 parghii prin care poate controla, cine poate inchide/restarta serverul (exceptand desigur facilitatile interfetelor grafice amintite) prin intermediul comenzii shutdown (halt, reboot). Acestea sunt: fisierul /etc/sudoers, fisierele /etc/shutdown.allow, /etc/inittab si capturarea secventei <CTRL><ALT><DEL> in cadrul consolelor virtuale tty de login, respectiv prin acordarea prioritatii corespunzatoare prin intermediul modificarii ownership-ului si permisiunilor fisierului /sbin/shutdown.

In cazul in care se doreste dezactivarea oricarei modalitati de inchidere restartare a sistemului, de catre alti utilizatori decat superuserul, cea mai eficienta metoda este aceea de a rula comanda shutdown cu un timp suficient de mare de activare:

root@yeti:~# shutdown -h 525600 "Inchiderea sistemului in 525600 minute" &

Executand ca superuser aceasta comanda, nici un alt utilizator nu va mai putea inchide sau restarta sistemul, atat timp cat comanda este activa (nu a fost anulata, tot de catre root).

duminică, 2 iunie 2013

Midnight Commander si afisarea spatiului pe disc ocupat de fisiere/directoare

Midnight Commander este un program extrem de util, atunci cand lucrati cu sistemul de fisiere, intr-un terminal linux. El poate fi rulat utilizand comanda mc. Are multe functii care usureaza lucrul cu fisierele si directoarele, aflate atat pe sistemul local sau chiar la distanta, pe un alt sistem, la care va conectati, de exemplu, prin protocolul ftp.

Una dintre functiile disponibile, dar numai atunci cand programul mc a fost rulat dintr-una dintre consolele standard, virtuale, tty (de login, generate (spawned) de procesul init, la care aveti acces atunci cand sistemul dumneavoastra functioneaza in runlevel 3, implicit la Slackware Linux, sau cand utilizati combinatia de taste <CTRL><ALT><F1-F6>, daca va aflati in mediul grafic XWindows, fie initilizat cu comanda startx, dintr-una din consolele mentionate, fie implicit, cand sistemul se afla in runlevel 4), este functia de calculare si afisare a marimii (dimensiunii) directoarelor selectate. Functia respectiva poate fi accesata utilizand tasta WakeUp, sau Sleep, pentru tastaturile care au aceste taste. Daca nu dispuneti de o astfel de tastatura, pentru a afisa spatiul efectiv ocupat pe disc de fisierele si directoarele sistemului de fisiere, nu va ramane decat solutia clasica, aceea de a recurge la comenzile UNIX standard (ar mai fi o posibilitate, tot o combinatie de taste in mc, dar va las pe voi sa o descoperiti :):

razvan@yeti:~$ du -B4K -csh ./
8.6G    ./
8.6G    total
razvan@yeti:~$

Pentru a verifica faptul ca va aflati intr-un terminal virtual tty, puteti folosi comanda:

razvan@yeti:~$ tty
/dev/tty3

marți, 26 martie 2013

slackpkg - un utilitar pentru update de sistem

Dupa cum v-am spus intr-o postare anterioara, pachetele de instalare a programelor in sistemul de operare Slackware Linux au, de regula, extensiile .txz sau .tgz si pot fi instalate, dupa ce au fost descarcate/downloadate, utilizand instalpkg, in cazul unei instalari noi, sau upgradepkg, in cazul unui upgrade. Va voi arata acum o alta metoda folosita pentru a upgrada sistemul la o versiune mai noua (sau chiar la versiunea "-current", aflata in faza de beta-release, adica ce nu este una stabila, ci una oferita spre testare publicului larg), sau pentru a-l tine "la zi" cu ultimele versiuni ale programelor. Este o metoda foarte simpla si ceea ce imi place la ea este usurinta cu care pot realiza upgrade-ul sistemului, fara a mai fi nevoie sa verific manual ce programe s-au modificat, sa le descarc pe fiecare in parte si sa le instalez. Totul este realizat automat, prin executia unei serii scurte de comenzi, tastate ca utilizator root bineinteles, programul necesitand insa si o serie de configurari/setari, descrise in cele ce urmeaza.

Programul are fisierele de configurare in directorul /etc/slackpkg. In acest director, primul fisier ce trebuie putin modificat este fisierul mirrors. Acest fisier contine doua sectiuni cu adrese de servere ftp mirror pentru distributia Slackware - pentru versiunea curenta si pentru ultima versiune stabila (14.0 in martie 2013). Decomentati (stergeti caracterul # de inceput de linie) linia care va convine. Eu folosesc de exemplu serverul http://slackware.osuosl.org/pub/slackware/slackware-14.0/ pentru a tine updatat sistemul meu in acest fel.
Al doilea fisier ce trebuie modificat este fisierul blacklist. Acest fisier contine pachetele care nu vor fi upgradate, sterse sau instalate de slackpkg. De regula aici se trec expresii regulate partiale care sa acopere diferite serii de pachete instalate "by third parties", de exemplu pachetele neoficiale de pe Slackbuilds.org, sau alte tipuri de pachete neoficiale Slackware.
Este recomandat si chiar necesar sa blacklistati (decomentati) urmatoarele pachete:
  • kernel-firmware
  • kernel-generic
  • kernel-generic-smp
  • kernel-huge
  • kernel-huge-smp
  • kernel-modules
  • kernel-modules-smp
Acum, inainte de a incepe procesul de update propriu-zis trebuie verificat (in ChangeLog.txt de la adresa mirror utilizata) daca au aparut kerneluri noi. Daca raspunsul este afirmativ, va trebui sa descarcati si sa instalati (folositi installpkg si nu upgradepkg!!!) noile pachete kernel. Apoi updatati fisierul /etc/lilo.conf cu noul kernel, fara a scoate vechiul kernel, si rulati comanda lilo (dar, despre utilizarea lilo pentru gestionarea procesului de bootare intr-o postare viitoare). In felul acesta veti putea sa incarcati sistemul folosind vechiul kernel, in cazul in care apar probleme.
Avand facute aceste modificari esentiale, puteti incepe procesul de update. Acesta presupune executia secventiala a urmatoarelor comenzi:

root@yeti:~# slackpkg update
root@yeti:~# slackpkg install-new
root@yeti:~# slackpkg upgrade-all
root@yeti:~# slackpkg clean-system


Acestea fiind spuse, atrag totusi atentia ca metoda expusa mai sus este una netestata suficient de catre mine si prin urmare pot aparea unele probleme. De exemplu, pot aparea situatii, atunci cand se upgradeaza intre diferite "snapshot"-uri de "-current", in care sa trebuiasca upgradate unele dintre pachetele slackpkg, wget, openssl, openssl-solibs, findutils, pkgtools, tar, xz, in mod manual, inainte de a incepe procesul de update. Cu toate acestea, consider ca slackpkg este un utilitar folositor, care poate simpifica mult munca de administrare a sistemului, daca este folosit cu destul de multa atentie si pricepere.

duminică, 9 decembrie 2012

Aranjamentul tastaturii pentru limba română

În Linux și implicit în Slackware, se poate configura aranjamentul tastaturii pentru a putea folosi diacriticele românesti. Folosind comanda urmatoare în mediul grafic X11, într-o consolă sau xterm:

root@yeti:~# setxkbmap ro

se poate configura sistemul în acest sens.

Diacriticele astfel configurate sunt accesibile apăsînd tasta AltGr (tasta Alt din dreapta) și tastele corespunzătoare fără semnul diacritic. Ex: AltGr-i pentru î, AltGr-a pentru ă, AltGr-s pentru ș, AltGr-t pentru ț. Excepție de la această regulă face caracterul â, care se obține prin combinația AltGr-q
Desigur, pentru a folosi majuscule se adaugă și tasta Shift, exemplu AltGr-Shift-q pentru Â.

duminică, 2 decembrie 2012

Cum se instaleaza un program in Slackware

Am facut intr-un articol precedent referire la instalarea unui program bazat pe utilizarea Slackbuild-ului - un script care odata rulat, produce/creaza, pe baza surselor programului dorit a fi instalat, un pachet de instalare a programului respectiv, pachet ce va putea fi gasit, la incheierea executiei scriptului, in directorul /tmp.
Sa explic pe scurt acum, cum se si instaleaza pachetul respectiv, sau orice alt pachet de instalare in Slackware. Este atat de simplu ca executia urmatoarei comenzi:

root@yeti:~# installpkg numeprogram.txz

Mai amintesc faptul ca in Slackware, pachetele de programe de instalat au una dintre exensiile .txz sau .tgz
Slackware mai pune la dispozitie si un utilitar special de gestiune a pachetelor numit pkgtool. Cu ajutorul acestuia, printre alte functii, puteti vizualiza care este continutul (componenta fisierelor) unui anumit pachet aflat in sistem, deci instalat, il puteti dezinstala etc.
Pentru dezinstalarea unui pachet, o alta cale ar fi corespondentul comenzii installpkg pentru dezinstalare: removepkg, iar pentru instalarea unei versiuni mai noi a unui program instalat, va puteti folosi de comanda upgradepkg. Nu uitati insa niciodata ca aveti la dispozitie si comanda man pentru a afisa pagina de manual a unei comenzi. Am explicat in articolul precedent cum se utilizeaza.

sâmbătă, 17 noiembrie 2012

Nota asupra utilizarii paginilor de manual (manpages)

In articolul precedent am facut referire la paginile de manual. Voi explica in cadrul acestei note modul de consultare a acestora.
Sa presupunem ca dorim sa aflam mai multe informatii despre comanda mount. Prima si cea mai facila solutie este sa afisam pagina de manual aferenta acestei comenzi. Mai sunt si alte solutii, mai avansate (exemplu: comanda 'info'), dar sa ne concentram acum asupra acestei solutii.
Pentru consultarea paginii de manual a unei comenzi linux vom folosi comanda man. In cazul particular al comenzii mount, vom folosi:

tri@yeti:~$ man mount

Aceasta comanda va afisa informatii formatate referitoare la comanda mount.

O comanda linux poate avea 3 tipuri de optiuni (insa nu este o regula in a le avea pe toate, cele mai multe comenzi aliniindu-se standardului GNU + formatul lung):
  1. formatul lung (ex: mount --help)
  2. formatul GNU (ex: ls -l)
  3. formatul BSD (ex: ps aux
Executand 'man mount' intr-un terminal linux, va fi afisata o pagina cu informatii de manual (manpage) pentru comanda mount. De cele mai multe ori insa, dorim sa aflam informatii doar despre o anumita optiune a comenzii respective - in cazul nostru mount. De exemplu, dorim sa aflam informatii despre optiunea '-t'. Ca solutie si in acelasi timp ca mod de defilare prin pagina cu informatii de manual, putem tasta: /-t
Tastand '/' intram in modul "search" si orice sir vom tasta dupa '/' va fi cautat in pagina de manual respectiva. Desigur, pot fi gasite si, de cele mai multe ori sunt gasite mai multe referinte la sirul cautat. Putem in acest caz defila prin referintele gasite utilizand tasta 'n' (next), pana cand ajungem la definitia optiunii cautate (sau la referinta dorita la sirul cautat).

joi, 1 noiembrie 2012

Testare LVM (Logical Volume Management) utilizand fisiere loopback ca dispozitive de stocare

Voi prezenta in acest articol modul de lucru cu sistemul LVM - crearea de "Logical Volumes" si utilizarea lor. Listingul este suficient de sugestiv, in plus recomand si consultarea paginilor de manual (manpages) ale comenzilor utilizate. Deasemenea, ca referinte puteti citi:
   [1] Installing Slackware on Logical volumes
   [2] Logical volume management
Presupunem urmatorul scenariu: ati instalat Linux si dupa un timp, hard-disk-ul s-a umplut. Doriti sa puteti adauga fara probleme un nou hardisk si sa il adaugati la unul dintre directoarele existente; un exemplu foarte frecvent este acela in care aveti o partitie a hard-disk-ului montata pe sistemul de fisiere /home.
Ca sa puteti realiza aceasta sarcina trebuie sa utilizati LVM. Nu este posibila adaugarea de noi partitii (nou spatiu), la unul din directoarele existente (/, /home etc), fara utilizarea LVM. Iata exemplul concret - poate fi usor adaptat la nevoile si cerintele voastre, daca l-ati inteles si ati mai si citit documentatia indicata:

sh-4.2$ su -
Password:
root@yeti:~# mkdir LVM-test
root@yeti:~# cd LVM-test/
root@yeti:~/LVM-test# dd if=/dev/urandom of=lvm.test1 bs=1k count=20480
20480+0 records in
20480+0 records out
20971520 bytes (21 MB) copied, 3.22633 s, 6.5 MB/s
root@yeti:~/LVM-test# losetup -f --show lvm.test1
/dev/loop0
root@yeti:~/LVM-test# fdisk /dev/loop0
Welcome to fdisk (util-linux 2.21.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x63fcbdb7.

Command (m for help): p

Disk /dev/loop0: 20 MB, 20971520 bytes
255 heads, 63 sectors/track, 2 cylinders, total 40960 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63fcbdb7

      Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-40959, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-40959, default 40959):
Using default value 40959
Partition 1 of type Linux and of size 19 MiB is set

Command (m for help): p

Disk /dev/loop0: 20 MB, 20971520 bytes
255 heads, 63 sectors/track, 2 cylinders, total 40960 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63fcbdb7

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1            2048       40959       19456   83  Linux

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           27  Hidden NTFS Win 82  Linux swap      c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux extended  c7  Syrinx
 5  Extended        41  PPC PReP Boot   86  NTFS volume set da  Non-FS data    
 6  FAT16           42  SFS             87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux plaintext de  Dell Utility   
 8  AIX             4e  QNX4.x 2nd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    4f  QNX4.x 3rd part 93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 54  OnTrackDM6      a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    56  Golden Bow      a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 5c  Priam Edisk     a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 61  SpeedStor       ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    63  GNU HURD or Sys af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1 80  Old Minix      
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): p

Disk /dev/loop0: 20 MB, 20971520 bytes
255 heads, 63 sectors/track, 2 cylinders, total 40960 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x63fcbdb7

      Device Boot      Start         End      Blocks   Id  System
/dev/loop0p1            2048       40959       19456   8e  Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 22: Invalid argument.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@yeti:~/LVM-test# pvcreate /dev/loop0
  Physical volume "/dev/loop0" successfully created
root@yeti:~/LVM-test# vgcreate vg-test /dev/loop0
  Volume group "vg-test" successfully created
root@yeti:~/LVM-test# lvcreate -L 4M -n discul1 vg-test
  Logical volume "discul1" created
root@yeti:~/LVM-test# lvcreate -l 100%FREE -n discul2 vg-test
  Logical volume "discul2" created
root@yeti:~/LVM-test# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg-test/discul1
  LV Name                discul1
  VG Name                vg-test
  LV UUID                iYp3EO-ygAm-D0a3-Qfaq-GPOc-GDAy-Hcyri2
  LV Write Access        read/write
  LV Creation host, time yeti, 2012-11-01 15:52:09 +0200
  LV Status              available
  # open                 0
  LV Size                4.00 MiB
  Current LE             1
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vg-test/discul2
  LV Name                discul2
  VG Name                vg-test
  LV UUID                NiyOd1-15eW-nn7d-ksZq-Fe5r-46pT-rW18j6
  LV Write Access        read/write
  LV Creation host, time yeti, 2012-11-01 15:53:49 +0200
  LV Status              available
  # open                 0
  LV Size                12.00 MiB
  Current LE             3
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
root@yeti:~/LVM-test# vgdisplay 
  --- Volume group ---
  VG Name               vg-test
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               16.00 MiB
  PE Size               4.00 MiB
  Total PE              4
  Alloc PE / Size       4 / 16.00 MiB
  Free  PE / Size       0 / 0   
  VG UUID               Ill8va-3lTi-3PwF-e80d-czg7-YjZw-AQDWjD
   
root@yeti:~/LVM-test# pvdisplay
  --- Physical volume ---
  PV Name               /dev/loop0
  VG Name               vg-test
  PV Size               20.00 MiB / not usable 4.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4
  Free PE               0
  Allocated PE          4
  PV UUID               lBPYko-wmlj-eg9B-slbh-Iwr9-ODBv-Z9YnRT
   
root@yeti:~/LVM-test# mkfs.ext3 -m 0 /dev/vg-test/discul1
mke2fs 1.42.6 (21-Sep-2012)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
1024 inodes, 4096 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=4194304
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

root@yeti:~/LVM-test# tune2fs -i 0 /dev/vg-test/discul1 
tune2fs 1.42.6 (21-Sep-2012)
Setting interval between checks to 0 seconds
root@yeti:~/LVM-test# mkfs.ext3 -m 0 /dev/vg-test/discul2
mke2fs 1.42.6 (21-Sep-2012)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
3072 inodes, 12288 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=12582912
2 block groups
8192 blocks per group, 8192 fragments per group
1536 inodes per group
Superblock backups stored on blocks: 
        8193

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

root@yeti:~/LVM-test# tune2fs -i 0 /dev/vg-test/discul2 
tune2fs 1.42.6 (21-Sep-2012)
Setting interval between checks to 0 seconds
root@yeti:~/LVM-test# mount /dev/vg-test/discul1 /mnt/LVM/disc1/ -t ext3 -o rw
root@yeti:~/LVM-test# mount /dev/vg-test/discul2 /mnt/LVM/disc2/ -t ext3 -o rw
root@yeti:~/LVM-test# mount
/dev/root on / type ext4 (rw,commit=0)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
/dev/sda1 on /mnt/WindowsXP type fuseblk (rw,allow_other,blksize=4096,default_permissions)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sdb5 on /mnt/E type fuseblk (rw,allow_other,blksize=4096,default_permissions)
gvfs-fuse-daemon on /home/tri/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=tri)
/dev/mapper/vg--test-discul1 on /mnt/LVM/disc1 type ext3 (rw)
/dev/mapper/vg--test-discul2 on /mnt/LVM/disc2 type ext3 (rw)
root@yeti:~/LVM-test# echo "scriem intr-un fisier" > /mnt/LVM/disc2/fisier
root@yeti:~/LVM-test# dd if=/dev/urandom of=lvm.test2 bs=1k count=30960
30960+0 records in
30960+0 records out
31703040 bytes (32 MB) copied, 4.86575 s, 6.5 MB/s
root@yeti:~/LVM-test# losetup -f --show lvm.test2
/dev/loop1
root@yeti:~/LVM-test# mkfs.ext3 -m 0 /dev/loop1
mke2fs 1.42.6 (21-Sep-2012)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
7744 inodes, 30960 blocks
0 blocks (0.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=31719424
4 block groups
8192 blocks per group, 8192 fragments per group
1936 inodes per group
Superblock backups stored on blocks: 
        8193, 24577

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

root@yeti:~/LVM-test# tune2fs -i 0 /dev/loop1
tune2fs 1.42.6 (21-Sep-2012)
Setting interval between checks to 0 seconds

root@yeti:~/LVM-test# pvcreate /dev/loop1
  Physical volume "/dev/loop1" successfully created
root@yeti:~/LVM-test# vgextend vg-test /dev/loop1
  Volume group "vg-test" successfully extended
root@yeti:~/LVM-test# vgdisplay
  --- Volume group ---
  VG Name               vg-test
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               44.00 MiB
  PE Size               4.00 MiB
  Total PE              11
  Alloc PE / Size       4 / 16.00 MiB
  Free  PE / Size       7 / 28.00 MiB
  VG UUID               Ill8va-3lTi-3PwF-e80d-czg7-YjZw-AQDWjD
   
root@yeti:~/LVM-test# df -h /mnt/LVM/disc1/
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg--test-discul1  3.9M  1.1M  2.9M  27% /mnt/LVM/disc1
root@yeti:~/LVM-test# df -h /mnt/LVM/disc2/
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg--test-discul2   12M  1.2M   11M  10% /mnt/LVM/disc2
root@yeti:~/LVM-test# lvextend -L +4 /dev/vg-test/discul2 /dev/loop1
  Extending logical volume discul2 to 16.00 MiB
  Logical volume discul2 successfully resized
root@yeti:~/LVM-test# resize2fs /dev/vg-test/discul2
resize2fs 1.42.6 (21-Sep-2012)
Filesystem at /dev/vg-test/discul2 is mounted on /mnt/LVM/disc2; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg-test/discul2 to 16384 (1k) blocks.
The filesystem on /dev/vg-test/discul2 is now 16384 blocks long.

root@yeti:~/LVM-test# df -h /mnt/LVM/disc2/
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg--test-discul2   16M  1.2M   15M   8% /mnt/LVM/disc2
root@yeti:~/LVM-test# ls -l /mnt/LVM/disc2/
total 13
-rw-r--r-- 1 root root    47 Nov  1 15:59 fisier
drwx------ 2 root root 12288 Nov  1 15:57 lost+found/
root@yeti:~/LVM-test# lvcreate -l 100%FREE -n discul3 vg-test
  Logical volume "discul3" created
root@yeti:~/LVM-test# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg-test/discul1
  LV Name                discul1
  VG Name                vg-test
  LV UUID                iYp3EO-ygAm-D0a3-Qfaq-GPOc-GDAy-Hcyri2
  LV Write Access        read/write
  LV Creation host, time yeti, 2012-11-01 15:52:09 +0200
  LV Status              available
  # open                 1
  LV Size                4.00 MiB
  Current LE             1
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
   
  --- Logical volume ---
  LV Path                /dev/vg-test/discul2
  LV Name                discul2
  VG Name                vg-test
  LV UUID                NiyOd1-15eW-nn7d-ksZq-Fe5r-46pT-rW18j6libe
  LV Write Access        read/write
  LV Creation host, time yeti, 2012-11-01 15:53:49 +0200
  LV Status              available
  # open                 1
  LV Size                16.00 MiB
  Current LE             4
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1
   
  --- Logical volume ---
  LV Path                /dev/vg-test/discul3
  LV Name                discul3
  VG Name                vg-test
  LV UUID                qACskv-Xkm1-3KiZ-R8QX-tw9c-vuV5-UDL5lH
  LV Write Access        read/write
  LV Creation host, time yeti, 2012-11-01 16:11:51 +0200
  LV Status              available
  # open                 0
  LV Size                24.00 MiB
  Current LE             6
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
   
root@yeti:~/LVM-test# 

O comanda cheie este resize2fs, care utilizata corespunzator extinde sistemul de fisiere ext3 la noua dimensiune extinsa cu lvextend.