Мы настроили FlashCache, чтобы списать назад. Мы видим, что грязные блоки разрываются до нескольких десятков тысяч, но он быстро работает до нескольких тысяч или даже несколько сотен, когда все успокоится. Вот наши настройки:
dev.flashcache.sdb1+md0p3.cache_all=1
dev.flashcache.sdb1+md0p3.clean_on_read_miss=0
dev.flashcache.sdb1+md0p3.clean_on_write_miss=0
dev.flashcache.sdb1+md0p3.dirty_thresh_pct=10
dev.flashcache.sdb1+md0p3.do_pid_expiry=0
dev.flashcache.sdb1+md0p3.do_sync=1
dev.flashcache.sdb1+md0p3.fallow_clean_speed=100
dev.flashcache.sdb1+md0p3.fallow_delay=1
dev.flashcache.sdb1+md0p3.fast_remove=1
dev.flashcache.sdb1+md0p3.io_latency_hist=0
dev.flashcache.sdb1+md0p3.lru_hot_pct=75
dev.flashcache.sdb1+md0p3.lru_promote_thresh=2
dev.flashcache.sdb1+md0p3.max_clean_ios_set=300
dev.flashcache.sdb1+md0p3.max_clean_ios_total=2000
dev.flashcache.sdb1+md0p3.max_pids=100
dev.flashcache.sdb1+md0p3.new_style_write_merge=0
dev.flashcache.sdb1+md0p3.pid_expiry_secs=60
dev.flashcache.sdb1+md0p3.reclaim_policy=0
dev.flashcache.sdb1+md0p3.skip_seq_thresh_kb=0
dev.flashcache.sdb1+md0p3.stop_sync=0
dev.flashcache.sdb1+md0p3.zero_stats=0
Наилучшее сопротивление повреждению на одной карте SD предлагает BTRFS в режиме RAID1 с автоматической очисткой, выполняемой каждый заранее определенный период времени.
Преимущества:
Вот как это сделать:
Я запускаю свой RaspberurePi на ArchARM linux, и моя карта находится в устройстве чтения SD, поэтому измените эти инструкции соответствующим образом для других интерфейсов distros и/dev.
Вот пример компоновки раздела:
/dev/mmcblk0p1: fat32 boot partition
/dev/mmcblk0p2: to be used as btrfs partition
/dev/mmcblk0p3: to be used as btrfs partition (mirrored with the above)
/dev/mmcblk0p4 (optional): swap
Чтобы получить btrfs в RAID1, вы создаете файловую систему так:
mkfs.btrfs -m raid1 -d raid1 /dev/mmcblk0p2 /dev/mmcblk0p3
Затем вы rsync -aAXv
в нее ваша ранее резервная система.
Для загрузки из BTRFS в raid1 необходимо изменить initramfs . Поэтому необходимо выполнить следующие действия, пока система работает в старой файловой системе.
Малина обычно не использует mkinitcpio, поэтому его необходимо установить. Затем необходимо добавить «btrfs» в массив MODULES в файле mkinitcpio.conf и повторно создать initramfs с помощью
mkinitcpio -g /boot/initrd -k YOUR_KERNEL_VERSION
Чтобы узнать, что вводить вместо YOUR_KERNEL_VERSION, запустите
ls /lib/modules
При обновлении ядра НЕОБХОДИМО заново создать initramfs перед перезагрузкой.
Затем необходимо изменить загрузочные файлы RPi.
В файле cmdline.txt необходимо указать
root=/dev/mmcblk0p2 initrd=0x01f00000 rootfstype=btrfs
, а в файле config.txt необходимо добавить
initramfs initrd 0x01f00000
После выполнения всех этих действий и успешной загрузки в систему btrfs RAID1 остается только установить периодическую очистку (каждые 3-7 дней) с помощью системного таймера (предпочтительно) или cron (dcron), например:
btrfs scrub start /
В файловой системе будет выполняться сравнение контрольных сумм всех файлов и их исправление (замена правильной копией), если обнаружится повреждение.
Сочетание RAID1 BTRFS, одиночной среды и Raspberry Pi делает это довольно загадочное вещество. Потребовалось некоторое время и работа, чтобы собрать все части вместе, но вот оно.
-121--11839-Я думаю, вы должны попробовать это:
./gunzip_files.sh & & ./grep_data_from_files.sh
Он выполняет второй сценарий, только если первый вышел без ошибок.
-121--244326-Я бы установил Лак перед веб-сервером (или другим кэшем): https://www.varnish-cache.org/
Я написал небольшой блог на лак 3 здесь: http://aarvik.dk/varnish-cache-in-general-and-simple-static-files-configuration/
Это определенно поможет: -)