Как использовать tmpfs и SSD для интеллектуального кэша

1097
Ilya Georgievsky

Я хочу создать быстрый логический диск под Linux для хранения временных файлов. Эти файлы я не боюсь потерять.

На моей машине у меня 128 ГБ ОЗУ и 512 ГБ SSD диска. Поэтому я хочу использовать 50% моей оперативной памяти в качестве tmpfs и 50% SSD-диска для этого кэша, потому что иногда 50% моей оперативной памяти недостаточно для кэширования, а когда диск tmpfs заполнен, я хочу использовать 50% моего SSD для записывать файлы Но когда на tmpfs достаточно места, он должен использовать только tmpfs.

Как я могу достичь этой стратегии для моего кеша? Может быть какой-нибудь LVM с приоритетами? Как я могу настроить это?

0

1 ответ на вопрос

0
Sidias-Korrado
  1. first you should be clear if you want a cache or fast storage, storage cannot be at the same time used as a cache and as storage too.

  2. you did not mention what should happen in the case if you delete a file from the ram storage part when it is full and there are files on ssd

    • should the files move automatically from ssd (even partial?)
    • or stay at current location
  3. and what about the case of a file partially spilling over to ssd?

    • should it be whole on ssd
    • or partially on ramdisk

maybe have a read http://blog-vpodzime.rhcloud.com/?p=45

my suggestion is : use ssd space as filesystem and leave memory free - it will be automatically used as file cache by OS

another possibility is using ZFS on ssd, then set ARC size to desired memory cache size

1. Я хочу максимально быстрое хранение 2. Хороший вопрос, я просто хочу не беспокоиться об этом. Может быть, это не «файл гранулирован», а «кластеризован гранулярно», поэтому, если у нас есть свободное место на RAM-диске, блоки следующей записи должны записываться на RAM-диск. 3. Ответ в предыдущем разделе О кеше ОС: насколько я знаю, кеш ОС имеет некоторые гарантии того, что информация не будет потеряна, поэтому ОС иногда сбрасывает блокировку на медленный диск. Я не хочу этого снижения производительности Ilya Georgievsky 8 лет назад 0
снижение производительности происходит при записи и может быть уменьшено с отключением синхронного доступа, зависит от выбранной файловой системы, посмотрите на параметры, такие как data = writeback, commit = nrsec, nobarrier Sidias-Korrado 8 лет назад 0
Вы пробовали настроить параметры, такие как https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/ Sidias-Korrado 8 лет назад 0
также не используйте опцию сброса ext4 на ssd, это медленно и лучше выполнять fstrim через регулярные промежутки времени Sidias-Korrado 8 лет назад 0
я думаю, что наиболее реалистичное решение - это иметь две файловые системы и позволить прикладному уровню решать, какой использовать Sidias-Korrado 8 лет назад 0
другой вариант - сделать слой FUSE, но FUSE медленный Sidias-Korrado 8 лет назад 0
другой вариант - отслеживать свободное место tmpfs, а когда оно слишком мало, перемещать файлы в ssd, размещать символические ссылки и перемещаться назад, когда места достаточно, используя inotify, вероятно, лучше всего написанный на python Sidias-Korrado 8 лет назад 0

Похожие вопросы