Ext3 (Italiano)

From ArchWiki
Revision as of 02:24, 13 July 2010 by Morbin (Talk | contribs) (Enable Full Journaling)

Jump to: navigation, search


Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Ext3 (Italiano)#)

Panoramica

Vi è un gran numero di fan del Third Extended Filesystem ("ext3"). A livello kernel e codice userspace è stato provato, testato, corretto, e migliorato più di quasi tutti gli altri filesystem compatibili con Linux. È semplice, robusto, ed estensibile. In questo articolo si illustreranno alcuni suggerimenti che possono migliorare sia le prestazioni che l'affidabilità del filesystem.

Nel corso di questo articolo, /dev/hdXY sarà utilizzato come una partizione generica. È necessario sostituirla con il nodo del dispositivo effettivo per la partizione, come /dev/hdb1 per la prima partizione del disco slave primario o /dev/sda2 per la seconda partizione del primo disco SCSI o Serial ATA.

Usare le utilità tune2fs e e2fsck

Prima di iniziare, assicurarsi di avere dimestichezza con lo strumento tune2fs per modificare le opzioni dei filesystem di una partizione ext2 o ext3. Leggere attentamente la pagina man tune2fs:

$ man tune2fs

È generalmente una buona idea eseguire un controllo del filesystem utilizzando l'utilità e2fsck dopo aver completato le modifiche desiderate in un filesystem. In questo modo si verifica che il filesystem sia pulito ed eventualmente corretto, se necessario. Si dovrebbe anche leggere la pagina del manuale per l'utilità e2fsck, se non lo si è ancora fatto:

$ man e2fsck

WARNING: SOLO DISPOSITIVI SMONTATI: Assicurarsi che tutti i filesystem siano smontati prima di modificarli con le utilità tune2fs o e2fsck! Avviare da LiveCD come Archie o Knoppix se non si può fare diversamente. L'alterazione o la messa a punto di un filesystem mentre è montato può causare gravi danneggiamenti! Siete stati avvertiti!

Utilizzo di indicizzazione Directory

Questa funzione migliora l'accesso ai file nelle directory di grandi dimensioni o directory contenenti molti file utilizzando un sistema di hash binari per memorizzare le informazioni della directory. È perfettamente sicuro da usare e fornisce un miglioramento sostanziale nella maggior parte dei casi, quindi è una buona idea abilitarlo:

# tune2fs -O dir_index /dev/hdXY

Questo avrà effetto solo con le directory create su quel filesystem dopo aver eseguito tune2fs. Per applicare questa funzionalità alle directory esistenti, si deve eseguire l'utilità e2fsck per ottimizzare e reindicizzare le directory sul filesystem:

# e2fsck -D -f /dev/hdXY

Note: Questo dovrebbe funzionare sia con filesystem ext2 che ext3. A seconda delle dimensioni del file system, l'operazione potrebbe richiedere molto tempo.

Note: L'indicizzazione della directory è attivata per impostazione predefinita in Arch Linux per mezzo di /etc/mke2fs.conf

Abilitare journaling completo

Per impostazione predefinita, le partizioni ext3 vengono montate con la modalità dati "ordinata". In questa modalità, tutti i dati vengono scritti nel file system principale, mentre i relativi metadati vengono passati al journal, i cui blocchi sono raggruppati logicamente in transazioni per diminuire gli I/O sul disco. Questo tende a essere un buon valore predefinito per la maggior parte delle persone. Tuttavia, c'è un metodo che aumenta sia l'affidabilità che le prestazioni (in alcune situazioni): passare tutto al journaling, compresi i dati del file stesso (conosciuto come modalità dati "journal"). Normalmente, si potrebbe pensare che passando tutti i dati al journal si diminuiscano le prestazioni, poiché i dati vengono scritti sul disco due volte: una al journal e una al filesystem principale, ma questo non sembra essere il caso. Abilitato su tutte e nove le partizioni nel computer in prova, è stata rilevata solamente una perdita di prestazioni durante la cancellazione di file di grandi dimensioni. In realtà, questo modo può effettivamente migliorare le prestazioni su un filesystem in cui la maggior parte della lettura e scrittura vengono effettuate simultaneamente . Vedere questo articolo scritto da Daniel Robbins sul sito IBM per maggiori informazioni.


Ci sono due modi per attivare la modalità dati journaling. Il primo è con l'aggiunta di "data=journal" come opzione di mount in /etc/fstab. Se lo si fa in questo modo e si desidera che anche il filesystem root lo usi, si dovrebbe anche aggiungere "rootflags=data=journal" come parametro del kernel nella configurazione del bootloader. Nel secondo metodo, si utilizzerà tune2fs per modificare le opzioni di montaggio predefinite nel superblocco del file system:

# tune2fs -O has_journal -o journal_data /dev/hdXY

Si prega di notare che il secondo metodo può non funzionare per i kernel più datati. In particolare per Linux 2.4.20 e inferiori, è probabile che le opzioni di mount predefinite sul superblocco vengano ignorate. Chi si sente avventuroso può anche voler ottimizzare le dimensioni del journaling. (Qui si è lasciato il journaling in formato predefinito). Un journaling di dimensioni più grandi può dare prestazioni migliori (al costo di più spazio su disco e un più lungo tempo di recupero). Si raccomanda di leggere la sezione pertinente del manuale tune2fs prima di procedere:

# tune2fs -J size=$SIZE /dev/hdXY

Disable Lengthy Boot-Time Checks

WARNING: Only do this on a journaling filesystem such as ext3. This may or may not work on other journaling filesystems such as ReiserFS or XFS, but has not been tested. Doing so may damage or otherwise corrupt other filesystems. You do this AT YOUR OWN RISK.

Hmm..It seems that our ext3 filesystems are still being checked every 30 mounts or so. This is a good default for many because it helps prevent filesystem corruption when you have hardware issues, such as bad IDE/SATA/SCSI cabling, power supply failures, etc. One of the driving forces for creating journaling filesystems was that the filesystem could easily be returned to a consistent state by recovering and replaying the needed journaled transactions. Therefore, we can safely disable these mount-count- and time-dependent checks if we are certain the filesystem will be quickly checked to recover the journal if needed to restore filesystem and data consistency. Before you do this please make sure your filesystem entry in /etc/fstab has a positive integer in its 6th field (pass) so that it is checked at boot time automatically. You may do so using the following command:

# tune2fs -c 0 -i 0 /dev/hdXY

If you just want to limit the checks to happen less often without totally disabling them (for peace of mind). A great method is to change from a number of count's check to a time frame check. See the man. Here is once every month...

# tune2fs -c 0 -i 1m /dev/hdXY

Reclaim Reserved Filesystem Space

Ext3 partition contain a used space of 5% for special reasons by default. The main reason for such space is so root can log in even when the filesystem becomes 100% used. Without this option, the root user might not be able to log in to "clean up" because the system could become unstable, trying to write logs to a 100% full system for example. The other reason is to help with less fragmentation on the filesystem.

The issue with this is that hard drives are getting so big the 5% can add up to be quite a large amount of wasted space. (eg. 100 GB = 5 GB reserved). Now if you separate your filesystems to like /home for example it might be a good idea to adjust these and reclaim that wasted space. It's a safe bet to leave your / filesystem at 5% reserved just in case. Leave reserved space for filesystems containing /var and /tmp also or else you'll end up with problems.

Now to change your reserved space to 1% of the drive, which is fair for non-root filesystems.

# tune2fs -m 1 /dev/sdXY

Assigning a Label

Once you have created and formated a partition, you can assign it a label using the e2label command. This allows you to add the partition to /etc/fstab using a label instead of using a device path (usefull for an USB drive). To add a label to a partition, type the following command as root:

   e2label /dev/sdXY new-label

If the optional argument new-label is not present, e2label will simply display the current filesystem label. If the optional argument new-label is present, then e2label will set the filesystem label to be new-labelq. Ext2 and ext3 filesystem labels can be at most 16 characters long; if new-label is longer than 16 characters, e2label will truncate it and print a warning message.

User experiences

I never had problems with these tips on large (>750) filesystems. Disabling lengthy boot-time works fine as well.


I get filesystem errors even with this tips. Do not disable lengthy Boot-Time

If you have some big partitions, do not enable full journaling on them. I experienced reproducible freezes (about 30 seconds) when enabling this on my 250gb home partition.

Did you try tweaking bdflush as described by Daniel Robbins?