Gestiunea Serviciilor de Rețea

Laborator 02 - Gestiunea sistemului de fișiere

IMPORTANT Dacă un pachet nu este instalat iar un exercițiu face referire la acesta, instalați-l.

1. Lucrul cu fișiere (2p)

  • Comenzi/concepte/fișiere
    • touch
    • mkdir -p
    • ls -a, -l, -i, -F
    • tipuri de fișiere
    • file, stat
    • ln, ln -s

Tutorial

  • Există mai multe metode de a crea un fișier în Linux. Cea mai simplă este utilizarea comenzii touch. Folosiți touch pentru a crea fișierul /home/student/my-file. Ce dimensiune are acest fișier ?
  • Creați directorul /home/student/My/Long/Folder. Accesați man mkdir și căutați “parent” pentru a vedea cum poate fi creat cu o singură comandă.
  • Intrați în directorul /etc/rc2.d și rulați comanda ls -l. Ce semnificație credeți că au caracterele - și l de la începutul liniilor din output ? Ce alte caractere ați mai întâlnit în aceeași poziție ?

Exerciții

  • [01]. Creați în directorul /home/student următoarea structură de directoare /home/student/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is.
Rezolvare
student@mjolnir:~$ mkdir -p /home/student/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is

student@mjolnir:~$ tree
.
[...]
|-- Templates
|-- the
|   `-- unix
|       `-- file
|           `-- system
|               `-- sure
|                   `-- it
|                       `-- corrupts
|                           `-- your
|                               `-- data
|                                   `-- but
|                                       `-- look
|                                           `-- how
|                                               `-- fast
|                                                   `-- it
|                                                       `-- is
[...]
  • [02]. Intrați în directorul /home/student/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is și creați trei fișiere, denumite ext2, ext3 și ext4.
Rezolvare
student@mjolnir:~$ cd the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is/

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ touch ext2 ext3 ext4
  • [03]. Modificați data când fișierul ext4 a fost accesat și modificat la 2010.05.23 15:25 (Hint: touch)
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ls -l
total 0
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext2
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext3
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ touch -t 1005231525 ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ls -l
total 0
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext2
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext3
-rw-r--r-- 1 student student 0 May 23  2010 ext4
  • [04]. Verificați faptul că modificările au fost aplicate. Care este inode-ul fișierului ext4 ? (Hint: stat)
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ls -li
total 0
382 -rw-r--r-- 1 student student 0 Nov 16 15:31 ext2
383 -rw-r--r-- 1 student student 0 Nov 16 15:31 ext3
384 -rw-r--r-- 1 student student 0 May 23  2010 ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ stat ext4
  File: `ext4'
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 1ah/26d	Inode: 384         Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ student)   Gid: ( 1000/ student)
Access: 2010-05-23 15:25:00.000000000 +0300
Modify: 2010-05-23 15:25:00.000000000 +0300
Change: 2011-11-16 15:32:21.000000000 +0200
  • [05]. Creați link-ul simbolic sym-ext4 către fișierul ext4. (Hint: man ln, căutați “symbolic”)
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ln -s ext4 sym-ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ls -l
total 0
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext2
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext3
-rw-r--r-- 1 student student 0 May 23  2010 ext4
lrwxrwxrwx 1 student student 4 Nov 16 15:33 sym-ext4 -> ext4
  • [05].a. Scrieți textul “current file system” în ext4 și afișați conținutul lui sym-ext4.
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ echo "current file system" > ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ cat sym-ext4
current file system
  • [05].b. Ștergeți fișireul ext4 și afișați conținutul lui sym-ext4.
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ rm ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ cat sym-ext4
cat: sym-ext4: No such file or directory
  • [05].c. Aflati tipul fișierului sym-ext4 (Hint: file)
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ file sym-ext4
sym-ext4: broken symbolic link to `ext4'
  • [06]. Creați link-ul hard hard-ext3 către fișierul ext3.
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ln ext3 hard-ext3

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ls -l
total 0
-rw-r--r-- 1 student student 0 Nov 16 15:31 ext2
-rw-r--r-- 2 student student 0 Nov 16 15:31 ext3
-rw-r--r-- 2 student student 0 Nov 16 15:31 hard-ext3
lrwxrwxrwx 1 student student 4 Nov 16 15:33 sym-ext4 -> ext4
  • [06].a. Aflați inode-urile pentru hard-ext3 și ext3. (Hint: stat)
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ ls -li
total 0
382 -rw-r--r-- 1 student student 0 Nov 16 15:31 ext2
383 -rw-r--r-- 2 student student 0 Nov 16 15:31 ext3
383 -rw-r--r-- 2 student student 0 Nov 16 15:31 hard-ext3
385 lrwxrwxrwx 1 student student 4 Nov 16 15:33 sym-ext4 -> ext4

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ stat ext3 | grep Inode
Device: 1ah/26d	Inode: 383         Links: 2

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ stat hard-ext3 | grep Inode
Device: 1ah/26d	Inode: 383         Links: 2
  • [06].b. Scrieți textul “old file system” în ext3 și afișați conținutul lui hard-ext3.
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ echo "old file system" > ext3

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ cat hard-ext3 
old file system
  • [06].c. Ștergeți fișireul ext3 și afișați conținutul lui hard-ext3.
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ rm ext3

student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ cat hard-ext3 
old file system
  • [06].d. Aflati tipul fișierului hard-ext3 (Hint: file)
Rezolvare
student@mjolnir:~/the/unix/file/system/sure/it/corrupts/your/data/but/look/how/fast/it/is$ file hard-ext3 
hard-ext3: ASCII text

2. Redirectări (1p)

  • Comenzi/concepte/fișiere
    • redirectări

Tutorial

  • Rulați comanda ls -l. Apoi succesiv ls -l > ls.output și cat ls.output. Ce se afla în ls.output ?

Exerciții

  • [01]. Schimbați directorul curent în directorul /home/student. Folosiți comanda echo pentru a afișa pe ecran textul “al doilea laborator de GSR”. Redirectați acest text într-un fișier numit lab2.txt. (Hint: man bash și căutați după “REDIRECTION”)
Rezolvare
student@mjolnir:~$ echo "al doilea laborator de GSR"
al doilea laborator de GSR

student@mjolnir:~$ echo "al doilea laborator de GSR" > lab2.txt

student@mjolnir:~$ cat lab2.txt 
al doilea laborator de GSR
  • [02]. Folosiți comanda echo pentru a adăuga textul “e mai lung decat primul” în fișierul lab2.txt, fără a șterge conținutul său. (Hint: man bash și căutați după “appending”)
Rezolvare
student@mjolnir:~$ echo "e mai lung decat primul" >> lab2.txt

student@mjolnir:~$ cat lab2.txt
al doilea laborator de GSR
e mai lung decat primul
  • [03]. Scriind comanda gcc fără niciun parametru, veți primi un mesaj de eroare. Redirectați acest mesaj de eroare folosind un operator de redirectare într-un fișier numit gcc_error.txt. Afișați conținutul fisierului pentru a confirma. (Hint: man bash și căutați după “standard error”).
Rezolvare
student@mjolnir:~$ gcc
gcc: fatal error: no input files
compilation terminated.

student@mjolnir:~$ gcc 2> gcc_error.txt

student@mjolnir:~$ cat gcc_error.txt 
gcc: fatal error: no input files
compilation terminated.

3. Căutarea fișierelor pe disc (2p)

  • Comenzi/concepte/fișiere
    • whereis, locate, updatedb
    • find -name, -type, -exec

Tutorial

Exerciții

  • [01]. Aflați directorul unde se află executabilul finger. (Hint: whereis)
Rezolvare
root@mjolnir:/home/student# apt-get install finger
[...]

student@mjolnir:~$ whereis -b finger
finger: /usr/bin/finger
  • [02]. Afișați fișierul de pe disc ce corespunde paginii de manual a utilitarului strip. (Hint: man whereis, căutați “manual”)
Rezolvare
student@mjolnir:~$ whereis -m strip
strip: /usr/share/man/man1/strip.1.gz
  • [03]. Actualizați baza de data locală a utilitarului locate și căutați toate fișierele de pe disc ce conțin în numele lor șirul de caractere “sleep”. Atenție: “sleep” nu trebuie să se găsească în calea către fișier, ci numai în numele fișierului. (Hint: man locate, căutați “base”)
Rezolvare
root@mjolnir:~# updatedb

root@mjolnir:~# locate -b sleep
/bin/sleep
/boot/grub/sleep.mod
/etc/pm/sleep.d
/usr/lib/grub/i386-pc/sleep.mod
/usr/lib/klibc/bin/sleep
/usr/lib/perl/5.12.4/auto/POSIX/sleep.al
/usr/lib/pm-utils/sleep.d
/usr/share/man/man1/sleep.1.gz
/usr/share/man/man2/clock_nanosleep.2.gz
/usr/share/man/man2/nanosleep.2.gz
/usr/share/man/man3/sleep.3.gz
/usr/share/man/man3/usleep.3.gz
/usr/src/linux-headers-3.0.0-1-amd64/include/config/acpi/sleep.h
/usr/src/linux-headers-3.0.0-1-amd64/include/config/pm/sleep
/usr/src/linux-headers-3.0.0-1-amd64/include/config/pm/sleep.h
  • [04]. Afișați toate directoarele din /etc ce conțin în numele lor șirul de caractere “config”. Nu folosiți locate. (Hint: find, -type)
Rezolvare
root@mjolnir:~# find /etc -name *config* -type d
/etc/gnome/config
/etc/defoma/config
/etc/pm/config.d
Rezolvare
root@mjolnir:/home/student# mkdir newfiles

root@mjolnir:/home/student# find /etc -mtime -1 -type f -exec cp {} newfiles/ \;
 
root@mjolnir:/home/student# ls -l newfiles/
total 24
-rw-r--r-- 1 root root  694 Nov 16 15:42 config
-rw-r--r-- 1 root root  540 Nov 16 15:42 dhcpd.leases
-rw-r--r-- 1 root root    6 Nov 16 15:42 ifstate
-rw-r--r-- 1 root root 1867 Nov 16 15:42 mtab
-rw-r--r-- 1 root root   18 Nov 16 15:42 nat.mac
-rw-r--r-- 1 root root  124 Nov 16 15:42 resolv.conf

4. Arhive (1,5p)

  • Comenzi/concepte/fișiere
    • du -h, -s, ls -l
    • tar, gzip, bzip2

Tutorial

  • Rulați comanda dd if=/dev/zero of=/home/student/myfile.dat bs=1M count=2
  • Rulați comanda tar -cf myfile.tar myfile.dat pentru a crea o arhiva tar ce conține fișierul generat anterior
  • Rulați comanda tar -czf myfile.tar.gz myfile.dat pentru a crea o arhiva tar.gz ce conține fișierul generat anterior compresat.

Exerciții

  • [01]. Arhivați directorul /etc/default cu toate fișierele și subdirectoarele conținute de acesta într-o arhivă default.tar. Atenție: doar arhivați directorul, nu îl și compresați.
Rezolvare
root@mjolnir:~# cd /etc/

root@mjolnir:/etc# tar -cf /root/default.tar default

root@mjolnir:/etc# cd

root@mjolnir:~# ls -l
total 64
-rw-r--r-- 1 root root 51200 Nov 16 15:44 default.tar
  • [02]. Arhivați din nou directorul /etc/default cu toate fișierele și subdirectoarele conținute de acesta într-o arhivă default.tar.gz. De data aceasta compresați arhiva. Observați diferența de mărime față de arhiva anterioară.
Rezolvare
root@mjolnir:~# cd /etc

root@mjolnir:/etc# tar -czf /root/default.tar.gz default

root@mjolnir:/etc# cd

root@mjolnir:~# ls -l
total 76
-rw-r--r-- 1 root root 51200 Nov 16 15:44 default.tar
-rw-r--r-- 1 root root 10838 Nov 16 15:45 default.tar.gz
  • [03]. Afișați conținutul arhivei default.tar fără a o dezarhiva. (Hint: man tar, căutați “list”. Nu uitați să specificați numele arhivei prin -f)
Rezolvare
root@mjolnir:~# tar -tvf default.tar
drwxr-xr-x root/root         0 2011-10-18 17:56 default/
-rw-r--r-- root/root      1017 2011-09-19 00:20 default/cron
-rw-r--r-- root/root       313 2011-04-24 10:34 default/klogd
-rw-r--r-- root/root       876 2011-10-11 19:25 default/exim4
-rw-r--r-- root/root       845 2011-08-10 09:44 default/bluetooth
[...]
  • [04]. Creați fisierul /home/student/big-text-file.txt care să conțină cel puțin 5MB text (nu date aleator generate).
Rezolvare
student@mjolnir:~$ find / * &> big-text-file.txt

student@mjolnir:~$ ls -lh big-text-file.txt 
-rw-r--r-- 1 student student 11M Nov 16 15:47 big-text-file.txt
  • [05]. Arhivați fisierul big-text-file.txt în format gzip, bzip2 și zip. Care sunt diferențele de mărime ale arhivelor? (Hint: man gzip, căutați “example”)
Rezolvare
root@mjolnir:~# apt-get install zip

student@mjolnir:~$ gzip -c big-text-file.txt > big-text-file.txt.gz

student@mjolnir:~$ bzip2 -c big-text-file.txt > big-text-file.txt.bz2

student@mjolnir:~$ zip big-text-file.txt.zip big-text-file.txt
  adding: big-text-file.txt (deflated 89%)

student@mjolnir:~$ ls -lh big*
-rw-r--r-- 1 student student  11M Nov 16 15:47 big-text-file.txt
-rw-r--r-- 1 student student 843K Nov 16 15:49 big-text-file.txt.bz2
-rw-r--r-- 1 student student 1.2M Nov 16 15:49 big-text-file.txt.gz
-rw-r--r-- 1 student student 1.2M Nov 16 15:51 big-text-file.txt.zip

5. Drepturi pe fișiere (2p)

  • Comenzi/concepte/fișiere
    • u, g, o, r, w, x
    • chmod, chown
    • umask
    • sticky bit

Tutorial

  • Creați fișierul /home/student/testfile. Ce drepturi de execuție are ?
  • Rulați comanda chmod u+x /home/student/testfile. Cum s-au modificat drepturile de execuție ?

Exerciții

  • [01]. În urma rulării comenzii ls -l pe un sistem Linux s-a obținut următorul output:
    total 36
    drw-r--r-T 2 adm       admins    4096 2008-12-12 10:10 dir1
    -rwxr--r-x 2 student   students  9845 2008-11-09 04:03 fis1
    -rwxr--r-- 1 student   students  5000 2008-11-09 04:06 fis2
    -rwxr--r-x 2 student   students  9845 2008-11-09 04:03 link
    lrwxrwxrwx 1 adm       students     4 2008-11-09 04:13 linked -> fis1

    Creați o structură de fișiere în directorul /home/student/access-rights care să copieze complet informațiile oferite mai sus. Toți parametrii trebuie să fie identici. Încercați să folosiți cât mai puține comenzi. (Hint: T = sticky bit fara drept de executie)

Rezolvare
root@mjolnir:/home/student/access-rights# dd if=/dev/sda1 of=fis1 bs=5 count=1969
1969+0 records in
1969+0 records out
9845 bytes (9.8 kB) copied, 0.0245335 s, 401 kB/s

root@mjolnir:/home/student/access-rights# dd if=/dev/sda1 of=fis2 bs=1000 count=5
5+0 records in
5+0 records out
5000 bytes (5.0 kB) copied, 0.00602714 s, 830 kB/s

root@mjolnir:/home/student/access-rights# groupadd students

root@mjolnir:/home/student/access-rights# groupadd admins

root@mjolnir:/home/student/access-rights# useradd -d /home/adm -m -g admins -s /bin/bash adm

root@mjolnir:/home/student/access-rights# mkdir dir1

root@mjolnir:/home/student/access-rights# chown adm:admins dir1

root@mjolnir:/home/student/access-rights# chown student:students fis1

root@mjolnir:/home/student/access-rights# chown student:students fis2

root@mjolnir:/home/student/access-rights# ln -s fis1 linked

root@mjolnir:/home/student/access-rights# chown -h adm:students linked 

root@mjolnir:/home/student/access-rights# ln fis1 link

root@mjolnir:/home/student/access-rights# chmod 745 fis1

root@mjolnir:/home/student/access-rights# chmod 744 fis2

root@mjolnir:/home/student/access-rights# chmod +t dir1

root@mjolnir:/home/student/access-rights# chmod a-x dir1

root@mjolnir:/home/student/access-rights# touch -t 0812121010 dir1

root@mjolnir:/home/student/access-rights# touch -t 0811090403 fis1

root@mjolnir:/home/student/access-rights# touch -t 0811090406 fis2

root@mjolnir:/home/student/access-rights# touch -ht 0811090413 linked

root@mjolnir:/home/student/access-rights# ls -l --time-style=long-iso
total 36
drw-r--r-T 2 adm     admins   4096 2008-12-12 10:10 dir1
-rwxr--r-x 2 student students 9845 2008-11-09 04:03 fis1
-rwxr--r-- 1 student students 5000 2008-11-09 04:06 fis2
-rwxr--r-x 2 student students 9845 2008-11-09 04:03 link
lrwxrwxrwx 1 adm     students    4 2008-11-09 04:13 linked -> fis1

6. Partiții și sisteme de fișiere (2,5p)

  • Comenzi/concepte/fișiere
    • Char devices, block devices, major, minor, mknod
    • fdisk, df
    • mkfs, mkswap
    • swapon, swapoff
    • mount, umount
    • /etc/fstab
    • fsck
    • tune2fs
    • dd

Atenție: acest set de exerciții se rezolvă pe mașina virtuală.

Tutorial

  • Creați o partiție cu un sistem de fișiere de tip ext2 pe /dev/sdb. Pentru aceasta:
    • Rulați fdisk /dev/sdb
    • Apăsati m pentru a vedea o listă de partiții disponibile
    • Apăsati n pentru a crea o nouă partiție. Creați o partiție primară care să ocupe tot discul.
    • Apăsați w pentru a salva modificările pe disc.
    • Rulați fdisk -l pentru a vedea o listă cu partițiile existente.
Rezolvare
root@heimdall:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x77f9162e.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): 
Using default value 4194303

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

Calling ioctl() to re-read partition table.
Syncing disks.

root@heimdall:~# fdisk -l

Disk /dev/sda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders, total 12582912 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: 0x000734e4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    11718655     5858304   83  Linux
/dev/sda2        11718656    12580863      431104   82  Linux swap / Solaris

Disk /dev/sdb: 2147 MB, 2147483648 bytes
22 heads, 16 sectors/track, 11915 cylinders, total 4194304 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: 0x77f9162e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     4194303     2096128   83  Linux

Exerciții

  • [01]. Vizualizați tabela de partiții a /dev/sda. Care este partiția asociată swap-ului?
Rezolvare
root@heimdall:~# fdisk -l /dev/sda

Disk /dev/sda: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders, total 12582912 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: 0x000734e4

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    11718655     5858304   83  Linux
/dev/sda2        11718656    12580863      431104   82  Linux swap / Solaris
  • [02]. Ștergeți partiția de pe /dev/sdb; creați trei noi partiții de tip Ext2(Primary), ReiserFs și o partiție de tip swap care va fi folosită în sesiunea curentă – activați folosirea partiției de swap. (Hint: fdisk /dev/sdb, mkfs.ext4)
Rezolvare
root@heimdall:~# fdisk /dev/sdb

Command (m for help): d
Selected partition 1

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-4194303, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303): +500M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 2): 
Using default value 2
First sector (1026048-4194303, default 1026048): 
Using default value 1026048
Last sector, +sectors or +size{K,M,G} (1026048-4194303, default 4194303): +500M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 3): 
Using default value 3
First sector (2050048-4194303, default 2050048): 
Using default value 2050048
Last sector, +sectors or +size{K,M,G} (2050048-4194303, default 4194303): +500M

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

Calling ioctl() to re-read partition table.
Syncing disks.

root@heimdall:~# fdisk -l /dev/sdb

Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders, total 4194304 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: 0x77f9162e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     1026047      512000   83  Linux
/dev/sdb2         1026048     2050047      512000   83  Linux
/dev/sdb3         2050048     3074047      512000   83  Linux

root@heimdall:~# mkfs.ext2 /dev/sdb1
mke2fs 1.42-WIP (02-Jul-2011)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks: 
	8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done 

This filesystem will be automatically checked every 0 mounts or
0 days, whichever comes first.  Use tune2fs -c or -i to override.

root@heimdall:~# mkreiserfs /dev/sdb2
mkreiserfs 3.6.21 (2009 www.namesys.com)

A pair of credits:
Jeremy  Fitzhardinge  wrote  the  teahash.c  code  for  V3.  Colin  Plumb  also
contributed to that.

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


Guessing about desired format.. Kernel 3.0.0-1-686-pae is running.
Format 3.6 with standard journal
Count of blocks on the device: 128000
Number of blocks consumed by mkreiserfs formatting process: 8215
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: 56dca10b-750f-4fdb-9f78-f057c36834f9
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
	ALL DATA WILL BE LOST ON '/dev/sdb2'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok
ReiserFS is successfully created on /dev/sdb2.

root@heimdall:~# mkswap /dev/sdb3
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=d5242ca0-bef5-44a1-b3bf-a44d83763409

root@heimdall:~# swapon /dev/sdb3

root@heimdall:~# file -s /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext2 filesystem data, UUID=013f5e28-e521-4880-a7ed-cbb091d01751

root@heimdall:~# file -s /dev/sdb2
/dev/sdb2: ReiserFS V3.6

root@heimdall:~# file -s /dev/sdb3
/dev/sdb3: Linux/i386 swap file (new style), version 1 (4K pages), size 127999 pages, no label, UUID=d5242ca0-bef5-44a1-b3bf-a44d83763409
  • [03]. Verificați integritatea sistemului de fișiere ext2 de pe partiția recent creată pe /dev/sdb. (Hint: fsck)
Rezolvare
root@heimdall:~# fsck.ext2 /dev/sdb1
e2fsck 1.42-WIP (02-Jul-2011)
/dev/sdb1: clean, 11/128016 files, 18474/512000 blocks
  • [04]. Folosiți df pentru a obține o estimare a spațiului ocupat de către fiecare partiție.
Rezolvare
root@heimdall:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       5.5G  1.1G  4.3G  20% /
tmpfs           5.0M  4.0K  5.0M   1% /lib/init/rw
tmpfs            25M  180K   25M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            50M     0   50M   0% /tmp
udev            120M     0  120M   0% /dev
tmpfs            50M     0   50M   0% /run/shm
  • [05]. Afișați toate sistemele de fișiere montate curent folosind comanda mount, iar apoi fișierul /etc/mtab. Ce diferențe există între cele două output-uri?
Rezolvare
root@heimdall:~# mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,size=5242880,mode=755,size=5242880,mode=755)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=755,size=10%,mode=755)
tmpfs on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880,mode=1777,size=5242880,mode=1777)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,size=20%,mode=1777,size=20%,mode=1777)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,size=20%,mode=1777,size=20%,mode=1777)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620,gid=5,mode=620)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

root@heimdall:~# cat /etc/mtab
/dev/sda1 / ext4 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,size=5242880,mode=755,size=5242880,mode=755 0 0
tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=755,size=10%,mode=755 0 0
tmpfs /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880,mode=1777,size=5242880,mode=1777 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,size=20%,mode=1777,size=20%,mode=1777 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /run/shm tmpfs rw,nosuid,nodev,size=20%,mode=1777,size=20%,mode=1777 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620,gid=5,mode=620 0 0
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
  • [06]. Montați partiția /dev/sdb2 ca read-only în /media/sdb2, fără ca acest lucru să fie înregistrat în /etc/mtab. Demontați ulterior partiția.
Rezolvare
root@heimdall:~# mkdir /media/sdb2

root@heimdall:~# mount -r -n -t reiserfs /dev/sdb2 /media/sdb2

root@heimdall:~# cat /etc/mtab 
/dev/sda1 / ext4 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,size=5242880,mode=755,size=5242880,mode=755 0 0
tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=755,size=10%,mode=755 0 0
tmpfs /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880,mode=1777,size=5242880,mode=1777 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,size=20%,mode=1777,size=20%,mode=1777 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /run/shm tmpfs rw,nosuid,nodev,size=20%,mode=1777,size=20%,mode=1777 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620,gid=5,mode=620 0 0
rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
  • [07]. Modificați fișierul /etc/fstab adăugând cele 2 partiții /dev/sdb1 și /dev/sdb2; /dev/sdb1 va fi montată în directorul /media/sdb1 cu drepturi de citire-scriere și va putea fi montată de orice utilizator, iar /dev/sdb2 se va monta în /media/sdb2 ca read-only.
Rezolvare
root@heimdall:~# cat /etc/fstab | tail -n 2
/dev/sdb1       /media/sdb1     ext2            rw,user         0       0
/dev/sdb2       /media/sdb2     reiserfs        ro              0       0
  • [08]. Demontați toate sistemele de fițiere specificate în cadrul /etc/fstab, și apoi montați-le la loc.
Rezolvare
root@heimdall:~# umount -a
umount: /dev: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /run: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

root@heimdall:~# mount -a
mount: /dev/sdb2 already mounted or /media/sdb2 busy

root@heimdall:~# umount -a
umount: /dev: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /run: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
umount: /: device is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))

root@heimdall:~# umount /media/sdb2 

root@heimdall:~# mount -a
  • [09]. [Bonus]. Modificati setările partiției ext2 astfel încât la fiecare montare consistența aceasteia să fie verificată.
Rezolvare
root@heimdall:~# tune2fs -c 1 /dev/sdb1
tune2fs 1.42-WIP (02-Jul-2011)
Setting maximal mount count to 1
Rezolvare
Tutorial disponibil la adresa web.
laboratoare/laborator-02.txt · Last modified: 2011/11/16 18:38 by george.milescu