Стойкая функция blockdev setra для чтения вперед

У меня есть некоторые SSD-файлы, установленные на /dev/sda1 и /dev/sdb1 на сервере SLES 11 SP2, и я смог настроить настройку чтения вперед с помощью blockdev --setra :

 sudo blockdev --setra 4096 /dev/sda sudo blockdev --setra 4096 /dev/sdb sudo blockdev --getra /dev/sda 4096 sudo blockdev --getra /dev/sdb 4096 

Как сохранить этот параметр при загрузке? В частности, есть ли соответствующий параметр в sysctl.conf , или мне нужно будет установить для rc-скрипта, чтобы это произошло?

3 Solutions collect form web for “Стойкая функция blockdev setra для чтения вперед”

Я бы предложил вам использовать udev для установки параметров для дисков SSD. Таким образом, вы можете настроить конкретный планировщик очередей, который более подходит для SSD и т. Д. Вы также можете применять параметры только к некоторым устройствам, основанным на множестве параметров.

Вы можете получить определенные атрибуты, необходимые для соответствия вашим устройствам (например, модели диска и производителя), выполнив:

 udevadm info -a -p /sys/block/sda 

и проверка всех пар ATTR для вашего блочного устройства.

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

Ниже приведен пример применения определенного планировщика для твердотельных накопителей Intel, требуемого значения readahead (4096 блоков = 2048 кб), а также применения другого планировщика для всех остальных SSD:

 cat /etc/udev/rules.d/99-ssd.rules # http://unix.stackexchange.com/a/71409/36574 # Setting specific kernel parameters for a subset of block devices (Intel SSDs) SUBSYSTEM=="block", ATTRS{model}=="Intel SSDSC*", ACTION=="add|change", KERNEL=="sd[az]", ATTR{bdi/read_ahead_kb}="2048", ATTR{queue/scheduler}="deadline" # for all other non-rotational block devices set a scheduler to 'noop' and readahead to 1024KB SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[az]", ATTR{bdi/read_ahead_kb}="1024", ATTR{queue/scheduler}="noop" 

После сохранения файла вы можете проверить, будет ли ваше правило соответствовать устройству и что будет делать udev с помощью udevadm:

 udevadm test --action=add /sys/block/sda 

Это печатает все правила, которые загружают udev, какие совпадения, что нет, и какие решения будет делать udev при подключении устройства.

Надеюсь это поможет.

Обратите внимание, что чтение вперед может быть установлено как минимум через /sys ( /sys/class/block/sda/queue/read_ahead_kb ), blockdev и hdparm ( hdparm -a ).

hdparm на Debian и его производных поставляется с hdparm.conf который определяет атрибуты для каждого устройства, которые должны быть установлены при загрузке, и при использовании hot-plug (через правила udev ).

Таким образом, вы можете:

 /dev/disk/by-id/my-disk... { read_ahead_sect = 4096 } 

(лучше использовать идентификаторы, чем sda которые могут меняться от одной загрузки к следующей).

В sysctl нет ничего соответствующего, поэтому, yep, /etc/rc.local – это способ или аналогичный. И будьте осторожны, – я лично заметил, что на Ubuntu – эти изменения дрейфуют еще больше, даже будучи установленными после загрузки, поэтому, возможно, даже имеет смысл использовать crontab для его сохранения.

  • Могу ли я установить флаг «барьер = 0» при использовании SSD?
  • hdparm: SG_IO: данные сомнительного смысла, результаты могут быть неверными
  • Установка Debian на SSD
  • Как измерить скорость чтения / записи раздела или диска?
  • Лучший способ зашифровать мою систему на ssd
  • «Dd» Utillity Скопировано больше, чем ожидалось
  • Минимизировать зарезервированное пространство на томе ext4 без больших файлов
  • Linux обнаруживает sata ssd только с ACPI = off, но окна всегда делают
  • SSD дает ошибки загрузки DMA, в то время как smartctrl не показывает ошибок
  • Новый SSD монтируется только после выпуска команды blkid.
  • CentOS 7 SSHD и автомонтированные домашние каталоги?
  • Interesting Posts

    Диапазонные переменные для настраиваемых пользователем циклов

    Как я могу использовать debian_chroot в bashrc для идентификации chroot env?

    Разрешения на символическую ссылку

    Невозможно локально проверить полномочия эмитента

    Как выполнить команду «jobs» unix в среде python

    Как зарегистрировать имя пользователя Windows с локального -> целевого сервера, вошедшего в / var / log / secure?

    Как удалить строку из файла с разделителями трубы, основываясь на значении в определенном поле?

    Как определить функцию, которая обрабатывает `command not found`?

    Создание нескольких виртуальных хостов (Linux Mint 18.2)

    Запуск команды «diff» после команды «Найти»

    Как переименовать историю репозитория Git в подкаталог?

    медленная передача файлов через последовательный порт с кошкой

    Обнаруживать, если программа должна регистрироваться в журнале systemd или stdout

    Почему «дата» печатает дату с неправильным порядком слов при локализации?

    Два диска EFI с Grub2

    Linux и Unix - лучшая ОС в мире.