| 1 |
|
|---|
| 2 |
Ext3 Filesystem |
|---|
| 3 |
=============== |
|---|
| 4 |
|
|---|
| 5 |
Ext3 was originally released in September 1999. Written by Stephen Tweedie |
|---|
| 6 |
for the 2.2 branch, and ported to 2.4 kernels by Peter Braam, Andreas Dilger, |
|---|
| 7 |
Andrew Morton, Alexander Viro, Ted Ts'o and Stephen Tweedie. |
|---|
| 8 |
|
|---|
| 9 |
Ext3 is the ext2 filesystem enhanced with journalling capabilities. |
|---|
| 10 |
|
|---|
| 11 |
Options |
|---|
| 12 |
======= |
|---|
| 13 |
|
|---|
| 14 |
When mounting an ext3 filesystem, the following option are accepted: |
|---|
| 15 |
(*) == default |
|---|
| 16 |
|
|---|
| 17 |
journal=update Update the ext3 file system's journal to the current |
|---|
| 18 |
format. |
|---|
| 19 |
|
|---|
| 20 |
journal=inum When a journal already exists, this option is ignored. |
|---|
| 21 |
Otherwise, it specifies the number of the inode which |
|---|
| 22 |
will represent the ext3 file system's journal file. |
|---|
| 23 |
|
|---|
| 24 |
journal_dev=devnum When the external journal device's major/minor numbers |
|---|
| 25 |
have changed, this option allows the user to specify |
|---|
| 26 |
the new journal location. The journal device is |
|---|
| 27 |
identified through its new major/minor numbers encoded |
|---|
| 28 |
in devnum. |
|---|
| 29 |
|
|---|
| 30 |
noload Don't load the journal on mounting. |
|---|
| 31 |
|
|---|
| 32 |
data=journal All data are committed into the journal prior to being |
|---|
| 33 |
written into the main file system. |
|---|
| 34 |
|
|---|
| 35 |
data=ordered (*) All data are forced directly out to the main file |
|---|
| 36 |
system prior to its metadata being committed to the |
|---|
| 37 |
journal. |
|---|
| 38 |
|
|---|
| 39 |
data=writeback Data ordering is not preserved, data may be written |
|---|
| 40 |
into the main file system after its metadata has been |
|---|
| 41 |
committed to the journal. |
|---|
| 42 |
|
|---|
| 43 |
commit=nrsec (*) Ext3 can be told to sync all its data and metadata |
|---|
| 44 |
every 'nrsec' seconds. The default value is 5 seconds. |
|---|
| 45 |
This means that if you lose your power, you will lose |
|---|
| 46 |
as much as the latest 5 seconds of work (your |
|---|
| 47 |
filesystem will not be damaged though, thanks to the |
|---|
| 48 |
journaling). This default value (or any low value) |
|---|
| 49 |
will hurt performance, but it's good for data-safety. |
|---|
| 50 |
Setting it to 0 will have the same effect as leaving |
|---|
| 51 |
it at the default (5 seconds). |
|---|
| 52 |
Setting it to very large values will improve |
|---|
| 53 |
performance. |
|---|
| 54 |
|
|---|
| 55 |
barrier=1 This enables/disables barriers. barrier=0 disables |
|---|
| 56 |
it, barrier=1 enables it. |
|---|
| 57 |
|
|---|
| 58 |
orlov (*) This enables the new Orlov block allocator. It is |
|---|
| 59 |
enabled by default. |
|---|
| 60 |
|
|---|
| 61 |
oldalloc This disables the Orlov block allocator and enables |
|---|
| 62 |
the old block allocator. Orlov should have better |
|---|
| 63 |
performance - we'd like to get some feedback if it's |
|---|
| 64 |
the contrary for you. |
|---|
| 65 |
|
|---|
| 66 |
user_xattr Enables Extended User Attributes. Additionally, you |
|---|
| 67 |
need to have extended attribute support enabled in the |
|---|
| 68 |
kernel configuration (CONFIG_EXT3_FS_XATTR). See the |
|---|
| 69 |
attr(5) manual page and http://acl.bestbits.at/ to |
|---|
| 70 |
learn more about extended attributes. |
|---|
| 71 |
|
|---|
| 72 |
nouser_xattr Disables Extended User Attributes. |
|---|
| 73 |
|
|---|
| 74 |
acl Enables POSIX Access Control Lists support. |
|---|
| 75 |
Additionally, you need to have ACL support enabled in |
|---|
| 76 |
the kernel configuration (CONFIG_EXT3_FS_POSIX_ACL). |
|---|
| 77 |
See the acl(5) manual page and http://acl.bestbits.at/ |
|---|
| 78 |
for more information. |
|---|
| 79 |
|
|---|
| 80 |
noacl This option disables POSIX Access Control List |
|---|
| 81 |
support. |
|---|
| 82 |
|
|---|
| 83 |
reservation |
|---|
| 84 |
|
|---|
| 85 |
noreservation |
|---|
| 86 |
|
|---|
| 87 |
bsddf (*) Make 'df' act like BSD. |
|---|
| 88 |
minixdf Make 'df' act like Minix. |
|---|
| 89 |
|
|---|
| 90 |
check=none Don't do extra checking of bitmaps on mount. |
|---|
| 91 |
nocheck |
|---|
| 92 |
|
|---|
| 93 |
debug Extra debugging information is sent to syslog. |
|---|
| 94 |
|
|---|
| 95 |
errors=remount-ro(*) Remount the filesystem read-only on an error. |
|---|
| 96 |
errors=continue Keep going on a filesystem error. |
|---|
| 97 |
errors=panic Panic and halt the machine if an error occurs. |
|---|
| 98 |
|
|---|
| 99 |
grpid Give objects the same group ID as their creator. |
|---|
| 100 |
bsdgroups |
|---|
| 101 |
|
|---|
| 102 |
nogrpid (*) New objects have the group ID of their creator. |
|---|
| 103 |
sysvgroups |
|---|
| 104 |
|
|---|
| 105 |
resgid=n The group ID which may use the reserved blocks. |
|---|
| 106 |
|
|---|
| 107 |
resuid=n The user ID which may use the reserved blocks. |
|---|
| 108 |
|
|---|
| 109 |
sb=n Use alternate superblock at this location. |
|---|
| 110 |
|
|---|
| 111 |
quota |
|---|
| 112 |
noquota |
|---|
| 113 |
grpquota |
|---|
| 114 |
usrquota |
|---|
| 115 |
|
|---|
| 116 |
bh (*) ext3 associates buffer heads to data pages to |
|---|
| 117 |
nobh (a) cache disk block mapping information |
|---|
| 118 |
(b) link pages into transaction to provide |
|---|
| 119 |
ordering guarantees. |
|---|
| 120 |
"bh" option forces use of buffer heads. |
|---|
| 121 |
"nobh" option tries to avoid associating buffer |
|---|
| 122 |
heads (supported only for "writeback" mode). |
|---|
| 123 |
|
|---|
| 124 |
|
|---|
| 125 |
Specification |
|---|
| 126 |
============= |
|---|
| 127 |
Ext3 shares all disk implementation with the ext2 filesystem, and adds |
|---|
| 128 |
transactions capabilities to ext2. Journaling is done by the Journaling Block |
|---|
| 129 |
Device layer. |
|---|
| 130 |
|
|---|
| 131 |
Journaling Block Device layer |
|---|
| 132 |
----------------------------- |
|---|
| 133 |
The Journaling Block Device layer (JBD) isn't ext3 specific. It was designed |
|---|
| 134 |
to add journaling capabilities to a block device. The ext3 filesystem code |
|---|
| 135 |
will inform the JBD of modifications it is performing (called a transaction). |
|---|
| 136 |
The journal supports the transactions start and stop, and in case of a crash, |
|---|
| 137 |
the journal can replay the transactions to quickly put the partition back into |
|---|
| 138 |
a consistent state. |
|---|
| 139 |
|
|---|
| 140 |
Handles represent a single atomic update to a filesystem. JBD can handle an |
|---|
| 141 |
external journal on a block device. |
|---|
| 142 |
|
|---|
| 143 |
Data Mode |
|---|
| 144 |
--------- |
|---|
| 145 |
There are 3 different data modes: |
|---|
| 146 |
|
|---|
| 147 |
* writeback mode |
|---|
| 148 |
In data=writeback mode, ext3 does not journal data at all. This mode provides |
|---|
| 149 |
a similar level of journaling as that of XFS, JFS, and ReiserFS in its default |
|---|
| 150 |
mode - metadata journaling. A crash+recovery can cause incorrect data to |
|---|
| 151 |
appear in files which were written shortly before the crash. This mode will |
|---|
| 152 |
typically provide the best ext3 performance. |
|---|
| 153 |
|
|---|
| 154 |
* ordered mode |
|---|
| 155 |
In data=ordered mode, ext3 only officially journals metadata, but it logically |
|---|
| 156 |
groups metadata and data blocks into a single unit called a transaction. When |
|---|
| 157 |
it's time to write the new metadata out to disk, the associated data blocks |
|---|
| 158 |
are written first. In general, this mode performs slightly slower than |
|---|
| 159 |
writeback but significantly faster than journal mode. |
|---|
| 160 |
|
|---|
| 161 |
* journal mode |
|---|
| 162 |
data=journal mode provides full data and metadata journaling. All new data is |
|---|
| 163 |
written to the journal first, and then to its final location. |
|---|
| 164 |
In the event of a crash, the journal can be replayed, bringing both data and |
|---|
| 165 |
metadata into a consistent state. This mode is the slowest except when data |
|---|
| 166 |
needs to be read from and written to disk at the same time where it |
|---|
| 167 |
outperforms all other modes. |
|---|
| 168 |
|
|---|
| 169 |
Compatibility |
|---|
| 170 |
------------- |
|---|
| 171 |
|
|---|
| 172 |
Ext2 partitions can be easily convert to ext3, with `tune2fs -j <dev>`. |
|---|
| 173 |
Ext3 is fully compatible with Ext2. Ext3 partitions can easily be mounted as |
|---|
| 174 |
Ext2. |
|---|
| 175 |
|
|---|
| 176 |
|
|---|
| 177 |
External Tools |
|---|
| 178 |
============== |
|---|
| 179 |
See manual pages to learn more. |
|---|
| 180 |
|
|---|
| 181 |
tune2fs: create a ext3 journal on a ext2 partition with the -j flag. |
|---|
| 182 |
mke2fs: create a ext3 partition with the -j flag. |
|---|
| 183 |
debugfs: ext2 and ext3 file system debugger. |
|---|
| 184 |
ext2online: online (mounted) ext2 and ext3 filesystem resizer |
|---|
| 185 |
|
|---|
| 186 |
|
|---|
| 187 |
References |
|---|
| 188 |
========== |
|---|
| 189 |
|
|---|
| 190 |
kernel source: <file:fs/ext3/> |
|---|
| 191 |
<file:fs/jbd/> |
|---|
| 192 |
|
|---|
| 193 |
programs: http://e2fsprogs.sourceforge.net/ |
|---|
| 194 |
http://ext2resize.sourceforge.net |
|---|
| 195 |
|
|---|
| 196 |
useful links: http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html |
|---|
| 197 |
http://www-106.ibm.com/developerworks/linux/library/l-fs7/ |
|---|
| 198 |
http://www-106.ibm.com/developerworks/linux/library/l-fs8/ |
|---|