Comparison of file systems

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску

Сравнение файловых систем Linux

Приведено сравнение файловых систем JFS, BTRFS, EXT4 для последующей адаптации к использованию с длинными именами файлов.

JFS BTRFS
Ограничение 255 байт 255 байт
Достоинства
Недостатки
Видимые ограничения в коде /fs/jfs/jfs_filsys.h:
#define JFS_NAME_MAX	255

При всем этом jfs хранит имя в строке формата Unicode:

struct component_name {
	int namlen;
	wchar_t *name;
};

/fs/btrfs/ctree.h:
/*
* we can actually store much bigger names, but lets not confuse the rest
* of linux
*/
#define BTRFS_NAME_LEN 255
После изменения ограничения Создан файл с длинным русским именем Создан файл с длинным русским именем
Тест функций glibc Не получилось перемонтировать систему, ошибка:

mount: wrong fs type, bad option, bad superblock on /dev/sdc1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so

Вывод dmesg | tail(сразу после создания файла, при монтировании ошибок не выдается):
[ 337.738583] ERROR: (device sdc1): JFS:Dtree error: ino = 2, bn=40, index = 1
[ 337.738651] ERROR: (device sdc1): JFS:Dtree error: ino = 2, bn=40, index = 3

[root@host-35 btrfs]# ./glibc_vlfn_test

creat_test: working
access_test: working
chmod_test: working
open_test: working
stat_test: working
read_open_dir_test: working
unlink_test: working
creat_test: working
symlink_test: working
chmod_test: working
fopen_test: working
truncate_test: working
link_test: working
remove_test: working
mkdir_test: working
rmdir_test: working
Errors: 0
Однако, файл не распознается стандартными командам типа ls.

EXT4 XFS
Ограничение 255 байт 255 байт
Достоинства
Недостатки
Видимые ограничения в коде /fs/ext4/ext4.h:
/*
 * Structure of a directory entry
 */
#define EXT4_NAME_LEN 255
/fs/xfs/xfs_types.h:
/*
 * MAXNAMELEN is the length (including the terminating null) of
 * the longest permissible file (component) name.
 */
#define MAXNAMELEN	512
После изменения ограничения Пока не проводилось Создан файл с длинным русским именем
Тест функций glibc Не удалось перейти в каталог с созданным файлом, но на следующий день удалось:

[root@host-35 xfs]# ./glibc_vlfn_test creat_test: working
access_test: working
chmod_test: working
open_test: working
stat_test: working
read_open_dir_test: File isn't found
unlink_test: unlink() error: No such file or directory
creat_test: working
symlink_test: working
chmod_test: chmod() error: Input/output error
fopen_test: fopen() error: Input/output error
truncate_test: truncate() error: Input/output error
link_test: link() error: Input/output error
remove_test: remove() error: Input/output error
mkdir_test: mkdir() error: File exists
rmdir_test: rmdir() error: Not a directory
Errors: 12
Средства glibc явно не могут найти созданные файлы.