Consulteu l'article Permisos_Unix
En informàtica i concretament en sistemes Unix-Like un inode és una estructura de dades que emmagatzema informació bàsica (també coneguda com a metadades) d'un fitxer o qualsevol altre objecte d'un sistema de fitxers.
L'inode és un component essencial del sistema de fitxers lògic. Cal tenir clara la diferència entre sistema de fitxers lògic, que és el nivell d'abstracció que ens ofereix el sistema operatiu i que ens permet treballar amb els sistemes de fitxers amb independència de les seves característiques físiques i de maquinari, del sistema de fitxers físic.
El sistema de fitxers lògic és un component més del que es coneix com a màquina virtual del sistema operatiu.
Recursos:
Quan es crea un sistema de fitxers es generen també unes estructures de dades per mantenir la informació dels fitxers del sistema. A cada fitxer del sistema li correspon un inode i cada inode s'identifica per un número d'inode (conegut com a i-number o ino). El número d'inode d'un fitxer es pot conèixer amb la comanda:
$ ls -i 6242503 a 6242498 d 6242502 linkdura
La informació que conté un inode esta determinada per l'estàndard POSIX i és:
IMPORTANT: L'inode no conté el nom del fitxer. El nom del fitxer el conté el directori al qual es troba el fitxer
Podeu consultar aquesta informació amb les comandes ls i stat.
$ ls -l
o
$ stat fitxer
Hi ha un nom limitat d'inodes que indica el nombre màxim de fitxer (aquest nombre es diferent en cada sistema de fitxers). Típicament l'espai d'inodes és un 1% del disc dur. Els inodes es guarden en una estructura de dades taula que permet accedir directament a un inode a partir del seu número de inode. A partir del número d'inode el sistema operatiu pot accedir a la metainformació de l'inode i al contingut de l'inode (a través d'uns punters que emmagatzema l'inode)
No tots els sistemes de fitxers proporcionen inodes (per exemple ReiserFS no ho fa) però proporcionen informació equivalent per a la comanda stat (que utilitza la crida de sistema stat)
Implicacions importants:
La estructura de dades en C (struct) de Linux s'anomena struct inode.
Ext2 és un sistema de fitxers amb una cache en memòria i s'escriu al disc de forma asíncrona. El problema que té és que una apagada no controlada (reinici del sistema incorrecta, caiguda de tensió, etc.) pot provocar la pèrdua d'informació. El kernel marca el sistema de fitxers com dirty si hi ha dades pendents de gravar o com a clean si no hi ha dades pendents.
Per aquesta raó s'executa un fsck cada cop que s'inicia la màquina. Hi ha dos casos de dirty:
En el primer cas simplement es perden les dades. En el segon cas es pot arreglar amb fsck
Un sistema de fitxers ext2 (i per extensió ext3) té 3 zones:
Al crear un fitxer (per exemple amb la comanda touch) el sistema escull un inode lliure i es guarda totes les metadades del fitxer menys el seu contingut i el seu nom a l'inode. L'inode conté una llista de blocs que no tenen per que ser consecutius on es guarden les dades del fitxer.
Per accedir a la informació d'un fitxer concret, per exemple:
es segueixen les següents passes. S'accedeix al directori arrel que té un número fix d'inode (2). Com que és un directori conté una llista dels inodes dels fitxers (recordeu que les carpetes i de fet tot en Linux és un fitxer) que conté. S'obté l'inode de /home i així successivament fins a obtenir el inode del fitxer prova.
A diferència de FAT no hi ha límit en la mida del fitxer per limitacions en la taula FAT. Quan s'acaben els blocs d'un inode, l'últim bloc conté un punter a un altre bloc amb els continguts o altres punter a blocs de dades (vegeu la gràfica de la dreta).
Al crear un nou sistema de fitxers ext2, el disc s'organitza segons la imatge de la dreta en grups de blocs. El kernel del SO intenta que tots els fitxers tinguin els seus blocs a un mateix grup de blocs.
Cada bloc de grup conté:
Cop podeu veure el superbloc té diferents còpies en tot el sistema de fitxers. El kernel només utilitza el superbloc del primer grup de blocs però la resta es poden utilitzar per restaurar un sistema inconsistent. Vegeu l'apartat Còpia de seguretat i restauració de sistemes de fitxers per conèixer els detalls d'aquesta operació.
Com podem saber quants grups de blocs hi ha i com s'organitza el disc? Això depèn de la mida del sistema de fitxers i d'altres paràmetres. Els podem consultar amb la comanda tune2fs i fsck
La mida típica del bloc és de 4Kbytes (és el valor màxim en CPUs de 32 bits).
Recursos:
Exemple de bloc de 8KB i disc dur de 16GB
El superbloc és una zona de dades crítica i per aquesta raó sent mantenen còpies de seguretat (superblock backups) en diferents posicions del sistema de fitxers. En les primeres versions de ext2, es guardava una còpia del superbloc al primer bloc de cada grup de blocs. Actualment, tenint en compte la mida dels discs durs, es considera malgastar massa espai mantenir una còpia a cada grup de blocs i només es mantenen còpies als grups de blocs 0, 1 i als que són potències de 3, 5 i 7 (opció sparse blocks) [1]
Fent uns quants càlculs:
Nº de blocs= 17179869184/8192= 2097152
Cada grup de blocs pot tenir com a màxim:
8×b blocs on b és la mida del bloc en bytes --> 64KB.
Per tant la mida en blocs del grup és 64*1024=65536.
El nombre total de grups de blocs és: s/(8×b) on s és la mida de la partició en blocs (2097152) --> 2097152/(8*8*1024)=32
Les copies es guarden per tant als blocs:
Potències de 3: 3=3 3*3=9 3*3*3=27 3*3*3*3=81 3*3*3*3*3=243
Potències de 5: 5=5 5*5=25 5*5*5=125 5*5*5*5=625 ...
Potències de 7: 7=7 7*7=49 7*7*7=343 ...
La sèrie és : 1, 3, 5, 7, 9, 25, 27, 49, 81... però només tenim 32 grups de blocs i per tant hem d'aturar-nos a 27.
Per tant els blocs on hi ha còpia del superbloc són:
Exemple de bloc de 4KB i disc dur de 16GB
Nº de blocs= 17179869184/4096= 4194304
Cada grup de blocs pot tenir com a màxim:
8×b blocs on b és la mida del bloc en bytes --> 32KB.
Per tant la mida en blocs del grup és 32*1024=32768.
El nombre total de grups de blocs és: s/(8×b) on s és la mida de la partició en blocs (2097152) --> 2097152/(4*8*1024)=128
$ sudo mkfs.ext3 /dev/sdb1 mke2fs 1.40.2 (12-Jul-2007) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 2097152 inodes, 4192957 blocks 209647 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=0 '128 block groups 32768 blocks per group, 32768 fragments per group 16384 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000
Podeu trobar un full de càlcul amb els exemples de càlcul de nº deblocs, nº de superblocs i còpies de superblocs a:
http://acacha.dyndns.org/~sergi/SistemaFitxersExt2.ods
És el sistema més utilitzat actualment en Linux (tot i que no és el més ràpid). En gran part perquè es possible passar un sistema ext2 a ext3 sense perdre les dades i perquè no consumeix tanta CPU com altres sistemes.
Ext3 és equivalent a un sistema ext2 amb les següents millores:
Tant ext2 com ext3 utilitzant les eines de e2fsprogs
Recursos:
El journaling és un mecanisme pel qual un sistema informàtic pot implementar transaccions. També es conegut com a registre per diari. La base del journaling es mantenir un registre (log) o s'emmagatzema la informació necessària per a restablir les dades afectades per una transacció. El journal es pot utilitzar per restablir el sistema es cas d'un error del sistema
El seu ús més comú és en base de dades però actualment també s'utilitza en els sistemes de fitxers per tal d'evitar la corrupció de les estructures de dades dels sistemes d'arxius.
L'objectiu del journal es evitar tenir que executar un fsck cada cop que la màquina es penja o no s'apaga correctament.
Cal indicar però que el journaling no evita el 100% dels casos de corrupció de dades i es necessari executar de tant en tant un fsck.
Recursos:
El procés de formatar un dispositiu d'emmagatzemament és el que prepara el dispositiu per tal d'emmagatzemar dades.
Alguns dispositius d'emmagatzemament, com els discs durs es poden particionar. Particionar és la operació de dividir el dispositiu en seccions (parts) on cada part és independent de la resta (p. ex. cadascuna pot tenir el seu propi sistema de fitxers).
S'han d'executar una sèrie de passos per dur a terme el formatat d'un dispositiu d'emmagatzemament. Podeu consultar un exemple pas a pas complet a l'article:
Hi han dos tipus de formatats a nivell físic:
El formatat a nivell lògic crea el sistema de fitxers amb el que treballarà el sistema operatiu. Hi han diferents sistemes de fitxers i diferents comandes per crear aquests sistemes de fitxers.
mkfs és un front-end per a crear diferents tipus de sistemes de fitxers.
Consulteu mount
TODO
TODO
Des de la versió Edgy de Ubuntu que s'utilitzen uuid. Per obtenir la UID d'un dispositiu cal executar:
$ vol_id -u /dev/sda4
La comanda vol_id la proporciona udev, tal i com podeu veure si executeu:
$ which vol_id /sbin/vol_id $ dpkg -S /sbin/vol_id udev: /sbin/vol_id
Més informació a:
TODO
mtab té les unitats montades actualment.
$ cat /etc/mtab proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /lib/modules/2.6.22-14-generic/volatile tmpfs rw,mode=0755 0 0 tmpfs /lib/modules/2.6.22-14-generic/volatile tmpfs rw,mode=0755 0 0 varrun /var/run tmpfs rw,noexec,nosuid,nodev,mode=0755 0 0 varlock /var/lock tmpfs rw,noexec,nosuid,nodev,mode=1777 0 0 udev /dev tmpfs rw,mode=0755 0 0 devshm /dev/shm tmpfs rw 0 0 devpts /dev/pts devpts rw,gid=5,mode=620 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev 0 0
Consulteu /etc/fstab
Tot i estar a nivell d'execució 1 ens podem trobar que ens diqui que la unitat esta "busy" quan intentem desmuntarla. Es pot utilitzar la comanda fuser per veure quin processos utilitzen certs fitxers:
fuser -avm /usr
Consulteu fdisk
Consulteu l'apartat:
Discs_durs#Master_Boot_Record
Consulteu cfdisk
Consulteu e2fsprogs
Consulteu e2fsck.
Consulteu mke2fs
Consulteu resize2fs.
Permet modificar alguns paràmetres del sistema de fitxers. Exemples:
Desactivar les comprovacions de disk
Atenció: No és gens recomanable!
$ sudo tune2fs -c0 /dev/sda1
Modificar cada quants muntatges del sistema de fitxers s'executarà un fsck:
Per exemple si ho volem cada 50 cops
$ sudo tune2fs -c 50
Forçar un fsck a la pròxim boot del sistema:
Podem utilitzar -C per establir que el número de cops que s'ha muntat el sistema és superior a el nombre màxim de muntatges sense fsck:
$ sudo tune2fs -C 51
Establir un fsck per temps:
$ sudo tune2fs -i d|m|w
Amb l'opció -T es pot indicar la data de l'últim test i forçar així un test al tornar a iniciar la màquina.
Establir el nom del volum:
$ sudo tune2fs -L NOMVOLUM
Consulteu també e2label.
Establir el UUID:
$ sudo tune2fs -U UUID
Consultar els paràmetres:
$ sudo tune2fs -l /dev/sda1 tune2fs 1.40.2 (12-Jul-2007) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: 722bdfa0-5e3e-4e2d-b1cd-c90216753f6c Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal resize_inode dir_index filetype 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: 180864 Block count: 361454 Reserved block count: 18072 Free blocks: 347030 Free inodes: 180853 First block: 0 Block size: 4096 Fragment size: 4096 Reserved GDT blocks: 88 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 15072 Inode blocks per group: 471 Filesystem created: Sat May 10 12:28:55 2008 Last mount time: n/a Last write time: Sat May 10 12:29:01 2008 Mount count: 0 Maximum mount count: 34 Last checked: Sat May 10 12:28:55 2008 Check interval: 15552000 (6 months) Next check after: Thu Nov 6 12:28:55 2008 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Default directory hash: tea Directory Hash Seed: 1ce5cd68-fc9f-4579-bf23-1a9817db3696 Journal backup: inode blocks
Canviar el tant per cent de blocs reservats a root:
En sistemes amb discs durs mol grans es pot reduir el valor per defecte reservat (5%) o fins i tot en sistemes de fitxers amb només fitxers d'usuari ens pot interessar un 0%
$ sudo tune2fs -m 2 /dev/loop1
Recursos:
Permet fer un volcatge (una copia) del sistema de fitxers:
$ sudo dumpe2fs /dev/sda1 > sda1dump
Val la pena guardar aquest fitxer en un altre ordinador.
Consulteu debugfs
http://en.wikipedia.org/wiki/Fsck
Construeix un sistema de fitxers Linux. mkfs és un front-end per a crear diferents tipus de sistemes de fitxers. Si executeu:
$ ls -la /sbin/mkfs* -rwxr-xr-x 1 root root 4880 2007-10-03 04:48 /sbin/mkfs -rwxr-xr-x 1 root root 8412 2007-10-03 04:48 /sbin/mkfs.bfs -rwxr-xr-x 1 root root 15216 2007-10-03 04:48 /sbin/mkfs.cramfs -rwxr-xr-x 3 root root 43876 2007-09-06 18:32 /sbin/mkfs.ext2 -rwxr-xr-x 3 root root 43876 2007-09-06 18:32 /sbin/mkfs.ext3 -rwxr-xr-x 2 root root 55140 2007-03-05 04:24 /sbin/mkfs.jfs -rwxr-xr-x 1 root root 14720 2007-10-03 04:48 /sbin/mkfs.minix lrwxrwxrwx 1 root root 7 2007-10-15 23:20 /sbin/mkfs.msdos -> mkdosfs lrwxrwxrwx 1 root root 16 2007-10-15 23:33 /sbin/mkfs.ntfs -> /usr/sbin/mkntfs -rwxr-xr-x 2 root root 146460 2007-07-26 10:57 /sbin/mkfs.reiserfs lrwxrwxrwx 1 root root 7 2007-10-15 23:20 /sbin/mkfs.vfat -> mkdosfs -rwxr-xr-x 1 root root 340508 2007-06-19 16:55 /sbin/mkfs.xfs
Veureu tots els sistemes de fitxers que es capaç de crear mkfs.
Consulteu mke2fs.
Consulteu mks.vfat
Consulteu mkswap.
Permet crear sistemes de fitxers minix.
TODO
Permet crear sistemes de fitxers reiserfs
TODO
Força la sincronització entre cache i disc (flush).
$ sync
Activa la partició swap:
$ sudo swapon /dev/sdb6
Per veure si la swap esta activada i quin ús s'està fent:
$ swapon -s
Com podem saber si tenim la swap funcionant:
$ free total used free shared buffers cached Mem: 514964 497800 17164 0 4544 53428 -/+ buffers/cache: 439828 75136 Swap: 0 0 0
o
$ cat /proc/swaps
Si no esta funcionant l'activem amb swapon
La comanda mkswap crea un sistema de fitxers swap.
$ sudo mkswap /dev/hda5
Formata una partició per a swap.
$ sudo e2label /dev/hda3 /work
Recursos:
Consulteu dd
Cal mirar els fitxer /etc/fstab. Si s'utilitza UUID potser aquest s'ha modificat per haver tornar a crear el sistema de fitxers swap.
Al crear un sistema de fitxers per a una partició executant:
$ sudo mkfs.ext3 /dev/sda1 mke2fs 1.40.2 (12-Jul-2007) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 180864 inodes, 361454 blocks 18072 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=373293056 12 block groups 32768 blocks per group, 32768 fragments per group 15072 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
El superbloc és el bloc que emmagatzema quina és l'estructura del sistema de fitxers. El sistema només utilitza el superbloc del primer grups de blocs (group block 0) però es poden utilitzar la resta de còpies per restaurar un sistema de fitxers inconsistent.
Per recuperar un sistema inconsistent s'utilitza fsck (e2fsck). Per defecte s'utilitza el bloc 0 però es poden utilitzar les còpies amb:
$ sudo fsck -b 32768 /dev/sda1
Per poder fer això cal saber on estan les còpies i per això val la pena apuntar-les. De totes maneres es pot seguir el procediment de
http://edseek.com/archives/2004/02/25/ext3-filesystem-bad-superblock-recovery/
Per saber on estan aquestes còpies del superbloc. També s'explica quin és el procediment per intentar arreglar el sistema de fitxers. També es poden consultar els superblocs amb:
NOTA: Molt important l'opció -n!!! sinó es posa es crea un nou sistema de fitxers en la partició, esborrant l'existent.
$ sudo mke2fs -n /dev/sda1 mke2fs 1.40.2 (12-Jul-2007) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 180864 inodes, 361454 blocks 18072 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=373293056 12 block groups 32768 blocks per group, 32768 fragments per group 15072 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912
També podem utilitzar:
$ dumpe2fs /dev/hda3 | grep -i superblock
Si es té prou espai es pot aconseguir una còpia d'una partició bit a bit amb la comanda dd.
$ dd if=/dev/sda5 of=/dev/hda7
A ext2 no hi ha una eina de defragmentació. Això no vol dir que no hi hagi fragmentació, però si que és molt menor que altres sistemes com FAT o NTFS. Això es així per què el sistema de fitxers ext2 redueix la fragmentació perquè el kernel intenta que els blocs de dades d'un fitxer es mantinguin a un mateix grups de blocs (a prop en posició física de disc)
Instal·lació:
$ sudo apt-get install recover
No és una eina que funcioni gaire bé
$ sudo grep -a -B5 -A100 "Dear Senator Jones" /dev/sda4 > recover.txt
Instal·lació:
$ sudo apt-get install testdisk
Comandes:
$ dpkg -L testdisk | grep bin /usr/sbin /usr/sbin/testdisk /usr/sbin/photorec
L'eina de clonació de màquines per xarxa, fog, disposa de tasques basades en testdisk.
TestDisk fa un test de les particions i dels sectors de boot del disc. Permet treballar amb múltiples sistemes de fitxers i és una eina útil per per a recuperar discs.
Permet recuperar fotografies d'un disk dur on s'ha espatllat el sistema de fitxers.
$ sudo apt-get install testdisk
$ sudo photorec /path/A/dispositiu_particio
Per exemple:
$ sudo photorec /dev/sdb1
I s'inicia un assistent. Podeu consultar un exemple a:
http://www.cgsecurity.org/wiki/PhotoRec_Step_By_Step
Recursos