Naredba blockdev

Linux se razvija i stalno dobija nove naredbe, koje mi, tradicionalni uniksaši, tek trebamo otkriti i prihvatiti. Tako sam našao naredbu blockdev, ali se sve do nedavno nisam potrudio da je upoznam. Nije bilo vremena, nije mi trebalo... No upoznavanje s tom naredbom prilika je da se osvježi zaboravljeno znanje i da se nauči nešto novo.


Kratko podsjećanje: block device je uređaj s kojim ne komuniciramo bajt po bajt (kao s character deviceom), već podatke šaljemo/primamo u "blokovima" različite veličine.

$ blockdev --help

Usage:
 blockdev -V
 blockdev --report [devices]
 blockdev [-v|-q] commands devices

Available commands:
 --getsz                   get size in 512-byte sectors
 --setro                   set read-only
 --setrw                   set read-write
 --getro                   get read-only
 --getdiscardzeroes        get discard zeroes support status
 --getss                   get logical block (sector) size
 --getpbsz                 get physical block (sector) size
 --getiomin                get minimum I/O size
 --getioopt                get optimal I/O size
 --getalignoff             get alignment offset in bytes
 --getmaxsect              get max sectors per request
 --getbsz                  get blocksize
 --setbsz <bytes>          set blocksize on file descriptor opening the block device
 --getsize                 get 32-bit sector count (deprecated, use --getsz)
 --getsize64               get size in bytes
 --setra <sectors>         set readahead
 --getra                   get readahead
 --setfra <sectors>        set filesystem readahead
 --getfra                  get filesystem readahead
 --flushbufs               flush buffers
 --rereadpt                reread partition table

Uz nekoliko iznimki, parametre (kako smo ni naučili govoriti u prošlom mileniju), odnosno "opcije" (kako kažu mlađi kolege), možemo podijeliti u dvije grupe:
 
 --get<nešto>
 --set<nešto>

Get parametri čitaju kako su trenutno podešene postavke, dok set mijenja te vrijednosti. U ovom članku ćemo se baviti "get" parametrima, ali komplikacije počinju kad se prihvatimo "set" dijela - komplikacije ćemo ostaviti za drugu priliku.

Odmah nas je privukla "opcija" --report.

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


Odjednom smo dobili mnogo informacija o disku:

RO pokazuje da li je uređaj samo za čitanje, ili, kao u ovom slučaju, i za pisanje

RA je kratica za "readahed", koliko se podataka povuče s diska u jednom pristupu, da se ubrza rad računala pod pretpostavkom da će slijedeći upit tražiti podatke koji neposredno slijede
 
SSZ je sector size, veličina fizičkog bloka podataka za taj disk

BSZ je block size, veličina bloka na koju je formatiran filesystem, ona se može razlikovati od veličine sektora diska.

StartSec je kod diska 0, a kod particije veći od nule.

Size je veličina diska - u bajtovima!

Svaki od tih podataka možete zatražiti i odvojeno:

$ sudo blockdev --getro /dev/sda
0

Vraćena je nula, znači da nije istina da je disk read only.

$ sudo blockdev --getrw /dev/sda
1

Dakle istina je da se može pisati po disku.

$ sudo blockdev --getsz /dev/sda
312581808

S parametrom --report dobili smo veličinu diska u bajtovima (160041885696 za SSD disk od 160 GB), dok --getsz daje veličinu u blokovima od 512 bajtova, što je u ovom slučaju veličina sektora na fizičkom disku. Ako 312581808 pomnožite s 512, dobit ćete 160041885696.

Parametru --getsz nalikuju --getss, --getpbsz, --getbsz, --getbsz. Trebalo bi shvatiti razlike među njima.

--getsz                   get size in 512-byte sectors
--getss                   get logical block (sector) size
--getpbsz                 get physical block (sector) size
--getbsz                  get blocksize
--getsize64               get size in bytes

No, kako rekosmo, u koštac s komplikacijama uhvatit ćemo se u narednom nastavku.

Kuharice: 
Kategorije: 
Vote: 
5
Vaša ocjena: Nema Average: 5 (1 vote)