Frequently Asked Questions
(→Why did I get two different output for blkid?) |
(→How do I mount a fresh new storage device as ext4?) |
||
Line 16: | Line 16: | ||
Using the newly installed e2fsprogs (using the OS default mke2fs most likely will fail - just compare the message returne d with the following messages): | Using the newly installed e2fsprogs (using the OS default mke2fs most likely will fail - just compare the message returne d with the following messages): | ||
− | '''cd misc/<br> | + | '''cd misc/<br>''' |
− | ./mke2fs -E test_fs /dev/sdb1<br> | + | '''./mke2fs -E test_fs /dev/sdb1<br>''' |
− | ''' | + | |
<pre> | <pre> | ||
mke2fs 1.40.8 (13-Mar-2008) | mke2fs 1.40.8 (13-Mar-2008) | ||
Line 42: | Line 41: | ||
</pre> | </pre> | ||
− | cd ../debugfs/<br> | + | '''cd ../debugfs/<br>''' |
− | ./debugfs -w /dev/sdb1<br> | + | '''./debugfs -w /dev/sdb1<br>''' |
debugfs 1.40.5 (27-Jan-2008)<br> | debugfs 1.40.5 (27-Jan-2008)<br> | ||
− | debugfs: set_super_value s_flags 4<br> | + | debugfs: '''set_super_value s_flags 4<br>''' |
− | debugfs: quit<br> | + | debugfs: '''quit<br>''' |
− | cd ../misc/<br> | + | '''cd ../misc/<br>''' |
− | ./blkid /dev/sdb1<br> | + | '''./blkid /dev/sdb1<br>''' |
/dev/sdb1: UUID="3aa983ef-0dcd-474d-a9d3-2660ff6ef3e7" TYPE="ext4dev"<br> | /dev/sdb1: UUID="3aa983ef-0dcd-474d-a9d3-2660ff6ef3e7" TYPE="ext4dev"<br> | ||
− | mkdir /mnt/test<br> | + | '''mkdir /mnt/test<br>''' |
− | ./tune2fs -j /dev/sdb1<br> | + | '''./tune2fs -j /dev/sdb1<br>''' |
− | mount -t ext4dev /dev/sdb1 /mnt/test<br> | + | '''mount -t ext4dev /dev/sdb1 /mnt/test<br>''' |
− | df<br> | + | |
+ | To verify the mounted filesystem: | ||
+ | |||
+ | '''df<br>''' | ||
=== Why did I get two different output for blkid? === | === Why did I get two different output for blkid? === |
Revision as of 15:11, 28 March 2008
This page is a stub |
---|
You can help Ext2/3/4 Wiki by expanding it. |
Getting Started
Where do I get the latest version of e2fsprogs?
The latest version of e2fsprogs can be found at Soureforge or at kernel.org.
How do I build e2fsprogs?
The INSTALL file in the top of the source tree gives more detailed information, but e2fsprogs uses a standard configure script, so the standard "./configure; make" will build the e2fsprogs binaries. Note that if you wish to build the ELF shared libraries, you need to add the "--enable-elf-shlibs" option to the configure invocation.
How do I mount a fresh new storage device as ext4?
For example, if the new device has been detected as /dev/sdb1 (check "dmesg" output):
Using the newly installed e2fsprogs (using the OS default mke2fs most likely will fail - just compare the message returne d with the following messages):
cd misc/
./mke2fs -E test_fs /dev/sdb1
mke2fs 1.40.8 (13-Mar-2008) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 126976 inodes, 506044 blocks 25302 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67633152 62 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 22 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
cd ../debugfs/
./debugfs -w /dev/sdb1
debugfs 1.40.5 (27-Jan-2008)
debugfs: set_super_value s_flags 4
debugfs: quit
cd ../misc/
./blkid /dev/sdb1
/dev/sdb1: UUID="3aa983ef-0dcd-474d-a9d3-2660ff6ef3e7" TYPE="ext4dev"
mkdir /mnt/test
./tune2fs -j /dev/sdb1
mount -t ext4dev /dev/sdb1 /mnt/test
To verify the mounted filesystem:
df
Why did I get two different output for blkid?
When executing:
blkid /dev/sdb2 /dev/sdb2: UUID="5b8706af-208c-4e4c-a3bf-16f1c0864c82" TYPE="ext2"
But when the latest e2fsprogs' version of blkid is executed:
/download/e2fsprogs/e2fsprogs/misc>./blkid /dev/sdb2 /dev/sdb2: UUID="5b8706af-208c-4e4c-a3bf-16f1c0864c82" SEC_TYPE="ext2" TYPE="ext4dev"
So this explained why you get different output.
Why do I get "EXT4-fs: sdb1: not marked OK to use with test code." in my dmesg?
This error arises from not executing the "mke2fs -E test_fs /dev/sdb1", which will label the partition as test_fs. This signature is currently checked for in the ext4 development source codes.
How do I turned off the mballoc feature?
By default "mount" will enable mballoc feature when mounting. To turn it off:
mount -t ext4dev -o data=writeback,delalloc,extents,nomballoc /dev/sdb1 /mnt/test
How do I turned off the extent feature?
By default "mount" will enable extent feature when mounting. To turn it off:
mount -t ext4dev -o data=writeback,delalloc,noextents,mballoc /dev/sdb1 /mnt/test
CAUTION: Once extent feature has been turned on, it is not possible to mount it as ext3 anymore.
Why do I get "EXT4-fs: Unrecognized mount option "delalloc" or missing value"?
Please download the ext4 version from the git patchset, instead of using the kernel source.
What is mballoc feature? After I mounted a partition as mballoc, can I remount it as nomballoc?
Yes, it is possible, just dismount the partition first, and execute "mount" with the nomballoc feature.
Understanding how it works
What are the new features in Ext4 (vs Ext2/3)?
How do I test the features in Ext4?
What external tools are available for testing Ext4 FS?
One commonly known simple tool is fsfuzzer: http://www.digitaldwarf.be/products/mangle.c, and its content is reproduced here:
/* trivial binary file fuzzer by Ilja van Sprundel. It's usage is very simple, it takes a filename and headersize as input. it will then change approximatly between 0 and 10% of the header with random bytes (biased towards the highest bit set) obviously you need a bash script or something as a wrapper ! so far this broke: - libmagic (used file) - preview (osX pdf viewer) - xpdf (hang, not a crash ...) - mach-o loading (osX 10.3.7, seems to be fixed later) - qnx elf loader (panics almost instantly, yikes !) - FreeBSD elf loading - openoffice - amp - osX image loading (.dmg) - libbfd (used objdump) - libtiff (used tiff2pdf) - xine (division by 0, took 20 minutes of fuzzing) - OpenBSD elf loading (3.7 on a sparc) - unixware 713 elf loading - DragonFlyBSD elf loading - solaris 10 elf loading - cistron-radiusd - linux ext2fs (2.4.29) image loading (division by 0) - linux reiserfs (2.4.29) image loading (instant panic !!!) - linux jfs (2.4.29) image loading (long (uninteruptable) loop, 2 oopses) - linux xfs (2.4.29) image loading (instant panic) - windows macromedia flash .swf loading (obviously the windows version of mangle needs a few tweaks to work ...) - Quicktime player 7.0.1 for MacOS X - totem - gnumeric - vlc - mplayer - python bytecode interpreter - realplayer 10.0.6.776 (GOLD) - dvips */ #include <stdio.h> #include <sys/types.h> #include <sys/mman.h> #include <fcntl.h> #define DEFAULT_HEADER_SIZE 1024 #define DEFAULT_NAME "test2" int getseed(void) { int fd = open("/dev/urandom", O_RDONLY); int r; if (fd < 0) { perror("open"); exit(0); } read(fd, &r, sizeof(r)); close(fd); return(r); } int main(int argc, char **argv) { int fd; char *p, *name; unsigned char c; unsigned int count, i, off, hsize; if (argc < 2) { hsize = DEFAULT_HEADER_SIZE; name = DEFAULT_NAME; } else if (argc < 3) { hsize = DEFAULT_HEADER_SIZE; name = argv[1]; } else { hsize = atoi(argv[2]); name = argv[1]; } fd = open(name, O_RDWR); if (fd < 0) { perror("open"); exit(0); } p = mmap(0, hsize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if ((int) p == -1) { perror("mmap"); close(fd); exit(0); } srand(getseed()); count = (unsigned) rand() % (hsize / 10); for (i = 0; i < count; i++) { off = rand() % hsize; c = rand() % 256; /* we want the highest bit set more often, in case of signedness issues */ if ( (rand() % 2) && c < 128) c |= 0x80; p[off] = c; } close(fd); munmap(p, hsize); }
Its fuller content is packaged here (which shell scripts to run the compiled programs): [1]