LINUX.ORG.RU
решено ФорумAdmin

Кешировать все записи на диск, по-настоящему записать лишь после размонтирования

 eatmydata,


1

2

Дано: медленный накопитель маленького объема (2 ГБ), на котором хотелось бы избежать random access чтения-записи.

Ищется: решение, позволяющее произвести все нужные манипуляции на файлсистеме из этого накопителя, и лишь в самом конце произвести запись на него.

До этого читал все два гигабайта в образ, работал с образом, и писал обратно на накопитель. Это несколько избыточно, т.к. модифицируется лишь несколько сот мегабайт.

Хватит ли для минимизации записи (= тормозов) во время манипуляций запускать всё, что делаю с этим накопителем, через eatmydata?

Чёт одна наркомания с lvm в голову приходит, варианты такие:

  1. Использовать нативный кеш lvm, там есть режим расчитаный persistent ram, по идее то что надо
  2. Создать lv на все 2гб, создать CoW снапшот в RAM, смерджить его перед завершением
sparks ★★★★
()

В качестве костыля, можно задрать в бесконечность период сброса буферов для этого устройства (опция монтирования commit), а после всех манипуляций просто сделать sync вручную.

alex1101
()
Последнее исправление: alex1101 (всего исправлений: 2)

Первое, что приходит на ум - это в ram создать

tmpfs on /var/tmp/myram type tmpfs (rw,nosuid,noatime,size=41943040k,mode=777,inode64)

При загрузке с медленного носителя rsync’ать дату в myram. При перезагрузке синкать обратно. Штатными средствами типа vm.dirty.* не получится это сделать т.к рано или поздно кэш надо сбрасывать на диск. А более 60 на корень и более 600 на other - появляется глюква

serg002 ★★★
()
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от mky

Во, это похоже на то что нужно.

Хотя нарушает хардлинки, а значит не исключено, что рефлинки тоже - что на моей любимой CoW-файлсистеме нежелательно.

Тем не менее, первый кандидат на звание искомого отмечается.

token_polyak ★★★★★
() автор топика
Последнее исправление: token_polyak (всего исправлений: 1)

Наконец-то пришло озарение: qemu-img.

То есть: создать образ qcow2 с настоящим девайсом в качестве backing file, смонтировать используя qemu-nbd, сделать всё что нужно, а затем - qemu-img commit.

token_polyak ★★★★★
() автор топика