Vés al contingut

Bloc de dades

De la Viquipèdia, l'enciclopèdia lliure
Estructures d'un disc: A:pista, B:sector geomètric, C:sector de disc, D:cluster.

En informàtica (específicament en la transmissió de dades i en l'emmagatzematge de dades ), un bloc de dades,[1] clúster,[2] unitat d'assignació o registre físic, és una seqüència de bytes o bits, que normalment conté un nombre sencer de registres, amb una longitud màxima; o unitat d'assignació.[3] Les dades estructurades d'aquesta manera es diuen "agrupades en blocs". El procés d'inserció de dades en blocs s'anomena "agrupar en blocs", mentre que l'acció d'extreure les dades dels blocs s'anomena "desagrupar els blocs". Aquests blocs de dades s'emmagatzemen en una memòria intermèdia de dades i es llegeixen o escriuen un bloc sencer alhora. L'agrupació en blocs redueix la sobrecàrrega i accelera el maneig del flux de dades.[4] Per a alguns dispositius, com ara la cinta magnètica i els dispositius de disc CKD, l'agrupació en blocs redueix la quantitat d'emmagatzematge extern necessari per a les dades, i s'utilitza gairebé universalment quan s'emmagatzemen dades ja sigui en cinta magnètica de 9 pistes, en memòria flash NAND o en suports rotatius com ara disquets, discs durs i discos òptics.

Fitxer dispositiu

[modifica]

La majoria dels sistemes de fitxers es basen en un dispositiu de blocs, que és un nivell d'abstracció per al maquinari responsable d'emmagatzemar i recuperar blocs de dades especificats, tot i que la mida del bloc als sistemes de fitxers pot ser un múltiple de la mida del bloc físic. Això comporta una ineficiència de l'espai a causa de la fragmentació interna, ja que les longituds dels fitxers sovint no són múltiples sencers de la mida del bloc i, per tant, l'últim bloc d'un fitxer pot romandre parcialment buit. Això crearà espai lliure. Alguns sistemes de fitxers més nous, com ara Btrfs i FreeBSD UFS2, intenten resoldre-ho mitjançant tècniques anomenades suballocació de blocs i fusió de cua. Altres sistemes de fitxers com ZFS admeten mides variables de bloc.[5][6]

L'emmagatzematge de blocs normalment l'abstrau un sistema de fitxers o un sistema de gestió de bases de dades (DBMS) per a l'ús d'aplicacions i usuaris finals. Els volums físics o lògics als quals s'accedeix mitjançant un bloc d'E/S poden ser dispositius interns a un servidor, connectats directament mitjançant SCSI o Fibre Channel, o dispositius distants als quals s'accedeix mitjançant una xarxa d'àrea d'emmagatzematge (SAN) mitjançant un protocol com iSCSI o AoE. Els DBMS sovint utilitzen la seva pròpia E/S de bloc per millorar el rendiment i la recuperació en comparació amb la superposició del DBMS a la part superior d'un sistema de fitxers.

En Linux, la mida de bloc predeterminada per a la majoria dels sistemes de fitxers és de 4096 bytes. Per comprovar la mida del bloc es pot utilitzar l'ordre stat que forma part de les GNU Core Utilities.

En Rust es pot llegir un bloc amb el mètode read_exact.[7]

const BLOCK_SIZE: usize = 4096;

if let Ok(mut file) = File::open("example.bin")
{
    let mut buf = [0u8; BLOCK_SIZE];
    file.read_exact(&mut buf);
}

En Python es pot llegir un bloc amb el mètode read.

BLOCK_SIZE = 4096

with open("example.bin", "rb") as file:
    block = file.read(BLOCK_SIZE)

En C# es pot llegir un bloc amb la classe FileStream.[8]

const int BLOCK_SIZE = 4096;

using FileStream stream = File.Open("example.bin", FileMode.Open);
var block = new byte[BLOCK_SIZE];
await stream.ReadAsync(block, 0, BLOCK_SIZE);

Cluster vs. sector

[modifica]

En els sistemes de fitxers informàtics, un clúster (de vegades també anomenat unitat d'assignació o bloc ) és una unitat d'assignació d'espai en disc per a fitxers i directoris. Per reduir la sobrecàrrega de la gestió de les estructures de dades del disc, el sistema de fitxers no assigna sectors de disc individuals per defecte, sinó grups de sectors contigus, anomenats clústers. En un disc que utilitza sectors de 512 bytes, un clúster de 512 bytes conté un sector, mentre que un clúster de 4 kibibytes ( KiB ) conté vuit sectors. El terme clúster es va canviar a unitat d'assignació a DOS 4.0. No obstant això, el terme clúster encara s'utilitza àmpliament.[9]

Un clúster és la quantitat lògica més petita d'espai de disc que es pot assignar per contenir un fitxer. Per tant, emmagatzemar fitxers petits en un sistema de fitxers amb grans clústers malbarata espai en disc; aquest espai de disc perdut s'anomena espai lliure . Per a mides de clúster que són petites en comparació amb la mida mitjana del fitxer, l'espai perdut per fitxer serà estadísticament aproximadament la meitat de la mida del clúster; per a grans mides de clúster, l'espai perdut serà més gran. Tanmateix, una mida de clúster més gran redueix la sobrecàrrega i la fragmentació de la comptabilitat, cosa que pot millorar la velocitat de lectura i escriptura en general. Les mides típiques de clúster oscil·len entre 1 sector (512 B) i 128 sectors (64 KiB).[10]

A Linux, la mida del sector del disc es pot determinar amb sudo fdisk -l | grep "Sector size" i la mida del bloc es poden determinar amb sudo blockdev --getbsz /dev/sda .[11]

Es produeix un "clúster perdut" quan s'elimina un fitxer de la llista de directoris, però la taula d'assignació de fitxers (FAT) encara mostra els clústers assignats al fitxer.[12]

Referències

[modifica]
  1. Buchholz, Werner, ed. (1962), "4: Natural Data Units", Planning a Computer System – Project Stretch, McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., pàg. 39–40
  2. «Optimot. Consultes lingüístiques». Llengua catalana. [Consulta: 6 febrer 2025].
  3. «Available hard drive space, block sizes, and size terminology». , 05-05-2009.
  4. «Physical Structures». Captain SK. [Consulta: 29 abril 2014].
  5. «Bruning Questions: ZFS Record Size». , 29-03-2013.
  6. «Tuning ZFS recordsize». , 07-06-2006.
  7. «Read in std::io - Rust». doc.rust-lang.org. [Consulta: 2 febrer 2025].
  8. «FileStream.ReadAsync Method (System.IO)» (en anglès americà). learn.microsoft.com. [Consulta: 2 febrer 2025].
  9. Mueller, Scott (2002). Upgrading and repairing PCs, p. 1354. ISBN 0-7897-2745-5.
  10. «Difference between block size and cluster size». unix.stackexchange.com. [Consulta: 13 desembre 2015].
  11. «Disk Sector and Block Allocation For File». stackoverflow.com. [Consulta: 13 desembre 2015].
  12. «Errors Caused by Cross-Linked Files or Lost Clusters». Arxivat de l'original el 2015-03-06. [Consulta: 3 agost 2020].