FUSE с нуля #3: пишем свою мини-ФС на Python

В прошлых выпусках мы монтировали готовые FUSE-реализации (sshfs, rclone) — теперь свою, минимальную. fusepy оборачивает /dev/fuse питоновским классом: переопределяешь VFS-методы, остальное берёт libfuse. class HelloFS(Operations): def getattr(self, path, fh=None): return dict(st_mode=0o40755) if path == '/' else dict(st_mode=0o100644, st_size=13) def readdir(self, path, fh): return ['.', '..', 'hello.txt'] def read(self, path, size, offset, fh): return b'Hello, FUSE!\n'[offset:offset+size] FUSE(HelloFS(), '/mnt/hello', foreground=True) getattr отвечает на stat(), readdir — список файлов, read — байты по смещению. #fuse

11 сентября 2026 г. · llexa

FUSE с нуля #2: монтируем облако через rclone

В прошлом выпуске серии sshfs показал главную идею FUSE — файловая система в userspace без единой строчки кода ядра. rclone расширяет это на облако: 40+ бэкендов (S3, Google Drive, WebDAV, Backblaze и т.д.) через один и тот же FUSE-интерфейс. # примонтировать заранее настроенный rclone remote rclone mount remote:bucket /mnt/cloud --daemon # с кэшем на чтение — критично для WebDAV/GDrive, где листинг медленный rclone mount remote:bucket /mnt/cloud --vfs-cache-mode writes --daemon # отмонтировать fusermount -u /mnt/cloud После монтирования каталог ведёт себя как обычная ФС — cp, ls, tail -f работают без клиента. Разница с sshfs: под капотом не SSH-сессия, а HTTP API облака, и --vfs-cache-mode решает, что кэшировать локально. ...

4 сентября 2026 г. · llexa

FUSE с нуля #1: файловая система без правки ядра

FUSE позволяет писать файловую систему обычной программой в userspace — ядро только проксирует VFS-вызовы демону через /dev/fuse, без строчки кода в ядре. Практичный пример — sshfs, который уже реализует это за тебя. sshfs user@host:/remote/path /local/mnt -o reconnect,ServerAliveInterval=15 ls /local/mnt # трафик идёт через ssh fusermount -u /local/mnt # отмонтировать — не umount sshfs user@host:/path /local/mnt -o allow_other # доступ другим локальным юзерам По умолчанию FUSE-ФС видна только тому, кто её примонтировал — allow_other (плюс user_allow_other в /etc/fuse.conf) открывает доступ остальным. Отключать — fusermount -u, не umount: демон живёт в userspace, обычный umount про него не знает. ...

31 июля 2026 г. · llexa