Вы не особо много говорите о том, что пытаетесь сделать или что это за данные, но вот моя идея - предполагающая, что все слова уникальный. Вы не говорите, что беспокоитесь об эффективном использовании дискового пространства.
Файловая система Ext4. Храните каждое слово в отдельном файле в одном большом каталоге. Позвольте файловой системе найти их за вас - это очень просто для вас (просто откройте нужный файл по имени), а файловая система имеет эффективный метод поиска файлов.
Вам необходимо убедиться, что в вашей файловой системе достаточно свободных индексных дескрипторов - по одному на файл, поэтому вам потребуется 250 000 свободных индексов: du -i
.
Избегайте выполнения ls
или других действий, которые должны перечислять файлы (например, открывать их в файловом браузере), и производительность должна быть хорошей.
Если вы хотите исправить это, а не просто пробуете debugfs
, вы можете использовать fsck . для тебя. Отметьте файловую систему как грязную и запустите fsck -y
, чтобы изменить имя файла:
$ debugfs -w -R "dirty" /tmp/ext4fs
$ fsck -y /tmp/ext4fs
...
/tmp/ext4fs was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'filen/ame' in / (2) has illegal characters in its name.
Fix? yes
...
$ debugfs -w -R "ls" /tmp/ext4fs
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen.ame
Если вы переместите файл в каталог, вы сможете удалить каталог с файлом.
mkdir foo
mv filen* foo
rm -rf foo
Поздравляем с запуском fsck; если по какой-то причине это не сработало, ответ будет следующим: ls -i1
, за которым следует umount
, а затем clri
.
Ссылка: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
Я действительно проверял этот метод.