IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Linux Professional Institute Certificate. LPIC-1

Lpic1 large.gif
Certificat LPIC-1
Examen: 101 (torneu a la resta de temes)
Fitxers: LPI104.1_104.2_104.3_ParticionsSistemesFitxersIMuntatge.pdf (LPI104.1_104.2_104.3_ParticionsSistemesFitxersIMuntatge.odp)
Objectius: http://www.lpi.org/eng/certification/the_lpic_program/lpic_1/exam_101_detailed_objectives
Dipòsit SVN: https://svn.projectes.lafarga.cat/svn/lpi/Materials/Examen_101/104.2
Usuari: anonymous
Paraula de pas: qualsevol paraula de pas

Objectius del tema

104.2. Mantenir la integritat dels sistemes de fitxers
Objective.jpg
  • Objectiu: Els candidats han de ser capaços de mantenir un sistema de fitxers estàndard, així com la informació extra associada a un sistema de fitxers amb journaling.
  • Pes: 2
060317 Icon - Theory of Knowledge v01 pdc.jpg

Àrees Clau de Coneixement:

Icon list.jpg

La següent és una llista parcial de fitxers, termes i utilitats utilitzades:

Text-editor.svg

Apunts: LPI 104.2. Mantenir la integritat dels sistemes de fitxers

Controlar l'ús de disc. Espai lliure (df) i espai ocupat (du)

Disposem de les ordres:

  • du (disc usage):
  • df (disc free)

per tal de gestionar l'ús de l'espai dels sistemes de fitxers del sistema.

El problema de la mida d'un bloc

Consulteu block_size.

Ordre ls versus du i df

Consulteu:

Fdisk#Mida_dels_fitxers._Ordres_ls_i_du

du

IMPORTANT: Per defecte només mostra les mides de les carpetes! Amb -a també mostra els fitxers. Vegeu també baobab

Són les inicials de disc usage. Segons el manual.

$ man du

Estima la mida que utilitza un fitxer. Li podem indicar que calculi la mida d'un fitxer:

$ du /home/sergi/ProvesDiscs/images/1GB.img 
1025012	/home/sergi/ProvesDiscs/images/1GB.img

La mida total es mostra en kbytes. Li podem indicar que mostri els resultats en valors "més humans" amb l'opció -h (--human-readable):

$ du -h /home/sergi/ProvesDiscs/images/1GB.img 
1001M	/home/sergi/ProvesDiscs/images/1GB.img

Que és sempre arrodonit a un valor enter : 1025012/1024=1000,98828125 10001

O si l'indiquem un directori calcularà la mida de tots els fitxers que hi ha al directori:

$ du -h   /home/sergi/Documents/imatges/
328K	/home/sergi/Documents/imatges/

Si volem que mostri els fitxers (per defecte només mostra els subdiretoris):

$ du -h -a  /home/sergi/Documents/imatges/
68K	/home/sergi/Documents/imatges/cfdisk.png
152K	/home/sergi/Documents/imatges/GNUPartedAplicaCanvis.png
64K	/home/sergi/Documents/imatges/snapshot1.png
40K	/home/sergi/Documents/imatges/tasksel.png
328K	/home/sergi/Documents/imatges/

L'opció -c mostra un total:

$ du -h -a -c /home/sergi/Documents/imatges/
284K	/home/sergi/Documents/imatges/ATA_on_mainboard.jpg
96K	/home/sergi/Documents/imatges/CreativeCommons.png
480K	/home/sergi/Documents/imatges/Ata_20070127_002.jpg
24K	/home/sergi/Documents/imatges/SATA-Signal-Cable-1.jpg
32K	/home/sergi/Documents/imatges/300px-SATA_ports.jpg
920K	/home/sergi/Documents/imatges/
920K	total

També podeu utilitzar les opcions --block-size i --apparent-size. Consulteu l'apartat:

Fdisk#El_problema_de_la_mida_d.27un_bloc
Fdisk#Mida_dels_fitxers._Ordres_ls_i_du

Mostrar en ordre les carpetes que ocupen més espai de la carpeta actual

# du -h --max-depth=1 | sort -rn
804K	./.kde
610K	./.thumbnails
132M	.
77M	./webmin-1.360
44K	./Desktop
36K	./bin
28M	./.mozilla
24K	./.gnupg
16K	./.ssh
16K	./.kbd
12K	./.mc
8,0K	./.mcop
6,4M	./munin-1.4.4
4,0K	./.skel
1,8M	./.ooo-2.0
...

Per fer-ho de l'arrel del sistema:

# du -h --max-depth=1 / | sort -rn

Mostrar els fitxers i carpetes que ocupen Giges

$ sudo du -ahx / | egrep '^[0-9]*[G] *' 
13G	/samba/Departaments/09_Ciencies_Naturalesa
26G	/samba/Departaments/11_FP_Activitats_fisiques/Activ_Fisiques2010-2011/IVTrobadasecundariaAAFE/PRG001
26G	/samba/Departaments/11_FP_Activitats_fisiques/Activ_Fisiques2010-2011/IVTrobadasecundariaAAFE
26G	/samba/Departaments/11_FP_Activitats_fisiques/Activ_Fisiques2010-2011
34G	/samba/Departaments/11_FP_Activitats_fisiques
18G	/samba/Departaments/16_FP_Informatica
102G	/samba/Departaments
40G	/samba/Recursos_Departaments/Recursos_didactics_Informatica/software
19G	/samba/Recursos_Departaments/Recursos_didactics_Informatica/Pelicules
64G	/samba/Recursos_Departaments/Recursos_didactics_Informatica
16G	/samba/Recursos_Departaments/Recursos_Departaments
106G	/samba/Recursos_Departaments
213G	/samba
221G	/

df

Segons el manual:

$ man df
 df - report file system disk space usage

Es a dir ens indica quin és l'ús de disc (no la mida real) dels sistemes de fitxers del nostre ordinador. Sense opcions:

$ df
S. fitxers         Blocs   1K     En ús   Lliures  %Ús Muntat a
/dev/sda1            110650276  81828724  23200812  78% /
udev                   1026064       328   1025736   1% /dev
none                   1026064       708   1025356   1% /dev/shm
none                   1026064       220   1025844   1% /var/run
none                   1026064         0   1026064   0% /var/lock
none                   1026064         0   1026064   0% /lib/init/rw

IMPORTANT: La mida està en blocs Linux, que tenen com a mida en bytes 1024

Podeu veure la mida en bytes amb:

$ df --block-size=1
S. fitxers         Blocs   1B     En ús   Lliures  %Ús Muntat a
/dev/sda1            113305882624 83792867328 23757377536  78% /
udev                 1050689536    335872 1050353664   1% /dev
none                 1050689536    724992 1049964544   1% /dev/shm
none                 1050689536    225280 1050464256   1% /var/run
none                 1050689536         0 1050689536   0% /var/lock
none                 1050689536         0 1050689536   0% /lib/init/rw

Normalment s'utilitza l'opció -h (--human-readable) per tal de mostra les mides en múltiples de 1024:

$ df -h
S. fitxers            Mida En ús Lliure %Ús Muntat a
/dev/sda1             106G   79G   23G  78% /
udev                 1003M  328K 1002M   1% /dev
none                 1003M  708K 1002M   1% /dev/shm
none                 1003M  220K 1002M   1% /var/run
none                 1003M     0 1003M   0% /var/lock
none                 1003M     0 1003M   0% /lib/init/rw

Si la mida mostrada no coincideix amb la teòrica dels vostres discs, tingueu en compte que els fabricants de maquinari utilitzant el sistema internacional (SI). Podeu consultar les dades en aquest sistema amb l'opció -H (--si):

$ df -H
S. fitxers             Mida  En ús Lliure  %Ús Muntat a
/dev/sda1              114G    84G    24G  78% /
udev                   1,1G   336k   1,1G   1% /dev
none                   1,1G   725k   1,1G   1% /dev/shm
none                   1,1G   226k   1,1G   1% /var/run
none                   1,1G      0   1,1G   0% /var/lock
none                   1,1G      0   1,1G   0% /lib/init/rw

Podeu mostrar un total amb:

$ df -H --total
...
total                  119G    84G    30G  75%

Podeu mostrar tots els dispositius amb:

$ df -a

inode usage

Podeu utilitzar l'opció -i

$ df -i
S. fitxers            Nodes‐i   En ús Lliures   %Ús Muntat a
/dev/sda1            12263424  749634 11513790    7% /
udev                  128343     803  127540    1% /dev
none                  128343      12  128331    1% /dev/shm
none                  128343      90  128253    1% /var/run
none                  128343       2  128341    1% /var/lock
none                  128343       3  128340    1% /lib/init/rw
/dev/sdb5            10911744    4005 10907739    1% /home2

e2fsprogs

Es tracta del paquet que proporciona les eines per crear sistemes de fitxers ext, actualment (--acacha 12:11, 14 nov 2009 (UTC)) suporta la creació de sistemes de fitxers ext2, ext3 i ext4.

Les ordres proporcionades per aquest paquet són:

$ dpkg -L e2fsprogs | grep bin
/sbin
/sbin/e2fsck
/sbin/fsck.ext2
/sbin/fsck.ext3
/sbin/fsck.ext4
/sbin/fsck.ext4dev
/sbin/debugfs
/sbin/mke2fs
/sbin/badblocks
/sbin/tune2fs
/sbin/dumpe2fs
/sbin/logsave
/sbin/e2image
/sbin/e2undo
/sbin/mkfs.ext2
/sbin/mkfs.ext3
/sbin/mkfs.ext4
/sbin/mkfs.ext4dev
/sbin/e2label
/sbin/resize2fs
/usr/bin
/usr/bin/chattr
/usr/bin/lsattr
/usr/sbin
/usr/sbin/mklost+found
/usr/sbin/filefrag
/usr/sbin/e2freefrag  

Les més importants són:

  • e2fsck: la versió de fsck per a sistemes de fitxers ext
  • mke2fs: la versió de mkfs per a sistemes de fitxers ext
  • resize2fs: permet modificar la mida (expandir i comprimir ) en sistemes de fitxers ext
  • tune2fs: s'utilitza per canviar paràmetres del sistema de fitxers
  • dumpe2fs: mostra la informació dels superblocs i dels grups de bloc
  • debugfs: permet veure i modificar estructures internet del sistema de fitxers


El fitxer de configuració és:

$ dpkg -L e2fsprogs | grep etc
/etc
/etc/mke2fs.conf


Recursos:

Comprovar i reparar sistemes de fitxers. Ordre fsck

Segons el manual:

$ man fsck

Aquesta ordre ens permet comprovar i reparar sistemes de fitxers Linux. La sintaxi de l'ordre és:

$ fsck [ -sAVRTMNP ] [ -C [ fd ] ] [ -t fstype ] [filesys ... ] [--] [ fs-specific-options ]

On:

  • -sAVRTMNP: són les opcions genèriques de fsck
  • filesys: És el nom del dispositiu. Normalment una partició (/dev/sda1, /dev/sda2, /dev/sdc3...)
  • fstype: Permet indicat els tipus de sistema de fitxers a comprovar. $ man fs
  • fs-specific-options: opcions específiques de cada sistema de fitxers
  • -C: mostra una barra de progrés

On les opcions més important són:

  • -A: recorre el fitxer /etc/fstab i intenta comprovar tots els sistemes de fitxers.
  • '-R: es salta el root filesystem si es combina amb -R
  • -V: opció verbose
  • -N: no executa l'ordre, només mostra les accions a dur a terme.
  • -M: no comprovar sistemes de fitxers muntats

L'ordre mkfs com fdisk és proporcionada pel paquet util-linux:

$ dpkg -S /sbin/fsck
util-linux: /sbin/fsck

Realment, fsck és un front-end que apunta cap a les ordres que comproven cada tipus de sistema de fitxers (fsck.fstype). Alguns dels utilitzats més sovint són:

$ fsck.ext2               // comprovar sistemes de fitxers ext2
$ fsck.ext3               // comprovar sistemes de fitxers ext3
$ fsck.ext4              // comprovar sistemes de fitxers ext4
...

Podeu consultar quins teniu instal·lats al vostre sistema amb:

$ whereis fsck
fsck: /sbin/fsck.ext4 /sbin/fsck.minix /sbin/fsck /sbin/fsck.ext2 /sbin/fsck.ext4dev /sbin/fsck.nfs /sbin/fsck.cramfs /sbin/fsck.msdos 
/sbin/fsck.ext3 /sbin/fsck.vfat /usr/share/man/man8/fsck.8.gz

$ type fsck
fsck is /sbin/fsck

Quan indiquem el tipus de sistema de fitxers amb l'opció -t fstype, fsck busca el constructor de fitxers per aquell tipus de sistema de fitxers a la carpeta:

/sbin

Els constructors dels sistemes de fitxers tipus ext són proporcionats pel paquet e2fsprogs:

$ dpkg -S /sbin/fsck.ext2
e2fsprogs: /sbin/fsck.ext2
$ dpkg -S /sbin/fsck.ext3
e2fsprogs: /sbin/fsck.ext3
$ dpkg -S /sbin/fsck.ext4
e2fsprogs: /sbin/fsck.ext4

Cal tenir en compte que totes les aplicacions de creació de sistemes de fitxers ext apunten a ext2.

Els codis de retorn de fsck són:

           0    - No errors
           1    - File system errors corrected
           2    - System should be rebooted
           4    - File system errors left uncorrected
           8    - Operational error
           16   - Usage or syntax error
           32   - Fsck canceled by user request
           128  - Shared library error


Comprovar i reparar sistemes de fitxers ext. Ordre e2fsck

NOTA: Mai s'ha d'utilitzar cap comanda tipus fsck sobre un sistema de fitxers muntat. Si heu de fer un fsck sobre la partició principal del sistema operatiu i no la podeu desmuntar, haureu d'utilitzar un LIVE o accedir-hi des de un altre sistema operatiu si el vostre sistema és DUAL. És recomanable que si voleu fer proves amb fsck i la resta de programes d'aquest article ho feu des de una Live, un màquina virtual o un sistema on no us importi perdre dades.

Fsck és un programa que busca inconsistències en un sistema de fitxers i tracta de corregir-les. e2fsck és el fsck per a sistemes ext2 i ext3:

NOTA: no executeu ordre com la següent si no és un sistema de proves

$ sudo fsck /dev/sda1
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/dev/sda1: clean, 11/180864 files, 14424/361454 blocks

NOTA: observeu com realment s'executa e2fsck

Si el sistema no té errors ens dirà que es un sistema net (clean):

/dev/sda1: clean, 11/180864 files, 14424/361454 blocks

Es pot forçar el test complet sobre un sistema net amb l'opció -f:

$ sudo fsck /dev/loop0
fsck from util-linux-ng 2.16
e2fsck 1.41.9 (22-Aug-2009)
prova: net, 11/389376 fitxers, 60295/1556645 blocs

NOTA: prova és l'etiqueta del sistema de fitxers

$ sudo fsck -f /dev/loop0
fsck from util-linux-ng 2.16
e2fsck 1.41.9 (22-Aug-2009)
Pas 1: comprovació de nodes-i, blocs i mides
Pas 2: comprovació de l'estructura del directori
Pas 3: comprovació de la connectivitat dels directoris
Pas 4: comprovació dels nombres de referències
Pas 5: comprovació del resum de la informació del grup
prova: 11/389376 fitxers (0.0% no contigus), 60295/1556645 blocs

Aquest test complet s'executa de tant en tant al iniciar el sistema (vegeu tune2fs). Normalment la opció per defecte és cada 180 dies o cada 34 vegades que es munti el sistema.

Si proveu de fer un fsck sobre un sistema muntat us avisarà que és perillós:

$ mkdir p
$ sudo mount /dev/sda1 p

$ sudo fsck /dev/sda1 
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/dev/sda1 is mounted.    
 
WARNING!!!  Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.

Do you really want to continue (y/n)? 

Les particions es comproven abans de ser muntades durant l'inici del sistema si així ho indica el fitxer /etc/fstab:

$ cat /etc/fstab
...
# /dev/sda2
UUID=2a1f0d8f-bbd6-4f13-a393-ddfc08f8a73d /               ext3    defaults,errors=remount-ro 0      1
...

L'últim camp indica si s'ha d'executar un fsck del sistema abans de muntar-lo durant el boot.

Buscant blocs incorrectes (bad blocs)

$  sudo fsck -c /dev/sda1
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
Checking for bad blocks (read-only test): done                                
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/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 11/180864 files (9.1% non-contiguous), 14424/361454 blocks

L'ordre badblocks és equivalent, però cal especificar la mida de bloc:

$ sudo badblocks -b 4096 /dev/loop0

NOTA: És més recomanable utilitzar fsck amb l'opció -c

Hi ha un text més a fons doblant c:

$ sudo fsck -cc /dev/sda1

Reparar un sistema amb un superbloc incorrecte

Es pot utilitzar les còpies de seguretat del superblock:

$ sudo e2fsck -f -b 8193 /dev/sda3

Consulteu:

Forçar una comprovació del sistema de fitxers durant l'arrancada

Per defecte sistemes operatius com Ubuntu ja comproven el disc cada x temps durant l'arrencada del sistema. L'ordre tune2fs ens permet indicar cada quan volem comprovar el disc. Els discos es comproven sempre abans de ser muntats, però només es fa una comprovació completa si els dis està marcat com a dirty (brut) i sempre que s'hagi indicat que es vol comprovar el disc abans de muntar al fitxer /etc/fstab.

Que durant l'arrencada es faci una comprovació de disc completa cada X temps també depèn del que s'hagi indicat a la variable FSCKFIX del fitxer /etc/default/rcS.

Els fsck s'han de fer sobre una unitat muntada. Per això normalment, es fa un fsck durant l'arrencada. També es pot forçar un fsck al tornar a iniciar de diferents formes:

$ cd /
$ sudo touch /forcefsck

També es pot fer am l'ordre reboot:

# shutdown -rF now

O utilitzant tune2fs.

NOTA: {{{1}}}

Canviant la mida d'una partició i d'un sistema de fitxers. Ordre resize2fs

Fer més petita una partició

Ho farem amb un dispositiu de proves, que hem muntat utilitzant losetup, a partir d'una imatge de disc creada amb dd i particionada amb fdisk. Consulteu:

Fdisk#Creant_una_imatge_de_disc_des_de_zero

NOTA: creeu només una partició

Primer necessitem recollir una sèrie d'informació

$ df | grep /dev/loop1
/dev/loop1             6128788    143388   5674072   3% /home/sergi/loop1
$ df -B 4k | grep /dev/loop1
/dev/loop1              251974      4417    234757   2% /home/sergi/loop1p1
$ df -h | grep /dev/loop1
/dev/loop1            985M   18M  918M   2% /home/sergi/loop1p1
$ sudo fdisk -l /dev/loop0

Disc /dev/loop0: 1048 MB, 1048576000 octets
255 heads, 63 sectors/track, 127 cylinders
Units = cilindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0x02338be9  

 Dispositiu Arrenc.   Inici         Final    Blocs    Id  Sistema
/dev/loop0p1               1         127     1020096   83  Linux

NOTA: Abans de modificar les mides cal que les particions estiguin desmuntades

$ sudo umount /dev/loop1

Abans de canviar la mida cal mirar que el sistema estigui correcte (clean):

$ fsck from util-linux-ng 2.16
e2fsck 1.41.9 (22-Aug-2009)
/dev/loop1: net, 11/64000 fitxers, 8443/256000 blocs

S'elimina el journal:

$ sudo tune2fs -O ^has_journal /dev/loop1

i fem un fsck complet:

$ sudo e2fsck -f /dev/loop1
e2fsck 1.41.9 (22-Aug-2009)
Pas 1: comprovació de nodes-i, blocs i mides
Pas 2: comprovació de l'estructura del directori
Pas 3: comprovació de la connectivitat dels directoris
Pas 4: comprovació dels nombres de referències
Pas 5: comprovació del resum de la informació del grup
/dev/loop1: 11/64000 fitxers (0.0% no contigus), 4342/256000 blocs

Ara modifiquem la mida:

$ sudo resize2fs /dev/loop1 600M
resize2fs 1.41.9 (22-Aug-2009)
Resizing the filesystem on /dev/loop1 to 153600 (4k) blocks.
El sistema de fitxers a /dev/loop1 té ara una mida de 153600 blocs.

Ara esborrem la partició amb fdisk

$ sudo fdisk /dev/loop1
...
Command (m for help): d
Partition number (1-5): 1

IMPORTANT: no s'esborren les dades només s'esborra la taula de particions. Hem de canviar les mides amb la informació que hem recollit prèviament

i creem una nova partició:

Ordre (m per a obtenir ajuda): n
Acció de l'ordre
e   estesa
   p   partició primària (1-4)
p
Nombre de partició (1-4): 1

Ara bé la part critica on hem d'especificar la nova mida:

Primera cilindre (1-127, valor per defecte 1): 1

Ara cal calcular la mida de la nova partició. Necessitem saber l'últim cilindre. El calculem a partir de la sortida de resize:

153600* 4k * 1.03 = 632832k

So we prepend that value with a + sign and replace the small k with a capital one (K) and enter it:

Last cilindre, +cilindres or +size{K,M,G} (1-127, valor per defecte 127): +632832K     

Ordre (m per a obtenir ajuda): a
Nombre de partició (1-4): 1  
 
Ordre (m per a obtenir ajuda): w
S'ha modificat la taula de particions. 

S'està cridant ioctl() per rellegir la taula de particions. 

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)
S'estan sincronitzant els discs.

Ara tornem a comprovar el sistema:

$ sudo fsck -n /dev/loop1
fsck from util-linux-ng 2.16
e2fsck 1.41.9 (22-Aug-2009)
/dev/loop1: net, 11/40000 fitxers, 2708/153600 blocs

i afegim el journal:

$ sudo tune2fs -j /dev/loop1

Finalment es pot executar un altre com el resize sense cap mida:

$ sudo resize2fs /dev/loop1

I ajustarà la mida del sistema de fitxers a la mida de la partició.

Recursos:


Ajuntar dues particions ext3

Recursos:

Ajustar paràmetres dels sistemes de fitxers ext. Ordre tune2fs

Consulteu tune2fs.

Depurar sistemes de fitxers ext. Ordre debugfs

Segons el manual:

$ man debugfs

Es tracta d'un depurador de sistemes de fitxers ext. Ens permet consultar dades del sistema de fitxers en temps real.

Es pot executar en mode comanda:

$ sudo debugfs
debugfs 1.41.9 (22-Aug-2009)
debugfs:  

Es queda a l'espera d'un ordre. Les podeu consultar amb help:

debugfs: help

Per sortir podeu utilitzar la tecla q.

Per algunes opcions es necessita permisos d'escriptura. Cal indicar -w (write)

$ sudo debugfs -w /dev/loop1

Algunes de les ordres més interessant són:

show_super_stats o stats

Mostra la informació dels superblocs i mostra les dades de forma similar a dumpe2fs.

Mostrar els inodes d'un fitxer:

                           ​
stat filename

Vegem un exemple:

Primer munteu un sistema de fitxers de prova:

$ mkdir loop1
$ sudo mount /dev/loop1  loop1
$ cd loop1/
$ sudo mkdir prova
$ sudo touch prova/file
$ sudo vi prova/file
$ sudo rm prova/file 
$ sudo dd if=/dev/zero of=loop1/10M bs=1024k count=10
$ sudo umount loop1/

Ara anem a navegar pel sistema de fitxers amb debugfs

$ sudo debugfs /dev/loop1

Consulteu els inodes i blocs del fitxer 10M:

debugfs: stat 10M
Inode: 12   Type: regular    Mode:  0644   Flags: 0x0
Generation: 3298841830    Version: 0x00000000
User:     0   Group:     0   Size: 10485760
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 20512
Fragment:  Address: 0    Number: 0    Size: 0
ctime: 0x4b0a7d4c -- Mon Nov 23 13:17:16 2009
atime: 0x4b0a7d4c -- Mon Nov 23 13:17:16 2009
mtime: 0x4b0a7d4c -- Mon Nov 23 13:17:16 2009
Size of extra inode fields: 4
BLOCKS:
(0-11):572-583, (IND):584, (12-1035):585-1608, (DIND):1609, (IND):1610, (1036-2059):1611-2634, (IND):2635, (2060-2559):2636-3135
TOTAL: 2564

Undelete a file

undelete inode name

El nom és el nom que li volem donar...

També es pot utilitzar undel.

Es pot obtenir una llista de inodes esborrats amb:

lsdel

o

list_deleted_inodes

Vegem un exemple.

Primer creeu un fitxer, el podeu importar amb write:

debugfs:  write /etc/network/interfaces interfaces
Allocated inode: 13

El podeu consultar amb cat:

debugfs:  cat interfaces
auto lo
iface lo inet loopback

Podem esborrar el fitxer amb rm:

debugfs:  rm interfaces

Si ara consulteu la llista d'inodes esborrats fa poc:

debugfs:  lsdel
   Inode  Owner  Mode    Size      Blocks   Time deleted
    13      0 100644     32      1/     1 Mon Nov 23 13:29:23 2009
 1 deleted inodes found.

El podeu recuperar amb:

debugfs:  undelete <13> interfaces_recuperat

NOTA: Cal indicar l'inode entre menor igual i major igual. Observeu que cal saber l'inode! lsdel no sempre ens proporciona la llista de nodes esborrats (cal que debugfs estigui en execució en el moment d'esborrar el fitxer?). Recordeu que no es recomanable executar debugfs sobre un sistema muntat

Observeu el fitxer recuperat:

debugfs:  cat interfaces_recuperat
auto lo
iface lo inet loopback

write internal-file external-file

Permet accedir a un fitxer sense necessitat de muntar el sistema de fitxers. Importa un fitxer. Vegeu l'exemple anterior.

Manipular fitxers

Podem utilitzar les ordres cd, ln, rm, cp, mv...

IMPORTANT: No utilitzeu mai debugfs a un sistema de fitxers muntat. Pot provocar pèrdua de dades

Altres exemples de com recuperar un fitxer:

Utilitzant dump:

debugfs: dump <14> /mnt/recovered.000

O undelete

debugfs: debugfs: undelete <14> /tmp/recovered.000

O mi:


 debugfs: mi <14>

i poseu

  • Zero Deletion Time
  • Establir el link count a 1

Ara executeu:

$ sudo e2fsck -f /dev/loop1

Consulteu també xfs_db per obtenir una ordre equivalent en sistemes XFS.

Recursos:

Utilitzar debugfs per deixar un sistema brut i recuperar amb fsck

$sudo debugfs -w /dev/loop1
 
 debugfs:  write /boot/grub/menu.lst menu.lst
 Allocated inode: 14
 debugfs:  rm menu.lst
 
 debugfs:  mi <14>
                           Mode    [0100644] 
                        User ID    [0] 
                       Group ID    [0] 
                           Size    [5031] 
                  Creation time    [1258980245] 
              Modification time    [1258980245] 
                    Access time    [1258980245] 
                 Deletion time    [1258980255] 0
                    Link count    [0] 1
              Block count high    [0] 
                   Block count    [16] 
                    File flags    [0x0] 
                    Generation    [0x0] 
                      File acl    [0] 
           High 32bits of size    [0] 
              Fragment address    [0] 
               Direct Block #0    [574] 
               Direct Block #1    [575] 
               Direct Block #2    [0] 
               Direct Block #3    [0] 
               Direct Block #4    [0] 
               Direct Block #5    [0] 
               Direct Block #6    [0] 
               Direct Block #7    [0] 
               Direct Block #8    [0] 
               Direct Block #9    [0] 
              Direct Block #10    [0] 
              Direct Block #11    [0] 
                Indirect Block    [0] 
         Double Indirect Block    [0] 
         Triple Indirect Block    [0] 
 debugfs:  q

Assegureu-vos que no esta muntat:

$ sudo umount loop1

Comprove el disc:

$ sudo fsck -f /dev/loop1
 fsck from util-linux-ng 2.16
 e2fsck 1.41.9 (22-Aug-2009)
 Pas 1: comprovació de nodes-i, blocs i mides
 Pas 2: comprovació de l'estructura del directori
 Pas 3: comprovació de la connectivitat dels directoris
 Pas 4: comprovació dels nombres de referències
 Node-i 14 desacoblat(s)
 Connecta amb /lost+found<s>? sí
 
 el nombre de referències del node-i NULL és 2, hauria de ser 1.Arregla<s>? sí
 
 Pas 5: comprovació del resum de la informació del grup
 Bloc mapa de bits differences:  +(574--575)
 Arregla<s>? sí 
 
 El nombre de blocs lliures no es correcte per al grup núm. 0 (0, recompte=0).
 Arregla<s>? sí
 
 El nombre de blocs lliures no es correcte (0, recompte=0).
 Arregla<s>? sí
 
 Node-i mapa de bits differences:  +14
 Arregla<s>? sí
 
 El nombre de nodes-i lliures no es correcte per al grup núm. 0 (7987, recompte=7986).
 Arregla<s>? sí
 
 El nombre de nodes-i lliures no es correcte (63985, recompte=63984).
 Arregla<s>? sí
  
 
 /dev/loop1: ***** S'HA MODIFICAT EL SISTEMA DE FITXERS *****
 /dev/loop1: 16/64000 fitxers (0.0% no contigus), 8449/255992 blocs

Mostrar la informació del sistema de fitxers. Ordre dumpe2fs

L'ordre dumpe2fs ens permet obtenir informació sobre un sistema de fitxers ext:

$ sudo dumpe2fs /dev/sda1 | more

Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          7f5a86b3-89b8-434c-b2cb-c66b971b247e
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Filesystem flags:         signed_directory_hash 
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              7028736
Block count:              28103701
Reserved block count:     1405185
Free blocks:              7837674
Free inodes:              6577674
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1017
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Filesystem created:       Mon Jul 27 09:30:06 2009
Last mount time:          Sun Nov 15 07:36:13 2009
Last write time:          Mon Nov  2 11:36:21 2009
Mount count:              15
Maximum mount count:      20
Last checked:             Mon Nov  2 09:05:39 2009
Check interval:           15552000 (6 months)
Next check after:         Sat May  1 10:05:39 2010
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
First orphan inode:       4120686
Default directory hash:   half_md4
Directory Hash Seed:      2bcad210-d6a4-4822-bdc5-42619f9fc678
Journal backup:           inode blocks
Mida del registre de canvis:              128M


Grup 0: (blocs 0-32767)
 superbloc Primari a 0, descriptors de grup a 1-7
  Reserved GDT blocks at 8-1024
 Mapa de bits del bloc a 1025 (+1025), mapa de bits del node-i a 1026 (+1026)
  taula de nodes-i a 1027-1538 (+1027)
  0 blocs lliures, 8161 nodes-i lliures, 3 directoris 
  Blocs liures: 
  Nodes-i lliures: 13-16, 36-8192
Grup 1: (blocs 32768-65535)
 superbloc Còpia de seguretat a 32768, descriptors de grup a 32769-32775
  Reserved GDT blocks at 32776-33792
 Mapa de bits del bloc a 33793 (+1025), mapa de bits del node-i a 33794 (+1026)
  taula de nodes-i a 33795-34306 (+1027)
  0 blocs lliures, 8170 nodes-i lliures, 1 directoris 
  Blocs liures: 
  Nodes-i lliures: 8215-16384
Grup 2: (blocs 65536-98303)
 Mapa de bits del bloc a 65536 (+0), mapa de bits del node-i a 65537 (+1)
   taula de nodes-i a 65538-66049 (+2)
  0 blocs lliures, 8168 nodes-i lliures, 2 directoris 
  Blocs liures: 
  Nodes-i lliures: 16409-24576
 ...

Com podeu veure ens mostra tota la informació referent al sistema de fitxers. Anem a veure algunes de les dades més importants i com podem accedir directament a aquestes dades.

Segurament el més importat es pode consultar l'estat del sistema de fitxers. Sense errors hauria de ser clean:

$ sudo dumpe2fs /dev/sda1 | grep state
dumpe2fs 1.41.9 (22-Aug-2009)
Filesystem state:         clean

Després podem obtenir els identificadors del dispositiu amb:

$ sudo dumpe2fs /dev/sda1 | grep UUID
dumpe2fs 1.41.9 (22-Aug-2009)
Filesystem UUID:          7f5a86b3-89b8-434c-b2cb-c66b971b247e

i la etiqueta:

$ sudo dumpe2fs /dev/sda1 | grep name
dumpe2fs 1.41.9 (22-Aug-2009)
Filesystem volume name:   <none>

L'ordre ens permet conèixer una sèrie de dates importants com la data de creació:

$ sudo dumpe2fs /dev/sda1 | grep created
dumpe2fs 1.41.9 (22-Aug-2009)
Filesystem created:       Mon Jul 27 09:30:06 2009

O podem consultar les últimes dates de muntatge, comprovació del disc, etc.:

$ sudo dumpe2fs /dev/sda1 | grep Last
dumpe2fs 1.41.9 (22-Aug-2009)
Last mounted on:          <not available>
Last mount time:          Sun Nov 15 07:36:13 2009
Last write time:          Mon Nov  2 11:36:21 2009
Last checked:             Mon Nov  2 09:05:39 2009

Amb l'ordre tune2fs hem vist com podem modificar cada quan es fa una nova comprovació del disc. Normalment es fa una comprovació completa del sistema de fitxers cada X vegades que es munta la partició o cada X temps des de la última comprovació. Podem veure quina és la data de la següent comprovació amb:

$ sudo dumpe2fs /dev/sda1 | grep Next
dumpe2fs 1.41.9 (22-Aug-2009)
Next check after:         Sat May  1 10:05:39 2010

Podem consultar cada quants muntatges es comprovarà el dispositiu o quan falta per a la següent comprovació:

$ sudo dumpe2fs /dev/sda1 | grep -i "Mount count"
dumpe2fs 1.41.9 (22-Aug-2009)
Mount count:              15
Maximum mount count:      20

NOTA: l'opció -i de grep ignora minúscules i majúscules

Conèixer la mida del bloc d'un sistema de fitxers

En sistemes ext3 sol ser 4K:

$ sudo dumpe2fs /dev/sda1 | grep -i 'Block size'
dumpe2fs 1.41.9 (22-Aug-2009)
Block size:               4096

Ordres

du

Consulteu du.

df

Consulteu df.

fsck

Consulteu fsck.

e2fsck

Consulteu e2fsck.

mke2fs

Consulteu mke2fs.

debugfs

Consulteu debugfs.

dumpe2fs

Consulteu dumpe2fs.

tune2fs

Consulteu tune2fs.

Creació d'un sistema de fitxers reiserfs

El suport per a reiserFS, el proporciona el paquet reiserfsprogs:

$ dpkg -S /sbin/mkfs.reiserfs
reiserfsprogs: /sbin/mkfs.reiserfs

Per instal·lar-lo:

$ sudo apt-get install reiserfsprogs

Creeu una imatge per fer proves

$ dd if=/dev/zero of=~/reiserfs.img bs=1024k count=100

Si intenteu formatar amb reiserfs us dirà que no és un dispositiu de blocs:

$ mkfs.reiserfs /home/sergi/reiserfs.img 
mkfs.reiserfs 3.6.21 (2009 www.namesys.com) 

A pair of credits:
BigStorage  (www.bigstorage.com)  contributes to our general fund  every month,
and has done so for quite a long time.

Hans Reiser was the project initiator,  source of all funding for the first 5.5
years. He is the architect and official maintainer.


/home/sergi/reiserfs.img is not a block special device
Use -f to force over

Proveu amb force:

$ mkfs.reiserfs -f /home/sergi/reiserfs.img 
mkfs.reiserfs 3.6.21 (2009 www.namesys.com) 

A pair of credits:
SuSE (www.suse.com)  pays for continuing work on journaling for version 3, paid
for much of the previous version 3 work, and is paying for Chris and Jeff to do
V3 maintenance. Reiserfs integration in their distro is consistently solid, and
they were key to our becoming widely used. 

Nikita Danilov  wrote  most of the core  balancing code, plugin infrastructure,
and directory code. He steadily worked long hours, and is the reason so much of
the Reiser4 plugin infrastructure is well abstracted in its details.  The carry 
function, and the use of non-recursive balancing, are his idea. 
 

/home/sergi/reiserfs.img is not a block special device
Continue (y/n):y
Guessing about desired format.. Kernel 2.6.31-14-generic is running.
Format 3.6 with standard journal
Count of blocks on the device: 25600
Number of blocks consumed by mkreiserfs formatting process: 8212
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 1c1f6da6-01e1-4ac4-8239-3f607ba47bd7
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
ReiserFS is successfully created on /home/sergi/reiserfs.img. 

I la munteu:

$ sudo mkdir /mnt/reiserfs
$ sudo mount -o loop /home/sergi/reiserfs.img /mnt/reiserfs

xfs tools

Per disposar de suport per al sistema XFS cal instal·lar el paquet xfsprogs:

En versions noves d'Ubuntu (2009) si intenteu utilitzar l'ordre mkfs.xfs:

$ mkfs.xfs
El programa «mkfs.xfs» no està instal·lat actualment.  Podeu instal·lar-lo si escriviu:
sudo apt-get install xfsprogs
mkfs.xfs: command not found

Per tant per disposar de suport per a XFS cal executar:

$ sudo apt-get install xfsprogs

Les eines conegudes com xfs-tools, són les proporcionades (a Debian) pel paquet xfsprogs:

$ dpkg -L xfsprogs  | grep bin
/usr/sbin
/usr/sbin/xfs_copy
/usr/sbin/xfs_db
/usr/sbin/xfs_admin
/usr/sbin/xfs_check
/usr/sbin/xfs_ncheck
/usr/sbin/xfs_metadump
/usr/sbin/xfs_estimate
/usr/sbin/xfs_fsr
/usr/sbin/xfs_growfs
/usr/sbin/xfs_info
/usr/sbin/xfs_io
/usr/sbin/xfs_bmap
/usr/sbin/xfs_freeze
/usr/sbin/xfs_mkfile
/usr/sbin/xfs_logprint
/usr/sbin/xfs_quota
/usr/sbin/xfs_mdrestore
/usr/sbin/xfs_rtcp
/sbin
/sbin/fsck.xfs
/sbin/mkfs.xfs
/sbin/xfs_repair


Creació d'un sistema de fitxers XFS

Consulteu també xfs.

Podeu utilitzar el frontend mkfs per tal de crear un sistema de fitxers XFS:

Creeu un fitxer imatge per fer les proves:

$ cd
$ dd if=/dev/zero of=xfs.img bs=1024k count=100
$ sudo losetup /dev/loop1 /home/sergi/xfs.img

I ara creeu el sistema de fitxers XFS amb:

$ mkfs.xfs -f /dev/loop1
meta-data=xfs.img                isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=1200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0

NOTA: Normalment, si no estem proves, executaríem l'ordre en una partició, p. ex: mkfs.xfs /dev/sda1

Si el dispositiu o fitxer d'imatge ja té un sistema xfs us donarà el següent error:

$ mkfs.xfs xfs.img 
mkfs.xfs: xfs.img appears to contain an existing filesystem (xfs).
mkfs.xfs: Use the -f option to force overwrite.

Podeu forçar l'execució amb -f:

$ mkfs.xfs -f xfs.img 
meta-data=xfs.img                isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=1200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0

Ara podeu muntar la unitat amb:

$ sudo mkdir /mnt/xfs/
$ sudo mount /dev/loop1 /mnt/xfs/
$ ls -la /mnt/xfs
total 4
drwxr-xr-x 2 root root    6 2009-11-25 20:41 .
drwxr-xr-x 3 root root 4096 2009-11-25 20:40 ..

xfs_metadump

Copia les metadades d'un sistema de fitxers XFS a un fitxer. La sintaxi és:

$ xfs_metadump [ -efgow ] [ -l logdev ] source target

per exemple:



xfs_info

L'ordre xfs_info és equivalent a l'ordre xfs_growfs amb l'opció -n. Per aquesta raó, si consulteu el manual veureu:

$ man xfs_info

Veureu l'ajuda de l'ordre xfs_growfs amb el comentari que xfs_info és xfs_growfs -n. El que fa és mostrar la informació del sistema de fitxers.

La sintaxi és:

$ xfs_info /punt/de/muntatge

Per exemple:

$ xfs_info /mnt/xfs
meta-data=/dev/loop1             isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=1200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0

Si us fixeu és el mateix que:

$ xfs_growfs -n /mnt/xfs
meta-data=/dev/loop1             isize=256    agcount=4, agsize=6400 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=25600, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=1200, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=0
realtime =none                   extsz=4096   blocks=0, rtextents=0

I també és el mateix que el que surt després de l'ordre mkfs.xfs



with the -n option (see discussion below).
 -n     Specifies that no change to the filesystem is to be made.  The filesystem geometry is printed, and argument checking is performed, but no growth occurs.

blockdev

També es tracta d'una utilitat proporcionada pel paquet util-linux:

$ whereis blockdev
blockdev: /sbin/blockdev /usr/share/man/man8/blockdev.8.gz
$ dpkg -S /sbin/blockdev
util-linux: /sbin/blockdev

Es pot utilitzar per tal de mostrar la informació d'un dispositiu:

$ sudo blockdev --report /dev/sda
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096          0    120034123776   /dev/sda

També es pot executar amb una partició en comptes d'un disc dur sencer:

$ sudo blockdev --report /dev/sda1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw   256   512  4096         63    115112761344   /dev/sda1

On:

  • RO: Estableix el mode
  • RA: Mostra el readhead
  • SSIZE: Sector size o mida d'un sector en bytes.
  • BSIZE: Mida d'un bloc
  • 'StartSec: Primer sector
  • Size: La mida en bytes (octets).
$ sudo fdisk -l /dev/sda 

Disc /dev/sda: 120.0 GB, 120034123776 octets
255 heads, 63 sectors/track, 14593 cylinders
Units = cilindres of 16065 * 512 = 8225280 bytes
Disk identifier: 0xa0000000

Dispositiu Arrenc.   Inici         Final    Blocs    Id  Sistema
/dev/sda1   *           1       13995   112414806   83  Linux
/dev/sda2           13996       14593     4803435    5  Estesa
/dev/sda5           13996       14593     4803403+  82  Intercanvi Linux / Solaris

També permet establir o consultar els paràmetres que us mostra a l'informe (opció --report).

Vegeu també