Personal tools

Partiţii

From linux360

Revision as of 14:43, 12 April 2006 by Andrei Ristea (talk | contribs) (Montare)
Jump to: navigation, search

Introducere

În sistemele UNIX accesul la dispozitive precum discuri flexibile, cd-uri, partitii ale unui hard-disc (în general memorii externe) se realizează în mod diferit de sistemele de tip Windows. Nu există volume separate de genul A:, C:, orice astfel de dispozitv este integrat în sistemul de fişiere local printr-o operaţie numită montare. Montarea asociază unui director, intreagul sistem de fişiere aflat pe dispozitivul montat. Mecanismul este deosebit de puternic, deoarece oferă posibilitatea de a avea o structură de directoare unitară, care grupeaza fişiere de pe mai multe partiţii sau discuri. Dacă se adaugă şi sistemul de fişiere NFS (Network File System), această structură de directoare va putea conţine şi sisteme de fişiere de pe alta maşină. Mai explicit, structura in cauza este una arborescenta, iar la adaugarea unei noi partitii montata sub un director, de fapt adaugam un subarbore in cadrul areborelui deja existent, legadu-l de un nod ales de noi (in acest caz directorul in care il montam).

Pentru identificarea dispozitivelor periferice, sistemele UNIX folosesc intrări speciale în directoare, numite "device files". Fisierele speciale care indică unitaţi de disc sau partiţii sunt folosite la montare. În general aceste fişiere se găsesc în directorul /dev şi au denumiri standardizate:

fdX
unitatea floppy
hdX
unitati HDD sau CDROM pe IDE
cdromX
unitati cdrom (in general legatura simbolica)
scdX
discuri SCSI sau unitati CDROM emulate SCSI sau pe USB
sdaX
unitati de stocare pe USB ( HDD-uri , ZIP-uri , FDD-uri, Card Readere, Flash-uri)


"X"-urile de mai sus sunt de fapt numere corespunzatoare device-ului respectiv.

Presupunem ca avem doua hard-disk-uri EIDE, care vor fi identificate de Linux ca fiind hda si hdb.

De exemplu, in Windows ne-am fi referit la o partitie sau hard-disk ca fiind, C:, D:, E: si asa mai departe. In Linux, daca vrem sa ne referim la partitia a treia de pe hard-disk-ul al doilea, avem un mecanism mai specific. Astfel, vom spune ca acea partitie este hdb3. Dupa cum ati ghicit hd se refera la unitatea proriu-zisa, b se refera la faptul ca este cel de-al doilea hard-disk, iar 3 este numarul partitiei.

Ce partiţii sunt pe disc ?

Primul pas, aflarea partiţiilor de pe sistem şi a tipului lor. Pentru asta se foloseşte comanda fdisk

<sh/>[root@movie root]# fdisk -l

Disk /dev/hdc: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot    Start       End    Blocks   Id  System
/dev/hdc1             1      4865  39078081    c  Win95 FAT32 (LBA)

Disk /dev/hda: 40.0 GB, 40027029504 bytes
255 heads, 63 sectors/track, 4866 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1       638   5124703+   b  Win95 FAT32
/dev/hda2           639      1276   5124735   83  Linux
/dev/hda3          1277      1293    136552+  82  Linux swap
/dev/hda4          1294      4866  28700122+   c  Win95 FAT32 (LBA)
[root@movie root]#

Exemplul anterior prezintă ieşirea comenzii fdisk pentru un sistem cu doua discuri. Acesta contine toate informaţiile necesare pentru montarea unei partiţii :

  • Dispozitivul : /dev/hda1 ( de exemplu)
  • Tipul sistemului de fişiere : Win95 FAT32, ..

Exemple:

  • partiţie NTFS
 /dev/hda1   *         1      1803  13630648+   7  HPFS/NTFS 
  • partiţie Win95
 /dev/hda1   *         1       638   5124703+   b  Win95 FAT32 
  • partiţie Linux pe HDD SCSI
 /dev/sda1   *         1       100    102384   83  Linux 

Montare

Nota amuzanta: In cazul in care vi se pare de undeva cunoscut numele acestei comenzi, s-ar putea sa fie de la utilitarul de Windows Daemon Tools. Va aduceti aminte ca pentru a putea vedea o imagine a unui CD trebuia sa creeati un CD-ROM virtual si sa "montati" in el imaginea dorita? Ei bine, actiunea este similara cu comanda mount sub Linux.

Folosind informaţiile găsite mai devreme, puteţi folosi comanda mount pentru a putea să accesaţi partiţia dorită. <sh/>mount -t <tipul sistemului> <dispozitiv> <director destinaţie>

Exemple :

Montarea unei partiţii NTFS

<sh/>mount -t ntfs /dev/hda1 /mnt/XP

Montarea unei partiţii FAT

<sh/>mount -t vfat /dev/hda1 /win Sunt utile unele opţiuni suplimentare oferite de comandă dintre care cea mai utila este umask, şi de la kernel-ul 2.5.43 dmask/fmask. Acestea perimit controlul atributelor pentru sistemele de fişiere care nu suporta atribute UNIX-like.

Montarea unei partitii FAT32 pentru a fi acessibilă tuturor utilizatorilor

<sh/>mount -t vfat -o umask=0 /dev/hda1 /win Pentru opţiuni suplimentare consultaţi manualul comenzii mount.

Pentru simplificarea operaţiei de montare se pot seta in fisierul /etc/fstab optiunile default pentru respectiva partiţie, acest fisier fiind standard in toate distributiile de Linux. Aici se specifica conform optiunilor de montare toate partitiile care doriti sa devina "stabile", in sensul ca vor fi montate asa la fiecare (re)pornire a sistemului.

<sh/>[root@movie root]# cat /etc/fstab #<file system> <mount point> <type> <options> <dump> <pass> LABEL=/ / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda3 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0 /dev/cdrom1 /mnt/cdrom1 iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0 /dev/hda1 /mnt/windows vfat users,defaults,umask=0 0 0 /dev/hda4 /mnt/data vfat users,defaults,umask=0 0 0 /dev/hdc1 /mnt/work vfat noauto,users,defaults,umask=0 0 0 /dev/hdc1 /mnt/filmele ntfs noauto,users,owner,defaults,umask=0 0 0

Mai explicit, fiecare linie din acest fişier are forma

<dispozitiv> <punct de montare> <sistemul de fişiere> <opţiuni> <backup> <fsck>

Primele câmpuri sunt evidente. Câmpul backup este folosit de comanda dump pentru a determina care sistem de fişiere trebuie salvat. Campul fsck este folosit de comanda fsck pentru a determina ordinea în care va verifica sistemele de fişiere la reboot. Sistemul pe care se găseste / va avea valoarea 1 in acest câmp, iar celelalte vor avea valoare 2 în general (sau 0 în cazul în care nu se doreşte verificarea lor).

În cazul în care nu doriţi ca partiţia respectivă să fie montată la boot, specificaţi opţiunea noauto. Pentru opţiuni suplimentare consultaţi manualul comenzii mount.

Alte sisteme de fişiere

Pe langă discuri prezente în sistem, kernel-ul linux poate monta şi sisteme de fişiere care sunt situate alte maşini. Un alt caz special este montarea imaginii binare a unui sistem de fisiere. Exemple:

Montarea unui sistem nfs <sh/>mount -t nfs movie:/mnt/hdc1 /mnt/filme/

unde movie este host-ul de unde este exportat respectivul "share" NFS, /mnt/hdc1 este directorul exportat. Atenţie, pentru montarea unui astfel de share, trebuie ca pe maşina gazdă să fie pornit portmap, pe maşina care exportă trebuie să fie adugat în /etc/exports directorul respectiv şi trebuie să fie pornit daemonul nfs.

Montarea unui share windows <sh/>mount -t smbfs -o username=tridge,password=foobar //fjall/test /data/test

Montarea unei imagini ISO9660 <sh/>mount -t iso9660 RH9.iso /mnt/cdrom1 -o loop

Spaţiul pe disc

Uneltele pentru aflarea spaţiului pe disc sunt df, şi du

df se foloseste pentru a determina spaţiul pe disc

Spatiul pe disc <sh/>[root@main root]# df -h -l

Filesystem            Size  Used Avail Use% Mounted on
/dev/hda1             3.3G  673M  2.7G  21% /
none                   31M     0   31M   0% /dev/shm
[root@main root]#

Opţiunea -l se foloseşte pentru a limita listarea la sistemele de fişiere locale. Opţiunea -h se foloseste pentru a genera lista în format "human readable".

du se foloseşte pentru determinarea spaţiului ocupat de fişiere

Spaţiul ocupat de fiecare director din /usr <sh/>[root@main root]# du -h --max-depth=1 /usr/

38M     /usr/bin
512     /usr/etc
201M    /usr/lib
1.0K    /usr/src
512     /usr/dict
23M     /usr/sbin
7.5M    /usr/X11R6
512     /usr/games
11K     /usr/local
259M    /usr/share
3.2M    /usr/libexec
1001K   /usr/kerberos
138K    /usr/include
531M    /usr
[root@main root]#

Spatiul total ocupat de /usr <sh/>[root@main root]# du -h --max-depth=0 /usr/

531M    /usr
[root@main root]#

Opţiunea -h are aceiaşi semnificaţie ca şi la df. Opţiunea --max-depth limitează adancimea maximă a subdirectoarelor pentru care se afişeaza totalul. De exemplu pentru <sh/>du -h --max-depth=2 ./ se afisează dimensiunea directoarelor din directorul curent, precum şi al subdirectoarelor acestora