IceFileSystemBy Leif Salomonsson
Design goals and priorities
64bit disk filesystem supporting a high number of useful features, by a design prioritised like following: 1. Reliability 2.Scalability 3.Efficiency 4.Speed
- 64bit file/partition/extent sizes (actually very close to 2^63 bytes). No self imposed fragmentation of large files unless there is not enough contigious space available.
- All metadata on disk is checksummed. This means any errors on disk will be detected a lot quicker.
- Meta level jornalling. Journalling makes operations to disk atomic.
- Hardlinks (directory and file), softlinks, notification, examine all, record locking, file comments. Fully supported.
- Supports sector sizes from 2^9 to 2^31, atleast in theory. Filesystem layout on disk is not dependant on a specific underlying sector size. Filesystem may however place data on disk so that it is optimal for the sector size used.
- Supports blocksizes from 512 bytes to 32 KiB. Still works very well with small blocksizes though.
- Filesystem does not get slower for larger partitions (scales very well), or when heavily fragmented.
- No limit in # of files/dirs in partition/dirs.
- Handles removable media.
- Supports optional recycle dir.
- Supports automatically truncated log files and file change log.
- Wastes only 128k (and preallocates another 128k for meta space) for filesystem administration data, regardless of partition size.
- Dynamic handling of cache memory. Memory is given back (progressivly) to system when not used.
- Extent based space and file data layout.
- Main space allocator is based on the TLSF algorithm, adapted for on-disk storage.
- All metadata except extent headers are located in special extents called pools and use a local bitmap to keep track of free meta space. Metadata is very compact.
- Implementation uses two level caching (sector + metadata).
- Implementation supports preallocation to minimize fragmentation (and increase speed) when several files are concurrently written to.
- Originally was supposed to have a tree-like lookup mechanism for directory entries, but this was reverted to a simple hash table for the 2.x version because the implementation was not finnished.
- FSFormat - Generic formatting application (MUI)
- IceConfig - IceFS configuration application (MUI)
- IceInfo - Displays locks and notifys on IceFS volumes (MUI)
- IceCheck - Check integrity of on-disk layout (CLI)
- LogFileCtrl - Create and change size of logfiles (CLI)
- IceSalv - Simple file salvage tool (CLI)
- ShowLinks - Lists hard and soft links (CLI)
Leif Salomonsson, dev blubbedev net