Come fanno i Mac a calcolare la quantità di spazio disponibile sul disco rigido?

3

Che tipo di algoritmo usano per vedere quanto spazio è rimasto? Ho pensato che forse la quantità di spazio con cui è iniziata è programmata e quindi la dimensione dei file creati viene quindi sottratta dal totale.

P.S: Questa è una domanda Mac o una domanda di programmazione?

    
posta Steampunkery 23.08.2015 - 18:15
fonte

1 risposta

9

La tua domanda è difficile da rispondere perché non menzioni il livello che stai guardando.

Ci sono almeno quattro livelli da considerare:

  • Livello hardware

    Di solito l'hardware è costituito da alcuni blocchi amministrativi, i blocchi "payload" e alcuni blocchi di riserva. Un disco rigido contiene alcune dozzine e un'unità SSD fino al 15% della dimensione ufficiale dei blocchi di riserva / riserva. I blocchi danneggiati vengono rimappati nei blocchi di riserva / riserva dal firmware dell'unità. Il sistema operativo conosce solo la dimensione dei blocchi del carico utile. Alcuni strumenti del disco di basso livello (ad es. Spinrite ) possono leggere il numero di blocchi di riserva disponibili.

  • Livello partiton

    A seconda della dimensione del disco rigido - propagata dal firmware / hd-controller al tuo EFI / sistema operativo - il tuo strumento di partizionamento (es. Utility Disco) può creare partizioni determinando i valori iniziali e finali per ogni partizione nel tabella delle partizioni. Lo spazio libero sul disco rigido è determinato dal blocco finale dell'ultima partizione e dall'inizio della seconda tabella GPT (a condizione che l'unità sia stata partizionata in modo continuo e che non esistano spazi vuoti). Puoi leggere lo spazio libero sul tuo disco rigido con gpt .

  • Livello volume

    Di solito le partizioni devono essere formattate con un file system per essere utilizzabili. Quasi tutti i file system importanti contengono una bitmap del volume. La bitmap del volume è una rappresentazione di tutti i blocchi o gruppi di file (di un file system) di un volume. I blocchi liberi e i blocchi occupati sono contrassegnati in modo diverso. Quindi un metodo per determinare lo spazio libero su un volume sta contando tutti i blocchi taggati liberi nella bitmap del volume.

  • Livello LVM (Logical Volume Manager) o CoreStorage

    Il livello LVM è un livello di astrazione tra dischi rigidi, partizioni e volumi. Sebbene determinati dalle partizioni di base ("Physical Volumes"), un volume logico può estendersi su più volumi fisici (Fusion Drive). Non lo so per certo, ma un Logical Volume Group contiene probabilmente una controparte di una tabella delle partizioni contenente tutte le informazioni su tutti gli oggetti contenuti (come il / i volume / i fisico / i, la famiglia / i di volume logico, i volumi logici) . Lo spazio disponibile disponibile può essere letto inserendo diskutil cs list

  • block / cluster layer (questo è not rilevante per i file system OS X)

    Alcuni file system supportano blocco di suballocazione . In poche parole: molti file non occupano un blocco / cluster completo del livello volume perché sono più piccoli delle dimensioni blocco / cluster. Nello spazio libero del cluster è possibile memorizzare un file piccolo di secondo / terzo / quarto. Non so come determinare questo spazio libero (probabilmente qualche magia i-node / B-Tree).

A seconda del livello, ora puoi scegliere il metodo o lo strumento appropriato per determinare lo "spazio libero del tuo disco rigido".

    
risposta data 23.08.2015 - 20:15
fonte

Leggi altre domande sui tag