Archil’s FUSE-based file system is designed to be fully compatible with all applications which run on a local, POSIX
file system. If you discover behavior that you believe deviates from POSIX, please contact us by emailing
[email protected], and we will address the underlying issue. We are continuously testing
our adherence to POSIX, using the same test suite as the XFS file systems.
POSIX compatibility details
Archil disks are designed to be broadly compatible with POSIX semantics, even when the underlying data sources are not POSIX
compatible, like Amazon S3. When needed, the Archil storage service emulates file operations on
data sources. Today, Archil supports the following POSIX features:
- All read and write operations, including random writes and appends
- Symbolic links (
ln -s)
- Hard Links (
ln)
- Renames, including directory renames (
mv)
- POSIX locks, including
flock and fcntl
- File modes
- File ownership
- Extended attributes (with the
--enable-xattrs flag)
We are actively working on adding support for the following features:
- File ACLs
- Files greater than 20 GiB in size
- Directories with more than 20,000 entries
- Directories with a depth that exceeds the data source’s key limit (1024 characters in Amazon S3)
- renameat2 flags, such as RENAME_WHITEOUT
- Anonymous files (unlink after opening)
Application support
As a result of our broad compatibility with POSIX, Archil is compatible with all applications which run on
a local, POSIX file system. This includes databases such as PostgreSQL, MySQL, and SQLite.
Mounting with containers
Archil disks can be mounted within containers using the same mount command as on the host system. The Archil
client needs to be installed in the container, and the container needs to be run with the --privileged flag or with the SYS_ADMIN capability and access to the FUSE device (/dev/fuse). For example:
docker run --privileged -v /dev/fuse:/dev/fuse -v /mnt/archil:/mnt/archil archil/archil:latest
When mounting from within a container, some operations on the file system may be blocked by seccomp policies. For example,
attempting to execute a binary file from the disk will fail with an EACCESS error.
To avoid permissions issues, it may be preferable to mount the disk from the host system and then share the mount point
with a bind mount into the container. For example:
archil mount <disk-name> /mnt/archil --region aws-us-east-1
docker run -v /mnt/archil:/mnt/archil archil/archil:latest
Regardless of whether the disk is mounted from within a container or bind-mounted off the host system, you can use
the Archil client inside of the container to manage the ownership of files and directories on the disk. For example:
archil checkout /mnt/archil/my-file.txt