Новый сервер: проверка железа
Начиная работу с новым сервером, нелишним будет проверить, соответствует ли он заявленной конфигурации. Многие начинающие пользователи испытывают затруднения в случаях, когда требуется просмотреть информацию о сервере с использованием команд, доступных только в консоли.
В этой статье мы расскажем о том, как можно получить спецификацию Linux-сервера в командной строке.
Общая информация о системе
Получить информацию о системе можно с помощью команды uname, которая пишет в стандартный вывод имя используемой операционной системы. Если указать одну из описанных ниже опций, на консоль будет выведена более специализированная информация о характеристиках системы:
# uname -a Linux srv1 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Имя операционной системы, дата компиляции ядра, версия и битность: Tue Dec 3 01:24:59 UTC 2013, 3.8.0-35-generic, i386 — 32 бита, x86_84 — 64 бита.
- -а выводить всю возможную информацию;
- -i показать информацию об идентификаторе ядра;
- -m показать тип текущей аппаратной платформы;
- -n показать имя системы;
- -p показать тип процессорной архитектуры сервера;
- -r показать информацию о релизе операционной системы;
- -s показать имя используемой операционной системы;
- -v показать информацию о версии используемой операционной систем.
Информацию об используемом дистрибутиве операционной системы можно также вывести при помощи команды cat /etc/issue:
# cat /etc/issue Ubuntu 13.04 \n \l
Есть и другой способ просмотра информации о дистрибутиве:
# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 13.04 Release: 13.04 Codename: raring
Информация об аппаратных компонентах
Утилита lshw
Утилита lshw выводит на консоль полный список аппаратных компонентов системы вместе с информацией об устройствах. lshw включена во многие современные дистрибутивы Linux по умолчанию; если она отсутствует, ее можно установить стандартным менеджером пакетов:
# apt-get install lshw
Чтобы вывести на консоль информацию о «железе», нужно ввести следующую команду:
# lshw
Вывести эту информацию в сокращенном виде можно при помощи опции -short:
# lshw -short
С помощью lshw можно также просматривать и информацию об отдельных аппаратных компонентах системы. Для этого используется ключ -С, после которого указывается устройство, информацию о котором нужно вывести на консоль:
— процессор:
# lshw -C сpu
— память:
# lshw -C memory
— дисковая подсистема:
# lshw -C disk
Утилита lspci
С помощью утилиты lspci можно просмотреть информацию обо всех шинах PCI и подключенных к ним устройствах. Она входит в пакет pciutils, включенный в большинство современных дистрибутивов Linux; если он по каким-либо причинам отсутствует, его можно установить при помощи стандартного менеджера пакетов.
По умолчанию lspci показывает краткий список устройств; более подробную информацию можно получить при помощи многочисленных опций.
Опция -t отображает информацию о шинах и подключенных устройствах в виде дерева. В выводе будут указаны только цифровые идентификаторы устройств:
# lspci -t -[0000:00]-+-00.0 +-01.0-[01]--+-00.0 | \-00.1 +-03.0-[02]--+-00.0 | \-00.1 +-07.0-[04]-- +-09.0-[05]-- +-14.0 +-14.1 +-1c.0-[03]----00.0 +-1d.0 +-1e.0-[06]----03.0 +-1f.0
Просмотреть цифровые коды устройств можно с помощью опции -n:
# lspci -n 01:00.1 0200: 14e4:1639 (rev 20) 02:00.0 0200: 14e4:1639 (rev 20) 02:00.1 0200: 14e4:1639 (rev 20) 03:00.0 0104: 1000:0079 (rev 05) 06:03.0 0300: 102b:0532 (rev 0a)
В начале каждой строки в выводе указывается код устройства в формате «:.», а далее — код в формате «:».
Чтобы в список были включены не только коды, но и имена соответствующих им устройств, указывается опция -nn:
# lspci -nn 01:00.0 Ethernet controller [0200]: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet [14e4:1639] (rev 20) 03:00.0 RAID bus controller [0104]: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] [1000:0079] (rev 05) 06:03.0 VGA compatible controller [0300]: Matrox Electronics Systems Ltd. MGA G200eW WPCM450 [102b:0532] (rev 0a)
Определить имя устройство по коду «:.» можно при помощи опции -s:
# lspci -s 03:00.0 03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)
Чтобы определить устройство по коду «:,» нужно воспользоваться опцией -d:
# lspci -d 1000:0079 03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05)
После ключа -d можно указать только код поставщика или код устройства, например:
# lspci -d 8086: # lspci -d :0532
В этом случае будет показан список всех устройств, соответствующих введенному коду.
Для просмотра информации о драйверах ядра, отвечающих за конкретные устройства, используется опция -k:
# lspci -k 00:1f.2 IDE interface: Intel Corporation 82801IB (ICH9) 2 port SATA Controller [IDE mode] (rev 02) Subsystem: Dell PowerEdge R610 SATA IDE Controller Kernel driver in use: ata_piix Kernel modules: ata_generic, pata_acpi, ata_piix 02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20) Subsystem: Dell PowerEdge R610 BCM5709 Gigabit Ethernet Kernel driver in use: bnx2 Kernel modules: bnx2 03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 05) Subsystem: Dell PERC H700 Integrated Kernel driver in use: megaraid_sas Kernel modules: megaraid_sas
Псевдофайловая система /proc
Информация об аппаратных компонентах в Linux-системах хранится в так называемой псевдофайловой системе /proc. Она называется псевдофайловой, так как является виртуальной и вообще не занимает места на накопителе. Большинство хранимых в /proc псевдофайлов представлены в понятной для человека форме. Дерево /proc используют многие программы, выводящие информацию о системе.
Процессор
Информация о процессоре хранится в псевдофайле /proc/cpuinfo. Чтобы просмотреть его содержимое, введем следующую команду:
# cat /proc/cpuinfo
В выводе этой команды содержится много различной информации: о модели процессора, количестве ядер, поддерживаемых технологиях аппаратной виртуализации и т.п.
Самый объемный и трудный для понимания раздел вывода — это, конечно же, flags (флаги). Они содержатся и в выводе команды lshw.
Рассмотрим значения наиболее важных флагов:
- ht (HyperThreading) — поддержка технологий одновременной многопоточности; присутствует в сериях процессоров Intel Xeon, Pentium 4, Atom, Core i3, Core i5, Core i7;
- lm (long mode) — указывается, если процессор выполнен по 64-битной технологии;
- vmx (для Intel), svd (для AMD) — поддержка процессором технологий аппаратной виртуализации; означает наличие инструкций для предоставления прямого доступа к ресурсам процессора из гостевых систем;
- aes — поддержка расширения системы команд AES;
- hypervisor — указывается, если ОС запущена под гипервизором;
- smx — поддержка технологий TXT (TPM).
Подробную информацию о значении всех флагов можно найти здесь и здесь.
Память
Просмотреть информацию об общем объеме свободной и используемой памяти, включая swap, можно при помощи команды free. Вывод этой команды может выглядеть, например, так:
# free -m total used free shared buffers cached Memory: 3627 3216 410 0 107 1157 -/+ buffers/cached: 1950 1676 Swap: 3762 31 3731
Опция -m указывает, что объем свободной и используемой памяти нужно выводить в мегабайтах. Чтобы отображать объем в гигабайтах, нужно указать ключ -g; это удобно для серверов с большим (исчисляемым десятками, а то и сотнями гигабайт) объемом оперативной памяти.
Еще более подробная информация хранится в псевдофайле /proc/meminfo.
Вывод команды cat /proc/meminfo включает следующие основные параметры:
- MemTotal — доступный объем оперативной памяти;
- MemFree — показывает, какой объем памяти в данный момент не используется и доступен для выделения процессам;
- Buffers — область памяти, в которой хранятся данные, ожидающие записи на диск;
- Cached — объем, занятый под кэш чтения страниц с диска;
- SwapCached — объем, который был перенесен в область подкачки, а затем перемещен обратно в оперативную память;
- Active — объем памяти, занятый наиболее часто используемыми страницами;
- Inactive — объем памяти, занятый страницами, которые в настоящий момент не используются;
- Swap {total, free} — общий объем области подкачки;
- Dirty — так называемые «грязные» страницы (т.е. находящиеся в оперативной памяти, но еще не сброшенные на диск);
- Writeback — страницы, сбрасываемые на диск в настоящий момент;
- AnonPages — анонимные страницы (данные, используемые программами, но не ассоциированные с каким-либо файлом);
- Mapped — общий объем памяти, перенесенный в виртуальное адресное пространство процессов при помощи mmap;
- Committed_AS — количество памяти, выделенное всем процессам (даже если они при этом не используют ее в полном объеме).
Дисковая подсистема
Для проверки разбивки и количества дисков используется команда:
# fdisk -l
Размер свободного и занятого дискового пространства во всех смонтированных файловых системах можно узнать с помощью команды df. С командой используются следующие опции:
- -a вывести информацию обо всех файловых системах;
- -h вывести информацию в человекочитаемом формате;
- -T показать тип файловой системы;
- -t вывести информацию только об указанных типах файловых систем.
Рассмотрим пример вывода команды df -h более подробно:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-vg0root 50G 15G 32G 32% / tmpfs 5.9G 0 5.9G 0% /dev/shm /dev/sda1 1008M 62M 895M 7% /boot /dev/mapper/vg0-var 2.7T 839G 1.7T 33% /var
Информация о размере фактического свободного пространства отображается в разделе Available. Если сложить цифры, указанные в разделах Available и Used, то полученная сумма не будет равна цифре в разделе Size. Это связано с тем, что часть дискового пространства отводится под системные файлы и метаданные.
Просмотреть подробную информацию о состоянии жесткого диска можно при помощи утилиты smartctl, включенной в официальные репозитории большинства современных дистрибутивов Linux. Для просмотра полной информации нужно ввести команду:
# smartctl -a /dev/sda
Для отображения информации о физических томах используются команды pvdisplay, pvs и pvscan.
Команда pvscan проверяет все блочные устройства в системе на наличие физических томов:
# pvscan PV /dev/md0 VG vg0 lvm2 [462.96 GiB / 205.22 GiB free] Total: 1 [462.96 GiB] / in use: 1 [462.96 GiB] / in no VG: 0 [0 ]
С помощью команды pvdisplay можно просмотреть подробный многострочный вывод для каждого физического тома:
# pvdisplay --- Physical volume --- PV Name /dev/md0 VG Name vg0 PV Size 462.96 GiB / not usable 1.87 MiB Allocatable yes PE Size 4.00 MiB Total PE 118517 Free PE 52536 Allocated PE 65981 PV UUID Idm6eZ-5vS0-IJCo-RDQq-WZNk-nJ22-eb7aDd
С помощью команды pvs можно настроить формат отображения данных (для каждого тома — одна строка).Это бывает полезно, например, при написании скриптов.
Для просмотра информации о логических томах жесткого диска используются утилиты lvs, lvscan и lvdisplay, входящие в пакет lvm2. lvm2 устанавливается при помощи стандартного менеджера пакетов:
# apt-get install lvm2
Команда lvscan выводит на консоль список всех имеющихся в системе логических томов (листинг фрагмента вывода):
# lvscan ACTIVE '/dev/vg0/root' [18.62 GiB] inherit ACTIVE '/dev/vg0/www' [200.00 GiB] inherit
С помощью команды lvdisplay можно вывести на консоль список атрибутов логических томов (имя, размер, разметка). Просмотреть информацию об атрибутах конкретного логического тома можно, воспользовавшись опцией -v и указав его имя (листинг фрагмента вывода):
# lvdisplay --- Logical volume --- LV Name /dev/vg0/root VG Name vg0 LV UUID yPtVFt-BON5-agWC-jXSr-cU4x-Tcu9-NRiwMF LV Write Access read/write LV Status available # open 1 LV Size 18.62 GiB Current LE 4768 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Name /dev/vg0/www VG Name vg0 LV UUID reCzuE-5dgN-A4eB-LubM-VtUA-Lclq-MUt5v6 LV Write Access read/write LV Status available # open 1 LV Size 200.00 GiB Current LE 51200 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
Команда lvs аналогична рассмотренной выше команде pvs: позволяет настроить формат отображения данных и выводит по одному тому каждой строке.
# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert root vg0 -wi-ao 18.62g www vg0 -wi-ao 200.00g
Информация о состоянии активных программных RAID-массивов хранится в псевдофайле /proc/mdstat. Просмотреть его содержимое можно с помощью команды cat /proc/mdstat:
# cat /proc/mdstat Personalities : [raid1] read_ahead 1024 sectors md1 : active raid1 hda3[0] hdc3[1] 522048 blocks [2/2] [UU] md0 : active raid1 hda2[0] hdc2[1] 4192896 blocks [2/2] [UU] md2 : active raid1 hda1[0] hdc1[1] 128384 blocks [2/2] [UU]
В рассматриваемом нами примере в системе содержится три массива. Для каждого из них в псевдофайле /proc/mdstat имеется отдельный раздел, содержащий следующую информацию:
- имя RAID-массива;
- состояние RAID-массива;
- уровень массива;
- имена физических разделов, входящих в состав массива;
- число настроенных устройств и число работающих устройств в массиве;
- состояние каждого работающего устройства (U означает, что устройство работает, а _ — что устройство отказало, sync — идет синхронизация).
Проверить, используется ли на сервере аппаратный RAID, можно с помощью уже знакомой нам команды lspci:
# lspci -nn | grep RAID
Если RAID используется, то на консоль будет выведен ответ типа:
02:00.0 RAID bus controller [0104]: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] [1000:0079] (rev 04)
Информацию о состоянии аппаратного RAID при помощи штатных средств операционной системы получить невозможно. Для этого существуют специальные утилиты: MegaCLI для LSI-контроллеров и Adaptec Storage Manager (asm) для adaptec. В официальные репозитории Linux-систем они не включены. Скачать megacli можно отсюда, a ASM — c сайта компании Adaptec.
Сетевые интерфейсы
Информация обо всех сетевых интерфейсах, подключенных к системе, содержится в псевдофайле /proc/net/dev. При вводе команды cat /proc/net/dev на консоль будет выведен список всех активных и неактивных сетевых интерфейсов.
Статус всех текущих интерфейсов можно просмотреть с помощью команды ip link show up.
Команда ip address выводит информацию обо всех сетевых интерфейсах:
# ip address 1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:30:48:f2:7a:a0 brd ff:ff:ff:ff:ff:ff inet 5.178.83.252/29 brd 5.178.83.255 scope global eth0 inet6 fe80::230:48ff:fef2:7aa0/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc noop state DOWN qlen 1000 link/ether 00:30:48:f2:7a:a1 brd ff:ff:ff:ff:ff:ff
UP означает, что интерфейс работает; NO CARRIER означает отсутствие кабеля или трансивера в порту сетевой карты. Команда ip route (сокращенный вариант — ip r) выводит на консоль таблицы маршрутизации.
# ip r default via 88.93.16.185 dev br0 50.178.87.0/24 via 192.16.122.1 dev br0 10.0.0.0/8 via 192.16.122.1 dev br0 1.131.251.0/24 via 192.16.122.1 dev br0 192.16.122.0/24 dev br0 proto kernel scope link src 192.16.122.2 88.93.16.184/29 dev br0 proto kernel scope link src 88.93.16.186