- DeviceManagement
- Kernel
- -sysfs
- —hotplug
- Debian. Шпаргалка сисадмина. Информация об устройствах
- Процессор
- Оперативная память
- Жесткие диски
- Сеть
- Утилиты общего назначения
- top
- dmidecode
- dmesg
- lspci
- vmstat
- sysctl
- Дополнительные утилиты
- htop
- lshw
- smartmontools
- hdparm
- ethtool
- sysstat
- udev — Linux dynamic device management
- Overview
- Rules
- Rule sets
- Blacklisting
- Persistent Device name
- DeviceManagement
This page aims to give a rough overview of the various subsystems used in linux to manage devices. It will hopefully give you enough of the big picture to better understand the man pages and documentation for the specific subsystems. It won’t tell you how to create devices or have scripts run when new devices are added.
There is a hierarchy to the various systems. It looks something like this:
Kernel
Kernel and kernel modules drive the devices.
-sysfs
Sysfs is a virtual file system provided by the 2.6 Linux kernel. Sysfs exports information about devices and drivers from the kernel device model to userspace, and is also used for configuration.
See http://en.wikipedia.org/wiki/Sysfs
Udev and hal use sysfs to do their work.
—hotplug
The kernel calls the /sbin/hotplug script when it sees new hardware passing several arguments. The scripts load kernel modules and user scripts when new hardware is seen.
New with the 2.6 kernel, udev automates the creation and removal of devices in /dev. udev replaces the devfs of the 2.4 kernel.
From the udev man page. As part of the hotplug subsystem, udev is executed if a kernel device is added or removed from the system. On device creation, udev reads the sysfs directory of the given device to collect device attributes. These attributes may be used as keys to determine a unique name for the device.
From the /usr/share/doc/hal/NEWS.gz.
HAL is a hardware abstraction layer and aims to provide a live list of devices present in the system at any point in time. HAL tries to understand both physical devices (such as PCI, USB) and the device classes (such as input, net and block) physical devices have, and allows merging of information from so called device info files specific to a device.
HAL provides a network API through D-BUS for querying devices and notifying when things change. Finally, HAL provides some monitoring (in an unintrusive way) of devices; presently ethernet link detection and volume mounts are monitored.
This, and more, is all described in the HAL specification.
Entries in /dev give access to the devices the kernel drives. Entries here can be made by hand using command line utilities, or by an automated utility such as DevFS or udev.
Источник
Debian. Шпаргалка сисадмина. Информация об устройствах
Диагностика оборудования — достаточно важный вопрос, который никак нельзя упускать. Именно поэтому в серию «Шпаргалка сисадмина» для ОС Debian я не могу не добавить статью о средствах получения информации об устройствах. На этот раз я постараюсь коротко рассказать об основных утилитах для диагностики тех или иных компонентов сервера. Начну конечно же со встроенных по умолчанию в систему средств, поскольку знать их и уметь пользоваться должен любой сисадмин. Далее будет обзор пакетов с общим назначением. В конечно счете подойдем к знакомству с дополнительными расширенными инструментами, которые каждый может поставить по желанию.
Процессор
Узнать информацию о процессоре можно с помощью команды:
root@debian7:
# cat /proc/cpuinfo
Или некоторые другие данные:
root@debian7:
# lscpu
Оперативная память
Краткая информация об использовании памяти:
root@debian7:
# free -m
Утилита также выводит информацию об использовании свопа. Вместо ключа -m, может быть даже лучше использовать -h — получите данные с обозначениями объема.
Расширенная информация:
root@debian7:
# cat /proc/meminfo
Жесткие диски
Отобразить список существующих разделов:
root@debian7:
# fdisk -l
Стоит отметить, что основное назначение утилиты fdisk — управление разделами дисков.
Вывести UUID и тип файловой системы для каждого раздела можно с помощью команды:
root@debian7:
# blkid
Информацию о разделах, точках монтирования и некоторые другие данные можно получить с помощью утилиты lsblk
root@debian7:
# lsblk
Команда отображает все блочные устройства в древовидной структуре.
Сеть
Информация об интерфейсах:
root@debian7:
# ifconfig
Подробная информация о сетевой карте
root@debian7:
# mii-tool -v
Для проверки доступности узлов используйте общеизвестную утилиту ping.
Утилиты общего назначения
top
Утилита top служит для отображения информации о процессах и ресурсах, которые они потребляют. Информация обновляется с определенной периодичностью. Данные можно отсортировать, например, по использованию процессорной мощности или оперативной памяти (по умолчанию идет сортировка по CPU).
root@debian7:
# top
dmidecode
Получить подробную информацию об аппаратном обеспечении можно с помощью dmidecode. Утилита предоставляет данных, полученные от BIOS. В описании пакета приводится следующая справка 1 :
Эта информация обычно включает в себя производителя системы, название модели, серийный номер, версию BIOS, дескриптор ресурса (asset tag) а также другую информацию различного уровня интереса и достоверности, устанавливаемую производителем. Часто содержит состояние занятых процессорных сокетов, слотов расширения (например, AGP, PCI, ISA), слотов памяти и список портов ввода/вывода (например, последовательные и параллельные порты, USB).
Помните, что данные, выдаваемые DMI, не настолько надёжные, чтобы им слепо доверять. Dmidecode не сканирует аппаратное обеспечение, он просто выводит те данные, которые ему предоставляет BIOS.
# dmidecode
Вывод команды без аргументов слишком объемный, лучше использовать ключ —type и получать только необходимые разделы, например:
root@debian7:
# dmidecode —type 5,6
Команда выведет тип контроллера памяти и используемые модули RAM.
dmesg
Команда используется для вывода буфера сообщений ядра. С точки зрения аппаратного обеспечения, вывод может быть полезен для анализа проблем с оборудованием, да и вообще для полного представления имеющегося «железа». Вывод команды слишком объемный и для его анализа могут понадобиться другие инструменты, например, можно воспользоваться выводом в файл, можно перенаправить вывод команде less, а можно с помощью grep найти необходимые вам аппаратные компоненты.
root@debian7:
# dmesg | grep processor
Команда выведет только строки, содержащие слово processor.
lspci
Утилитой удобно пользоваться для вывода списка всех устройств, подключенных к pci-шине. Информация может быть использована в диагностических целях, а также для определения установленных устройств.
root@debian7:
# lspci
Используйте ключ -t для отображения информации в древовидном представлении, в котором будут отображены все шины и устройства, подключенные к ним. Ключи -v, -vv, -vvv отображают дополнительную информацию по каждому устройству; чем больше «v», тем более подробно выводятся данные.
В целом утилита чрезвычайно полезна при работе с аппаратной составляющей и позволяет получить максимум данных.
vmstat
Показывает сводную информацию о состоянии виртуальной памяти, а также о свопе.
root@debian7:
# vmstat 2
Команда выше будет выводить обновленные данные каждые 2 секунды (вместо 2 можете указать любое другое число).
sysctl
Хоть и утилита предназначена главным образом для управления параметрами ядра на лету, анализ установленных значений может помочь в диагностике проблем.
root@debian7:
# sysctl -a
Команда отобразит все переменные и их значения.
Дополнительные утилиты
Все описанные ниже утилиты не входят в стандартную конфигурацию Debian, придется из ставить отдельно.
htop
Более сильная замена штатной утилиты top. В стандартной конфигурации с системой не поставляется. Предоставляет удобный интерактивный интерфейс со встроенной справкой и обновлением данных в реальном времени.
root@debian7:
# htop -d 10
Ключ -d выставляет значение в десятых долях секунды для обновления данных. Ключ -c переключает программу в монохромный режим работы.
lshw
Утилита предназначена для вывода подробной информации об аппаратном обеспечении. Наиболее удобно экспортировать данные в .html-вид и просматривать в браузере. Такой способ, конечно же, исключается при работе в консольном режиме, разве что если просматривать данные на другой системе.
root@debian7:
# lshw -C network
Команда выведет данные только о сетевой плате.
smartmontools
Пакет состоит из двух утилит (smartctl и smartd), которые следят за S.M.A.R.T-показателями жестких дисков. Для запуска демона необходимо произвести ряд настроек:
Раскомментировать строки и в скобках указать через пробел все устройства, на которых необходимо отслеживать состояние.
enable_smart=»/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde»
start_smartd=yes
smartd_opts=»—interval=1800″
Однако при запуске службы на виртуальной машине с Debian 7.7 у меня выдал ошибку (надо сказать, что отслеживание S.M.A.R.T на виртуальных жестких дисках достаточно бредовая идея, я это сделал лишь с целью протестировать):
Просмотреть состояние диска можно командой:
root@debian7:
# smartctl -a /dev/sda
Несмотря на это, утилита является достаточно распространенной и однозначно рекомендуется к использованию. Кроме того, в сети есть масса инструкций 2 3 по настройке e-mail-уведомлений в случае проблем с жесткими дисками.
hdparm
Главное предназначение программы — тонкая настройка параметров IDE/SATA жестких дисков, тюнинг производительности. Помимо этого также можно просматривать характеристики устройств командой (укажите свой диск):
root@debian7:
# hdparm -i /dev/sda
Вопросы настройки дисков в рамках этой статьи рассматривать не планируется.
ethtool
Произвести диагностику сетевой платы вам поможет утилита ethtool. Конечно вытянуть информацию можно и с помощью ifconfig, и dmesg и др., но несравнимо больше полезных данных вы получите именно от ethtool. Надо отметить, что с виртуальными сетевыми интерфейсами программа работает достаточно криво. Например отображение статистики по интерфейсу у меня вообще было пустое:
root@debian7:
# ethtool -S eth0
no stats available
Общая информация об интерфейсе была примерно настолько же скудной:
root@debian7:
# ethtool eth0
Settings for eth0:
Link detected: yes
С физическими интерфейсами ситуация обстоит значительно лучше. Помимо диагностики, утилита также предназначена для настройки интерфейсов.
sysstat
Пакет содержит в себе ряд утилит, способных выдавать информацию о производительности тех или иных компонентов системы. Особо полезным может быть iostat, когда нужно проанализировать загрузку жестких дисков в срезе операций ввода/вывода.
Я перечислил далеко не все основные инструменты, знакомство с которыми так необходимо, но по мере возможности собираюсь дополнять статью необходимым материалом.
Источник
udev — Linux dynamic device management
udev is a replacement for the Device File System (DevFS) starting with the Linux 2.6 kernel series. It allows you to identify devices based on their properties, like vendor ID and device ID, dynamically. udev runs in userspace (as opposed to devfs which was executed in kernel space).
udev allows for rules that specify what name is given to a device, regardless of which port it is plugged into. For example, a rule to always mount a hard drive with manufacturer «iRiver» and device code «ABC» as /dev/iriver is possible. This consistent naming of devices guarantees that scripts dependent on a specific device’s existence will not be broken.
Overview
The udev system is composed of some kernel services and the udevd daemon. The kernel informs the udevd daemon when certain events happen. The udevd daemon is configured to respond to events with corresponding actions. The event information comes from the kernel — the actions happen in userspace. The responses to the events are configurable in «rules».
The userspace udev functionality is implemented by the systemd-udevd.service Its config file is in /etc/udev/udev.conf. The rules files (which amount to more configuration for udevd) are taken from /run/udev/rules.d, /etc/udev/rules.d or /lib/udev/rules.d. Packages install rules in /lib/udev/rules.d), while the /etc and /run locations provide a facility for the administrator to override the behavior of a package-provided rule. If a file with the same name is present in more than one of these directories then the latter(s) file will be ignored. Files in there are parsed in alpha order, as long as the name ends with «.rules». When the config file or rules files are changed, the udevadm program should be used to instruct systemd-udevd to reload the rules (see below).
udev was created to respond to hotplug type of events. Much documentation refers to creating devices in response to new devices that have appeared. But, udev is more general; it can run arbitrary userspace commands in response to a new device appearing — or to whatever events it receives from the kernel.
The times when udevd is active are:
- at startup, it parses all the config files and rule files and builds a rules database in memory.
- When an event happens, it checks its rule database and performs the appropriate actions.
Rules
Rules for rules:
- rules are all on one line (lines can be broken with \ just before newline)
- rules consist of «matches» and «actions»
- matches and actions are «key» «operator» «value» triplets
- matches have == or != for operator
- actions have = (assignment) for operator
- matches check one or more attributes of the event to see if the action will be applied
- actions specify what will happen
example match: BUS=="usb"
example action: NAME="mydev"
example rule:
actions like key+=»value» add to the actions that are executed, eg SYMLINK+="foo" means «in addition to any other symlinks you were going to make for this event, also make one called foo»
Rule sets
Rules for rule sets:
- All the rules are in one big rule space, although they are divided into several files.
The only organization in the rule space is the ability to set labels, and then to skip a bunch of rules during «match this event to rules» time by jumping forward with a GOTO action.
there is one other rule type called a label: eg LABEL="persistent_storage_end" These are used by regular rules that have «GOTO» actions, eg: Note that in this rule, the term ACTION is an attribute of an event and is being used as a condition for deciding if the GOTO action will be triggered.
The facility for dynamic rule creation exists (example: see z45_persistent-net-generator.rules)
Blacklisting
Persistent Device name
In this example, we want to make sure your 3G card get a persistent name.
1. Plug the «card» (or device)
2. run the following command, on the proper device;
udevadm starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device.
3. Create a file in /etc/udev/rules.d, typically named z21_persistent-local.rules.
4. Force re-running the scripts (or reboot ; )
Источник