Linux. Можно ли создать файловую систему в памяти (ramdisk/tmpfs) для буферизации/кэширования данных с диска?

awk '{gsub(/\./,"")sub(/,/," "); print $1"00",$2}' file
(45679900 567898)
(56783300 673434)
0
05.05.2020, 22:39
2 ответа

Возможно, вы захотите изучить OverlayFS . Оверлейная файловая система позволит вам объединить точку монтирования диска и точку монтирования вашего виртуального диска в одну файловую систему (— оверлей ).

OverlayFS работает с копией -при записи -, поэтому, если ваш верхний уровень является пустым виртуальным диском во время загрузки, данные будут записываться на виртуальный диск только тогда, когда вы открываете файлы с разрешениями на запись. Теоретически вы можете touchскопировать в оперативную память любой из файлов, который захотите.

Хотя, должен добавить, в Linux уже есть надежное дисковое кэширование . Вы можете хотеть удостовериться, что Вы не изобретаете велосипед здесь.

0
28.04.2021, 23:16

Это не ответ на ваш вопрос, но может помочь решить описанную проблему. Вы хотите

store a copy of the disk contents in memory to speed up the processing time required.

Вам не нужно ничего делать. Это происходит по умолчанию.

Попробуйте сами:

dd if=/dev/urandom bs=1M count=1M of=test.bin # create a file of 10 GB random data
echo 3 | sudo tee /proc/sys/vm/drop_caches # drop caches
dd if=test.bin bs=1G count=1 of=/dev/null # read 1 GB of data
dd if=test.bin bs=1G count=1 of=/dev/null # read again

Первое чтение занимает некоторое время:

1073741824 bytes (1.1 GB, 1.0 GiB) copied, 10,43 s, 103 MB/s

После первого чтения данные остаются в памяти. Последующие чтения выполняются намного быстрее:

1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.320478 s, 3.4 GB/s

Linux с радостью поддержит ваши усилия, сохраняя содержимое недавно прочитанного файла -в памяти до тех пор, пока имеется достаточно свободной памяти.

0
28.04.2021, 23:16

Теги

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