Sto codificando alcune operazioni a livello di blocco e voglio assicurarmi di non bash su altri file. Su un file system ext2/3/4, è possibile memorizzare più file nello stesso blocco? Il mio primo istinto è di dire in alcun modo, ma volevo controllare con la comunità.È possibile memorizzare più file nello stesso blocco?
risposta
La domanda è difficile da rispondere. Forse la risposta corretta potrebbe essere in teoria sì, ma nella pratica no.
ext2/ext3
Parlando ext2 ed ext3, strutture superblocco e inode sono stati progettati per consentire i blocchi a essere frammentati. (Vedi: fs/ext2/ext2.h
e fs/ext3/ext3.h
)
breve frammento di fs/ext3/ext3.h
qui proposta:
struct ext3_super_block {
/*00*/ __le32 s_inodes_count; /* Inodes count */
__le32 s_blocks_count; /* Blocks count */
__le32 s_r_blocks_count; /* Reserved blocks count */
__le32 s_free_blocks_count; /* Free blocks count */
/*10*/ __le32 s_free_inodes_count; /* Free inodes count */
__le32 s_first_data_block; /* First Data Block */
__le32 s_log_block_size; /* Block size */
__le32 s_log_frag_size; /* Fragment size */
// ...
struct ext3_inode {
__le16 i_mode; /* File mode */
__le16 i_uid; /* Low 16 bits of Owner Uid */
// ...
__le32 i_faddr; /* Fragment address */
Sebbene preparati per, almeno nel kernel Linux (fino alla versione 3.13) blocco frammentazione è mai stato attuato, costringendo dimensione del frammento essere uguale alla dimensione del blocco. (Vedi: fs/ext3/super.c
)
if (blocksize != sbi->s_frag_size) {
ext3_msg(sb, KERN_ERR,
"error: fragsize %lu != blocksize %u (unsupported)",
sbi->s_frag_size, blocksize);
goto failed_mount;
}
AFAIK GNU/Hurd non implementa blocco frammentazione ext2/3 file system pure. Molto probabilmente non ci sarà nessun SO in giro, che lo implementa.
Tuttavia, controllare il s_log_frag_size
nel superblocco prima di iniziare le operazioni a livello di blocco potrebbe non essere una cattiva idea, dato che sarete dalla parte della sicurezza.
ext4
Con ext4 la storia Wohle diventa meno fastidioso, come ext4 non consente blocco frammentazione più. Il campo superblocco utilizzato per memorizzare le dimensioni dei frammenti ha ricevuto un nuovo lavoro e il campo iodo utilizzato per memorizzare l'indirizzo del frammento (rinominato in i_obso_faddr
) è stato contrassegnato come obsoleto nelle origini.
- 1. È possibile eseguire più AsyncTask nello stesso tempo?
- 2. È possibile inserire diverse classi groovy nello stesso file groovy?
- 3. Più UIPickerView nello stesso UIView
- 4. È possibile memorizzare un blocco all'interno di NSManagedObject?
- 5. Trova due righe nello stesso file
- 6. Ngrok configura più porte nello stesso dominio
- 7. più lingue nello stesso progetto nell'idea Intellij
- 8. È possibile riutilizzare un blocco "param" tra più funzioni?
- 9. (Vim) diff due subroutine nello stesso file
- 10. È possibile avere più shader di pixel (frammenti) nello stesso programma?
- 11. È possibile utilizzare sia l'evidenziazione della sintassi Python e SQL nello stesso file in Vim?
- 12. SVG e CSS proprietà nello stesso file
- 13. Creare 2 FileStream sullo stesso file nello stesso processo
- 14. VIM possibile rilevare più lingue sullo stesso file
- 15. scrittura nello stesso file dopo aver letto dal file
- 16. Leggere nel file - modificare il contenuto - scrivere nello stesso file
- 17. Come inserisco più riquadrati grafici nello stesso grafico in R?
- 18. C# È possibile che più classi BLOCCA lo stesso oggetto utilizzando più riferimenti?
- 19. È possibile memorizzare json su Amazon s3?
- 20. È possibile smaltire più oggetti all'interno di un blocco Utilizzo?
- 21. Più domini nella porta 443 nello stesso IP
- 22. È possibile memorizzare espressione lambda nell'array C#
- 23. animare più CALayers, ma non nello stesso spazio di tempo
- 24. È possibile avvisare di attivare lo stesso thread più volte?
- 25. log4net, 2 applicazioni possono scrivere nello stesso file di registro?
- 26. Memorizzare somme a coppie nello spazio lineare
- 27. Wpf e app di comando nello stesso file eseguibile
- 28. Certificati APNS multipli nello stesso file di certificato
- 29. È possibile estendere un ControlTemplate nello stesso modo in cui estendi uno stile in WPF?
- 30. È possibile memorizzare javascript in un database?
alcuni filesystem hanno la capacità di dividere un blocco fino in sotto-blocchi più piccoli (io in particolare ricordo di essere insegnato FFS di BSD avere questa capacità, di nuovo in corsi di base del sistema operativo in Uni). Comunque, non ho idea dei filesystem ext *. –
i file system ext *, utilizzati su * inx OS, allocano un blocco completo (in genere 4096 byte utilizzabili) anche se hanno solo bisogno di 1 byte del nuovo blocco. quindi, la risposta semplice è NO. OSSIA solo un file può essere tenuto su un blocco del disco. (tuttavia, potresti voler esaminare l'archiviazione, in quanto separa semplicemente una serie di programmi tramite un'intestazione, consentendo quindi la possibilità di avere più di un programma per blocco. – user3629249