SSD/Flash и плагин Flashmemory: настройка и доработка

Список разделов Openmediavault по-русски Плагины

Описание: Установка и настройка плагинов в OpenMediaVault.
Здесь обсуждаем и задаем вопросы только по дополнениям и плагинам.
Модератор: Major

#1 Aleon » 12.02.2016, 22:11

Первичная настройка SSD или флешки

Для начала скажу, что как только я приобрёл промышленный SSD для своего Thecus'а и установил OMV, я сразу дал понять системе,
что носитель "non-rotating" и должен работать по алгоритму "deadline". Это можно сделать для любой флешки, если она правильно не распозналась.

/etc/udev/rules.d/99-openmediavault-nonrot.rules:
Код: Выделить всё
#Chinese 44-pin DOM: ATTRS{model}=="CHN PADOM44HS01M"
SUBSYSTEM=="block", KERNEL=="[sh]d[a-z]", ENV{ID_ATA}=="1", ENV{ID_TYPE}=="disk", ENV{ID_BUS}=="ata", ATTRS{model}=="CHN PADOM44HS01M", ATTR{queue/rotational}="0"

ATTRS{model} Вы можете узнать командой
Код: Выделить всё
udevadm info -a --name=/dev/sda

После перезагрузки должно быть так:
cat /sys/block/sda/queue/rotational
Код: Выделить всё
0
сat /sys/block/sda/queue/scheduler
Код: Выделить всё
noop [deadline] cfq

Да, ещё 3 момента:
1. в /etc/fstab для SSD должны добавляться флаги noatime,nodiratime
2. там же нужно закомментировать Swap-раздел на SSD
3. Swap на SSD лучше вообще удалить - будет больше места для редислокации данных (это делает внутренний алгоритм SSD)
__________________________________________________________________________________________

Потом я решил посмотреть, что реально пишется в / (на SSD) и установил пакет inotify-tools для мониторинга ФС
и ts для добавления времени транзакций в лог (пакет moreutils)

Оказалось, что не все директории OMV, в которых идёт частая запись, плагин flashmemory учитывает.

На основе вывода команды
Код: Выделить всё
mount | grep ^folder2ram
я создал такой вот скрипт:
Код: Выделить всё
inotifywait -e modify -e attrib -e close_write -e moved_to -e moved_from -e move -e move_self -e create -e delete -e delete_self -m \
-r / \
@/media \
@/dev \
@/export \
@/proc \
@/sys \
@/run \
@/tmp \
@/var/cache/samba \
@/var/lib/nfs/rpc_pipefs \
@/var/lib/monit \
@/var/lib/ntp \
@/var/lib/openmediavault/rrd \
@/var/lib/php5 \
@/var/lib/rrdcached \
@/var/lib/samba \
@/var/lib/transmission-daemon \
@/var/log \
@/var/spool \
@/var/tmp \
@/root 2>&1 | ts | tee inotify.log
Но имейте в виду, что исключения типа @/var/cache/samba добавляются не сразу, а по мере того, как они переносятся в RAM.

Помониторив некоторое время с помощью inotifywait, я добавил в /etc/folder2ram/folder2ram.conf директории, которых плагин flashmemory не учитывал:
Код: Выделить всё
#################################################################################
#folder2ram main config file, autogenerated by openmediavault flashmemory plugin#
#################################################################################
#
#PROTIP: to make /var/lock or /tmp available as ram filesystems,
#        it is preferable to set the variables RAMTMP, RAMLOCK
#        in /etc/default/tmpfs.
#
#FILE SYSTEM: does nothing, will be implemented in the future. (everything goes to tmpfs for now)
#OPTIONS: does nothing, will be implemented in the future.
#
#<file system>  <mount point>                 <options>
#tmpfs           /var/cache                 #this folder will be activated later after testing is completed
tmpfs           /var/log
tmpfs           /var/cache/samba                      #by Aleon
tmpfs           /var/lib/samba                      #by Aleon
tmpfs           /var/lib/ntp                         #by Aleon
tmpfs           /var/lib/openmediavault/rrd
tmpfs           /var/lib/transmission-daemon   #by Aleon
tmpfs           /var/spool
tmpfs           /var/tmp
tmpfs           /var/lib/rrdcached/
tmpfs           /var/lib/monit
tmpfs           /var/lib/php5               #keep_folder_structure   folder2ram does not have an equivalent yet

Скрипты автозапуска для этих директорий добавляются через
Код: Выделить всё
folder2ram -generate

Ну а далее - перезагрузка, ещё раз запускаем
Код: Выделить всё
mount | grep ^folder2ram
добавляем RAM-исключения в скрипт и продолжаем inotifywait-мониторинг
(я добавил также @/root, поскольку там запускался скрипт мониторинга и создавался лог)

В случае правильной настройки folder2ram количество записей в ФС сведётся к минимуму.
Удачи!!

Правка от 12.02 23:49
/tmp лучше инициализировать через /etc/default/tmpfs строчкой RAMTMP=yes
Thecus N5200BR PRO | CPU: Celeron 1.5GHz, RAM: 500Mb, RAID6: 5x720Gb, 1xESATA: 3Tb, 8Gb IDE DOM (с eBay), VGA & PS/2 ports (впаивал сам)
OMV 2.2.1 (Stone burner)
Aleon M
Автор темы
Аватара
Откуда: Москва
Репутация: 5
Сообщения: 11
С нами: 1 год 7 месяцев

#2 Major » 15.02.2016, 13:57

Добавил в FAQ
HP Microserver N54L + Linux 3.2.0-4-amd64 + OMV 2.2.14 (на флешке) + Tansmissionbt 1.4
Major M
Модератор
Аватара
Репутация: 27
Сообщения: 191
С нами: 2 года 9 месяцев

#3 papka__ » 16.02.2016, 14:56

Если у меня установлен OMV на SD, то должны-ли меняться что-то еще в этой строке?

SUBSYSTEM=="block", KERNEL=="[sh]d[a-z]", ENV{ID_ATA}=="1", ENV{ID_TYPE}=="disk", ENV{ID_BUS}=="usb", ATTRS{model}=={"моя модель"}, ATTR{queue/rotational}="0"
papka__
Репутация: 5
Сообщения: 15
С нами: 1 год 10 месяцев

#4 Aleon » 17.02.2016, 02:19

papka__, Если строка сработала, запустится следующее правило в 99-openmediavault-scheduler.rules (менять не надо) и после перезагрузки Вы увидите:

cat /sys/block/sda/queue/rotational
Код: Выделить всё
0
сat /sys/block/sda/queue/scheduler
Код: Выделить всё
noop [deadline] cfq

Если всё так, значит строка правильная.
(Везде, где "==" - это условия, а последнее "=" - действие)
Thecus N5200BR PRO | CPU: Celeron 1.5GHz, RAM: 500Mb, RAID6: 5x720Gb, 1xESATA: 3Tb, 8Gb IDE DOM (с eBay), VGA & PS/2 ports (впаивал сам)
OMV 2.2.1 (Stone burner)
Aleon M
Автор темы
Аватара
Откуда: Москва
Репутация: 5
Сообщения: 11
С нами: 1 год 7 месяцев

#5 papka__ » 17.02.2016, 11:51

Не выходит каменный цветок. :( А где можно найти значения остальных параметров как ID_TYPE например?
papka__
Репутация: 5
Сообщения: 15
С нами: 1 год 10 месяцев

#6 wishuwerehere » 17.02.2016, 13:24

Код: Выделить всё
@/root 2>&1 | ts | tee inotify.log
а не подскажете ts, из какого пакета эта программа?
wishuwerehere
Бывалый
Аватара
Репутация: 8
Сообщения: 78
С нами: 1 год 10 месяцев

#7 papka__ » 17.02.2016, 14:32

и ts для добавления времени транзакций в лог (пакет moreutils)
papka__
Репутация: 5
Сообщения: 15
С нами: 1 год 10 месяцев

#8 Aleon » 17.02.2016, 20:47

Можно просто в лог писать, без вывода на консоль, тогда tee не нужна:
Код: Выделить всё
2>&1 | ts > inotify.log
-- лог будет обнуляться каждый раз
или
Код: Выделить всё
2>&1 | ts >> inotify.log
-- лог будет дописываться

Да и ts - для удобства.
Простейший вариант - закончить скрипт последним исключением: @/root (без бэкслэша "\") и смотреть в реальном времени, что происходит с ФС
Thecus N5200BR PRO | CPU: Celeron 1.5GHz, RAM: 500Mb, RAID6: 5x720Gb, 1xESATA: 3Tb, 8Gb IDE DOM (с eBay), VGA & PS/2 ports (впаивал сам)
OMV 2.2.1 (Stone burner)
Aleon M
Автор темы
Аватара
Откуда: Москва
Репутация: 5
Сообщения: 11
С нами: 1 год 7 месяцев

#9 papka__ » 18.02.2016, 11:47

Зафунциклировало! Не совсем по фэншую описанному тут. Опишу для тех у кого SD или просто не заработало.
Умный мысль разумеется в ФАК-е.

Команда
Код: Выделить всё
udevadm info -a --name=/dev/sdX
выдает хе..ву тучу не нужной информации. Все что необходимо для действий описанных ниже - можно посмотреть GUI (Storage->Physical Disks, он-же Хранилище->Физические диски).

Устанавливаем и конфигурим
Код: Выделить всё
apt-get install sysfsutils
echo "block/sdX/queue/scheduler = deadline" >> /etc/sysfs.conf

Далее в /etc/udev/rules.d/99-openmediavault-nonrot.rules (упростил команду ибо полная у меня не работала)
Код: Выделить всё
SUBSYSTEM=="block", KERNEL=="sdX", ATTR{queue/rotational}="0"

X - заменяем на нужное.

Теперь священный ребут и проверяем результат
Код: Выделить всё
grep . /sys/block/sd?/queue/rotational
grep . /sys/block/sd?/queue/scheduler

Автору поста спасибо за исследования и указания направления движения.
papka__
Репутация: 5
Сообщения: 15
С нами: 1 год 10 месяцев

#10 Aleon » 18.02.2016, 23:39

papka__, Поздравляю:) TMTOWTDI
Thecus N5200BR PRO | CPU: Celeron 1.5GHz, RAM: 500Mb, RAID6: 5x720Gb, 1xESATA: 3Tb, 8Gb IDE DOM (с eBay), VGA & PS/2 ports (впаивал сам)
OMV 2.2.1 (Stone burner)
Aleon M
Автор темы
Аватара
Откуда: Москва
Репутация: 5
Сообщения: 11
С нами: 1 год 7 месяцев

#11 papka__ » 19.02.2016, 10:49

Спасибо. Полагаю, схожая с моей, проблема будет с USB/SD. Теперь в ФАК-е будет почти на все случаи жизни. :)
papka__
Репутация: 5
Сообщения: 15
С нами: 1 год 10 месяцев

#12 imiha » 11.06.2016, 18:04

Если у меня установлен OMV на SD, то должны-ли меняться что-то еще в этой строке?

SUBSYSTEM=="block", KERNEL=="[sh]d[a-z]", ENV{ID_ATA}=="1", ENV{ID_TYPE}=="disk", ENV{ID_BUS}=="usb", ATTRS{model}=={"моя модель"}, ATTR{queue/rotational}="0"

Надо убрать ENV{ID_ATA}=="1",, диск ведь USB!

Т.е. надо записать так:
Код: Выделить всё
SUBSYSTEM=="block", KERNEL=="[sh]d[a-z]", ENV{ID_TYPE}=="disk", ENV{ID_BUS}=="usb", ATTRS{model}=={"моя модель"}, ATTR{queue/rotational}="0"
imiha
Репутация: 0
Сообщения: 1
С нами: 1 год 3 месяца

#13 papka__ » 27.06.2016, 11:41

Надо убрать ENV{ID_ATA}=="1",, диск ведь USB!

Когда пробовал, то убирал. Не помогало. Возможно руки....
papka__
Репутация: 5
Сообщения: 15
С нами: 1 год 10 месяцев

#14 sotovl » 06.05.2017, 17:03

А eMMC, это касается?
sotovl
Репутация: 0
Сообщения: 1
С нами: 4 месяца 15 дней


Название раздела: Плагины
Описание: Установка и настройка плагинов в OpenMediaVault.
Здесь обсуждаем и задаем вопросы только по дополнениям и плагинам.

Быстрый ответ


Этот вопрос предназначен для предотвращения автоматической отправки форм спам-ботами.
:hi: :smile: :wink: :twisted: :sad: :evil: :smoke: :eh: :eek: :fie: :silenced: :razz: :oops: :help: :spy: :insane: :biggrin: :toothless: :ill: :nervious: :weirdface: :pray: :clap: :think: :boxing: :cyclop: :rambo: :zombie: :cry: Ещё смайлики…

   

Вернуться в Плагины

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость