A Modern, Object-Oriented File System Family for E-comOS
E-comOS File Systems is a family of modern, object-oriented file systems designed specifically for the E-comOS operating system. This project provides three distinct file system implementations tailored to different storage scenarios, all built on a unified object-oriented foundation.
Target: High-capacity storage devices (256GiB and above)
Use Case: Modern systems with large storage requirements
Key Features:
-
No practical storage limits
-
Advanced performance optimizations
-
Comprehensive data integrity features
-
Scalable architecture for future expansion
Target: Smaller storage devices (256GiB and below)
Use Case: Legacy systems, embedded devices, and resource-constrained environments
Key Features:
-
Lightweight design with minimal resource footprint
-
Optimized for small file storage
-
Fast mount and boot times
-
Simplified maintenance
Limitations:
-
Maximum folder size: 20GiB
-
Path length limit: 1000 characters (excluding separator '>')
-
File size: No practical limit
Target: Swap partitions
Use Case: Memory extension for systems with limited RAM
Key Features:
-
Optimized for fast memory-disk data exchange
-
Low-latency design
-
Efficient memory page management
-
Optional data compression
All file systems are built on a simple yet powerful object model:
-
File Object: Represents files with properties and methods
-
Folder Object: Represents directories that can contain other objects
Consistent API across all file systems:
// Core object operations
FileObject\* create\_file(const char\* path, const void\* data, size\_t size);
FolderObject\* create\_folder(const char\* path);
int delete\_object(const char\* path);
int rename\_object(const char\* old\_path, const char\* new\_path);
// Object access
FileObject\* get\_file(const char\* path);
FolderObject\* get\_folder(const char\* path);
List\* list\_objects(const char\* path);
-
Metadata Integrity: Built-in checksums and validation
-
Extensible Attributes: Custom metadata support
-
Unified Path Syntax: Using '>' as path separator (e.g., root>home>user)
-
Cross-Compatibility: Data migration tools between file systems
-
Block Size: Configurable (4KB, 8KB, 16KB, 32KB, 64KB)
-
Addressing: Three-level indirect addressing
-
Maximum File Size: Effectively unlimited (theoretical EB scale)
-
Journaling: Yes (for data integrity)
-
Checksums: SHA-256 for metadata, CRC32 for data blocks
-
Block Size: Fixed at 4KB
-
Addressing: Single-level indirect addressing
-
Maximum Storage: 256GiB
-
Journaling: No (to reduce overhead)
-
Checksums: CRC32 for metadata and data
-
Block Size: Matches system page size (typically 4KB)
-
Page Management: LRU-based page replacement
-
Lookup Mechanism: Hash table for fast page 查找
-
Compression: Optional LZ4 compression
-
Encryption: Optional AES-256 encryption
Core object model design
NEFS format specification
EFS format specification
WM2UD format specification
Reference implementation (in progress)
Test suite development
-
Complete reference implementation (Q1 2025)
-
Performance optimization (Q2 2025)
-
Data migration tools (Q3 2025)
-
File system utilities (Q4 2025)
-
E-comOS development environment
-
ECC compiler (Version 1.0 or later)
-
Standard build tools
\# Clone the repository
git clone https://github.com/E-comOS-Operation-System/file-systems.git
cd file-systems
\# Build the file system drivers
make all
\# Install the drivers
sudo make install
\# Format a device with NEFS
mkfs.nefs /dev/sda1
\# Mount the file system
mount -t nefs /dev/sda1 /mnt
\# Format a device with EFS
mkfs.efs /dev/sdb1
\# Mount the file system
mount -t efs /dev/sdb1 /home
\# Format a swap partition with WM2UD
mkswap.wm2ud /dev/sdc1
\# Activate the swap partition
swapon /dev/sdc1
We welcome contributions to the E-comOS File Systems project! Please read our Contributing Guidelines before submitting pull requests.
-
Code development
-
Documentation improvement
-
Testing and bug reporting
-
Feature suggestions
-
Follow the existing code style
-
Write comprehensive tests
-
Document all public APIs
-
Create detailed commit messages
This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
-
Inspired by modern file systems like ZFS, Btrfs, and ext4
-
Built for the E-comOS operating system
-
Designed with simplicity and performance in mind
For questions, suggestions, or bug reports, please:
-
Open an issue on GitHub
-
Join our Discord community
-
Email us at dev@e-comos.org
E-comOS File Systems - Making storage simple, efficient, and future-proof.