Usuari:Sergi/Temari/Tema 19 Sistemas operativos: Gestión de archivos y dispositivos.

De Acacha

Dreceres ràpides: navegació, cerca

Contingut

Fitxers

Altres temes de les opos:

Propietats dels fitxers

Tipus de fitxers

Fitxers de text

Fitxers binaris

Fitxers especials

Enllaços (links)

Fitxers de dispositius

Sockets

Directori vs fitxers

Sistemes operatius

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.

Interfície dels usuaris amb el sistema de fitxers

Els usuaris utilitzen les aplicacions del sistema operatiu per treballar amb el sistema de fitxers. En sistemes Unix (també a Windows) tenen com a aplicació principal per interoperar amb el sistema operatiu la Shell.

El sistema operatiu ofereix una sèrie de comandes per treballar amb el sistema de fitxers virtual. Podeu consultar les comandes més importants a:

També es poden utilitzar aplicacions gràfiques (GUI) pròpies del sistema operatiu (Nautilus de Gnome, Konqueror a KDE, Explorador de fitxers a Windows) o externes com Midnight Commander o altres. En tot cas, aquestes aplicacions sempre acaben utilitzant o les comandes de shell o les crides del sistema operatiu.

Interfície dels programadors amb el sistema de fitxers

Les aplicacions i els programadors poden interactuar amb el sistema mitjançant les crides de sistema. Les crides de sistema POSIX per a fitxers les podeu consultar a:

Sistema de fitxers

Consulteu la web:


Implementació física de l'espai de fitxers

Recursos:

Formatat físic del dispositiu d'emmagatzemament

Consulteu:

Formatat lògic del sistema de de fitxers

Consulteu:

L'espai de noms. Traducció

En un sistema es gestionen multitud d'objectes (fitxers, carpetes, dispositius, processos ,etc.) i és responsabilitat del sistema operatiu oferir un espai de noms que permeti localitzar i manipular els fitxers.

Espai de noms DOS/Windows

  • Cada dispositiu teu el seu propi espai de noms. Exemples:
    • A: Disquet
    • C: 1a partició del disc dur
    • D: CD/DVD

etc...

Espais de noms Unix

És un sistema jeràrquic amb graf dirigit (per l'existència d'enllaços). L'espai de noms és uniforme, hi ha una sola arrel per a tot el sistema i cada dispositiu (discs durs, particions, dispositius extraibles com USB oCD/DVD, carpetes remotes de xarxa, etc) té un punt d'entrada en el sistema de fitxers (anomenat punt de muntatge). El punt de muntatge es lliure.

Espai lineal

Actualment no s'utilitza ja que es completament inadequat (per exemple no permet que cada usuari tingui el seu espai a disc).

Espai de noms jeràrquic en arbre

Relacions entre nodes:

  • ancestre i descendents:
  • fills i pares:
  • germans (sibblings):

Per navegar pel sistema de fitxers tots els sistemes operatius ofereixen un sèrie de comandes. La més habituals són:

  • cd: cd és Change Directory. Ens permet canviar el directori de treball
  • pwd/chdir: Ens mostra el directori de treball actual

Tanmateix tots els sistemes operatius actuals ofereixen eines GUI per a navegar per el sistema de fitxers (Windows porta incorporat l'explorador de fitxers i en Linux cada Entorn té el seu sistema (Gnome té Nautilus, KDE té konqueror, etc.))

La majoria de sistemes de fitxers tenen a cada carpeta dos fitxers especials:

  • ..: És un enllaç a la carpeta pare de la carpeta actual (carpeta de treball)
  • .: És un enllaç a la carpeta actual (carpeta de treball)

Alguns exemples d'operacions habituals per a navegar pel sistema de fitxers són:

$ cd //En Unix ens porta directament a la HOME
$ cd .. // En situem al directori pare
$ cd / //Ens situem a l'arrel del sistema
$ cd /home/usuari //Ens situem a la HOME de l'usuari
$ cd . //No ens movem
$ cd ./carpetafilla1  

o

$ cd carpetafilla1 //Baixem un nivell en la jeràrquia i ens situem a la carpeta filla carpetafilla1

Espai de noms jeràrquic en graf dirigit (enllaços)

Si el sistema de fitxers permet la creació d'enllaços o accessos directes aleshores l'estructura de dades resultant és un graf dirigit. Amb Unix es poden crear enllaços amb la comanda ln (link):

$ ln -s /home/sergi /home/sergitur

En Windows (i també en Linux) també tenim la opció de crear accessos directes.

Hard links

Hi ha una explicació interesatn de que és un hardlink a http://www.mikerubel.org/computers/rsync_snapshots/#Incremental.

El següent exemple ens mostra com un mateix fitxer pot tenir més d'un link i com fins que no s'esborren tots els links no s'elimina definitivament el fitxer:

$ touch a
$ ln a b
$ stat a
File: `a'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fe05h/65029d    Inode: 738641      Links: 2
Access: (0644/-rw-r--r--)  Uid: ( 1001/sergi.tur)   Gid: ( 1001/   sergi)
Access: 2006-03-07 16:26:55.440416667 +0100
Modify: 2006-03-07 16:26:55.440416667 +0100
Change: 2006-03-07 16:26:57.754289704 +0100

$ ln b c
$ stat a
  File: `a'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fe05h/65029d    Inode: 738641      Links: 3
Access: (0644/-rw-r--r--)  Uid: ( 1001/sergi.tur)   Gid: ( 1001/   sergi)
Access: 2006-03-07 16:26:55.440416667 +0100
Modify: 2006-03-07 16:26:55.440416667 +0100
Change: 2006-03-07 16:27:04.388925657 +0100

$ rm c
$ stat a
  File: `a'
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: fe05h/65029d    Inode: 738641      Links: 2
Access: (0644/-rw-r--r--)  Uid: ( 1001/sergi.tur)   Gid: ( 1001/   sergi)
Access: 2006-03-07 16:26:55.440416667 +0100
Modify: 2006-03-07 16:26:55.440416667 +0100
Change: 2006-03-07 16:27:10.396596012 +0100


Sistemes de fitxers ext2 i ext3. Unix/Linux

Característiques:

  • Accepta fitxers més grans de 4Gb (16GiB – 2TiB)
  • Ext3 proporciona un sistema de journalling
  • Permet tot tipus de caràcters als noms de fitxer.
  • Protecció de fitxers amb sistema de fitxers Unix (Unix permissions) i ACLs.
  • No és un sistema amb xifratge

Estructures de dades:

  • Continguts del directori_ Table, h-Tree with dir_index enabled
  • File Allocation: mapa de bits (espai lliure), taula (metadades)
  • Bad blocks: Table

Sistema de fitxers FAT

Característiques:

  • Diferents versions (FAT 8, FAT 16, FAT 32...)
  • Fins a FAT32 4Gb (2 elevat a 32 bits) és la mida màxima d'un fitxer
  • No incorpora cap sistema de protecció dels fitxers (ni ACLs ni permisos Unix). Vegeu umsdos.

Estructures de dades:

  • Continguts del directori Taula de X bits
  • File Allocation: Llista enllaçada
  • Bad blocks: senyalant un cluster

Sistema de fitxers NTFS

NTFS (New Technology File System).

Característiques:

  • Incorpora un sistema de permisos per ACL (no suporta permisos Unix)
  • No hi ha límit mida màxima d'un fitxer

Estructures de dades:

  • Continguts del directori: arbre B+
  • File Allocation: Bitmap/Extents
  • Bad blocks: Bitmap/Extents

Altres Sistemes de fitxers

Jounalling File System (jfs)

Sistema de fitxers GNU GPL creat per IBM amb suport de Journalling

xfs

També va ser (juntament amb JFS) un dels sistemes més àntics en proporcionar Journalling i va ser creat per Silicon Graphics el 1993 i més tard va ser portat a Linux.

ReiserFS

Característiques:

  • Va ser un dels primers sistemes amb Journalling
  • És aproximadament un ordre de magnitud més ràpid que ext3 amb fitxers petits (ideal per a caches HTTP, correu electrònic, etc.)
  • Permet el canvi de mida de en calent
  • Té un sistema anomenat Tail packing per tal de reduir la fragmentació interna.
  • Utilitza més CPU que ext3

LVM (Logical Volume Manager)

No és realment un sistema de fitxers sinó que és una capa d'abstracció per sobre del sistema físic que aporta una sèrie de funcionalitats interessants per als sistemes de fitxers:

  • Permet fer créixer l'espai de disc en calent afegint més discos (per exemple afegint les 80G d'un nou disc dur a una partició existent)
  • Permet fer agrupacions lògiques de volums físics (2 disc durs treballant com si fossin 1)
  • Crear snapshots (de lectura i de lectura/escriptura). Els snapshots són "fotos" de les particions lògiques en un instant concret
  • Permet el mirroring de forma similar a RAID.

RAID (Redundant Arrays of Inexpensive Disks)

Tampoc és en si un sistema de fitxers però és una tecnologia que utilitza dos o més disc durs per tal d'augmentar el rendiment i/o la disponibilitat del sistema. Hi ha diferents sistemes de RAID amb diferents objectius.

  • RAID 0 (Data Stripping): Divideix la informació en dos discs diferents (els dos discs semblen un sola unitat lògica). No aporta tolerància a errors
  • RAID 1 (Data mirroring): Dos disc durs tenen la mateixa informació i treballen com si fossin 1. Aporta tolerància a errors.

Organització del sistema de fitxers

Sistemes Unix/Linux. L'estàndard File Hierarchy System (FHS)

Filesystem Hierarchy Standard (Estàndard de Jerarquia de Sistemes de Fitxers) o FHS defineix els directoris principals i els seus continguts en sistemes Linux o altres sistemes de la família Linux. Dissenyat originàriament al 1994 per estandarditzar els sistemes d'arxius entre distribucions GNU/Linux. Està basat en l'organització tradicional del sistemes UNIX.

Tots els arxius o directoris es troben sota el directori arrel /, encara que es trobin en dispositius físics i/o particions diferents.

Aquesta taula està extreta de la wikipèdia i és un bon resum d'aquest esquema:

Directory Description
/ Primary hierarchy root and root directory of the entire file system hierarchy.
/bin/ Essential command binaries that need to be available in single user mode; for all users (e.g., cat, ls, cp).
/boot/ Boot loader files (e.g., kernels, initrd). Often a separate partition.
/dev/ Essential devices (e.g., /dev/null).
/etc/ Host-specific system-wide configuration files (the name comes from et cetera).
/etc/opt/
Configuration files for /opt/.
/etc/X11/
Configuration files for the X Window System, version 11.
/etc/sgml/
Configuration files for SGML.
/etc/xml/
Configuration files for XML.
/home/ Users' home directories - containing saved files, personal settings etc. Often a separate partition.
/lib/ Libraries essential for the binaries in /bin/ and /sbin/.
/media/ Mount points for removable media such as CD-ROMs (appeared in FHS-2.3).
/mnt/ Temporarily mounted filesystems.
/opt/ Optional application software packages.
/proc/ Virtual filesystem documenting kernel and process status as text files (e.g., uptime, network).
/root/ Home directory for the root user.
/sbin/ Essential system binaries (e.g., init, route, ifup).
/srv/ Site-specific data which is served by the system.
/tmp/ Temporary files (see also /var/tmp).
/usr/ Secondary hierarchy for user data; contains the majority of (multi-)user utilities and applications.<ref>Should be shareable and read-only, cf. http://www.pathname.com/fhs/pub/fhs-2.3.html.</ref>
/usr/bin/
Non-essential command binaries (not needed in single user mode); for all users.
/usr/include/
Standard include files.
/usr/lib/
Libraries for the binaries in /usr/bin/ and /usr/sbin/.
/usr/sbin/
Non-essential system binaries (e.g. daemons for various network-services).
/usr/share/
Architecture-independent (shared) data.
/usr/src/
Source code (e.g. the kernel source code with its header files).
/usr/X11R6/
X Window System, Version 11, Release 6.
/usr/local/
Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, eg. bin/, lib/, share/.<ref>Historically and strictly according to the standard, /usr/local/ is for data that must be stored on the local host (as opposed to /usr/, which may be mounted across a network. In real world use however, /usr/ is rarely remotely mounted, and /usr/local/ is more often used for installing software/data that is not part of the standard operating system distribution (in such case, /usr/ would only contain software/data that is part of the standard operating system distribution). It is possible that the FHS standard may in the future be changed to reflect this de-facto convention).</ref>
/var/ Variable files, such as logs, spool files, and temporary e-mail files.
/var/lock/
Lock files. Files keeping track of resources currently in use.
/var/log/
Log files. Various logs.
/var/mail/
Users' mailboxes.
/var/run/
Information about the running system since last boot (e.g. currently logged-in users and running daemons).
/var/spool/
Spool for tasks waiting to be processed (e.g. print queues and unread mail).
/var/spool/mail/
Deprecated location for users' mailboxes.
/var/tmp/
Temporary files to be preserved between reboots.

Sistema de fitxers virtual

Són una capa d'abstracció superior que permet treballar amb independència del tipus de sistema de fitxers, si esta en xarxa o no, etc. S'utilitza en sistems virtualitzadors com VirtualBox o vmware.

Seguretat, fiabilitat i protecció

Fiabilitat

Parlar dels test scandidk, fsck, etc.

Seguretat i protecció

Vegeu: https://acacha.dyndns.org/mediawiki/index.php/Permisos_en_Unix#Permisos_en_Unix

Matriu d'accessos

A les files es llisten els usuaris i grups i la columna els objectes (fitxers). Els encrueaments indiquen els permisos (lectura,escriptura, execució)

En Unix es pot establir un matriu d'accessos a partir del conjunt d'usuaris del sistema i del conjunt d'objectes del sistema.

Les llistes de control d'accessos (ACL)

Rendiment

Fragmentació i defragmentació

http://en.wikipedia.org/wiki/Defragmentation

Sistema de fitxers Unix

Consulteu:

inodes

Sistema de protecció

Consulteu:

Interfície amb l'usuari. Shell, línia de comandes

Comandes

Crear nom

mkdir. Crear carpeta

mknod. Crear dispositiu

ln. Enllaç

Modificar nom i/o camí

mv.Moure

Destruir nom

rm. Borrar fitxers i directoris

rmdir. Borrar directori

unlink. rm sobre enllaços

Consultar noms

ls

Canviar de directori

cd

Directori actual

pwd

Interfície amb el programador. Crides del sistema

Podeu consultar les crides de sistema de I/O a:

Eines de l'usuari