Kdump — диагностика и анализ причин сбоев ядра
Хотя в современных Linux-системах ядро отличается достаточно высоким уровнем стабильности, вероятность серьезных системных ошибок, тем не менее, имеется всегда. Когда происходит неисправимая ошибка, имеет место состояние, называемое паникой ядра (kernel panic): стандартный обработчик выводит на экран информацию, которая должна помочь в устранении неисправности, и входит в бесконечный смысл.

Хотя в современных Linux-системах ядро отличается достаточно высоким уровнем стабильности, вероятность серьезных системных ошибок, тем не менее, имеется всегда. Когда происходит неисправимая ошибка, имеет место состояние, называемое паникой ядра (kernel panic): стандартный обработчик выводит на экран информацию, которая должна помочь в устранении неисправности, и входит в бесконечный цикл.
Для диагностики и анализа причин сбоев ядра разработчиками компании RedHat был разработан специализированный инструмент — kdump. Принцип его работы можно кратко описать следующим образом. Создается два ядра: основное и аварийное (именно оно используется для сбора дампа памяти). При загрузке основного ядра под аварийное ядро выделяется определенный размер памяти. При помощи kexec во время паники основного ядра загружается аварийное и собирает дамп.
В этой статье мы подробно расскажем о том, как конфигурировать kdump и анализировать с его помощью системные ошибки. Мы рассмотрим особенности работы с kdump в OC Ubuntu; в других дистрибутивах процедуры настройки и конфигурирования kdump существенно отличаются.
Установка и настройка kdump
Установим kdump с помощью команды
$ sudo apt-get install linux-crashdump kdump-tools
Настройки kdump хранятся в конфигурационном файле /etc/default/kdump-tools
# kdump-tools configuration # --------------------------------------------------------------------------- # USE_KDUMP - controls kdump will be configured # 0 - kdump kernel will not be loaded # 1 - kdump kernel will be loaded and kdump is configured # KDUMP_SYSCTL - controls when a panic occurs, using the sysctl # interface. The contents of this variable should be the # "variable=value . " portion of the 'sysctl -w ' command. # If not set, the default value "kernel.panic_on_oops=1" will # be used. Disable this feature by setting KDUMP_SYSCTL=" " # Example - also panic on oom: # KDUMP_SYSCTL="kernel.panic_on_oops=1 vm.panic_on_oom=1" # USE_KDUMP=1 # KDUMP_SYSCTL="kernel.panic_on_oops=1"
Чтобы активировать kdump, отредактируем этот файл и установим значение параметра USE_KDUMP=1.
Также в конфигурационном файле содержатся следующие параметры:
- KDUMP_KERNEL — полный путь к аварийному ядру;
- KDUMP_INITRD — полный путь к initrd аварийного ядра;
- KDUMP_CORE — указывает, где будет сохранен файл дампа ядра. По умолчанию дамп сохраняется в директории /var/crash (KDUMP_CORE=/var/crash);
- KDUMP_FAIL_CMD — указывает, какое действие нужно совершить в случае ошибки при сохранении дампа (по умолчанию будет выполнена команда reboot -f);
- DEBUG_KERNEL — отладочная версия работающего ядра. По умолчанию используются /usr/lib/debug/vmlinux-$. Если значение этого параметра не установлено, утилита makedumpfile создаст только дамп всех страниц памяти;
- MAKEDUMP_ARGS — содержит дополнительные аргументы, передаваемые утилите makedumpfile. По умолчанию этот параметр имеет значение ‘-c -d 31’, указывающую, что необходимо использовать сжатие и включать в дамп только используемые страницы ядра.
Установив все необходимые параметры, выполним команду update-grub и выберем install the package maintainer’s version.
Затем перезагрузим систему и убедимся в том, что kdump готов к работе:
$ cat/proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.8.0-35-generic root=UUID=bb2ba5e1-48e1-4829-b565-611542b96018 ro crashkernel=384 -:128M quiet splash vt.handoff=7
Обратим особое внимание на параметр crashkernel=384 -:128M. Он означает, что аварийное ядро будет использовать 128 Мб памяти при загрузке. Можно прописать в grub параметр crashkernel = auto: в этом случае память под аварийное ядро будет выделяться автоматически.
Для того, чтобы мы могли анализировать дамп с помощью утилиты crash, нам понадобится также файл vmlinux, содержащий отладочную информацию:
$ sudo tee /etc/apt/sources.list.d/ddebs.list
По завершении установки еще раз проверим статус kdump:
$ kdump-config status
Если kdump находится в рабочем состоянии, на консоль будет выведено следующее сообщение:
current state: ready to kdump
Тестируем kdump
Вызовем панику ядра при помощи следующих команд:
echo c | sudo tee /proc/sysrq-trigger
В результате их выполнения система «зависнет».
После этого в течение нескольких минут будет создан дамп, который будет доступен в директории /var/crash после перезагрузки.
Информацию о сбое ядра можно просмотреть с помощью утилиты crash:
$ sudo crash /usr/lib/debug/boot/vmlinux-3.13.0-24-generic /var/crash/201405051934/dump.201405051934 crash 7.0.3 Copyright (C) 2002-2013 Red Hat, Inc. Copyright (C) 2004, 2005, 2006, 2010 IBM Corporation Copyright (C) 1999-2006 Hewlett-Packard Co Copyright (C) 2005, 2006, 2011, 2012 Fujitsu Limited Copyright (C) 2006, 2007 VA Linux Systems Japan K.K. Copyright (C) 2005, 2011 NEC Corporation Copyright (C) 1999, 2002, 2007 Silicon Graphics, Inc. Copyright (C) 1999, 2000, 2001, 2002 Mission Critical Linux, Inc. This program is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Enter "help copying" to see the conditions. This program has absolutely no warranty. Enter "help warranty" for details. GNU gdb (GDB) 7.6 Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-linux-gnu". KERNEL: /usr/lib/debug/boot/vmlinux-3.13.0-24-generic DUMPFILE: /var/crash/201405051934/dump.201405051934 [PARTIAL DUMP] CPUS: 4 DATE: Mon May 5 19:34:38 2014 UPTIME: 00:54:46 LOAD AVERAGE: 0.14, 0.07, 0.05 TASKS: 495 NODENAME: Ubuntu RELEASE: 3.13.0-24-generic VERSION: #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 MACHINE: x86_64 (2675 Mhz) MEMORY: 8 GB PANIC: "Oops: 0002 [#1] SMP " (check log for details) PID: 7826 COMMAND: "tee" TASK: ffff8800a2ef8000 [THREAD_INFO: ffff8800a2e68000] CPU: 2 STATE: TASK_RUNNING (PANIC) crash>
На основе приведенного вывода мы можем заключить, что системному сбою предшествовало событие «Oops: 0002 [#1] SMP», произошедшее на CPU2 при выполнении команды tee.
Утилита crash обладает также широким спектром возможностей для диагностики причин краха ядра. Рассмотрим их более подробно.
Диагностика причин сбоя с помощью утилиты crash
Crash сохраняет информацию обо всех системных событиях, предшествовавших краху ядра. С ее помощью можно воссоздать состояние системы на момент сбоя: узнать, какие процессы были запущены на момент краха, какие файлы открыты и т.п. Эта информация помогает поставить точный диагноз и предупредить крахи ядра в будущем.
В утилите crash имеется свой набор команд:
$ crash> help * files mach repeat timer alias foreach mod runq tree ascii fuser mount search union bt gdb net set vm btop help p sig vtop dev ipcs ps struct waitq dis irq pte swap whatis eval kmem ptob sym wr exit list ptov sys q extend log rd task crash version: 7.0.3 gdb version: 7.6 For help on any command above, enter "help ". For help on input options, enter "help input". For help on output options, enter "help output". crash>
Для каждой этой команды можно вызвать краткий мануал, например:
crash> help set
Все команды мы описывать не будем (с детальной информацией можно ознакомиться в официальном руководстве пользователя от компании RedHat ), а расскажем лишь о наиболее важных из них.
В первую очередь следует обратить внимание на команду bt (аббревиатура от backtrace — обратная трассировка). С ее помощью можно посмотреть детальную информацию о содержании памяти ядра (подробности и примеры использования см. здесь ). Однако во многих случаях для определения причины системного сбоя бывает вполне достаточно команды log, выводящее на экран содержимое буфера сообщений ядра в хронологическом порядке.
Приведем фрагмент ее вывода:
[ 3288.251955] CPU: 2 PID: 7826 Comm: tee Tainted: PF O 3.13.0-24-generic #46-Ubuntu [ 3288.251957] Hardware name: System manufacturer System Product Name/P7P55D LE, BIOS 2003 12/16/2010 [ 3288.251958] task: ffff8800a2ef8000 ti: ffff8800a2e68000 task.ti: ffff8800a2e68000 [ 3288.251960] RIP: 0010:[] [] sysrq_handle_crash+0x16/0x20 [ 3288.251963] RSP: 0018:ffff8800a2e69e88 EFLAGS: 00010082 [ 3288.251964] RAX: 000000000000000f RBX: ffffffff81c9f6a0 RCX: 0000000000000000 [ 3288.251965] RDX: ffff88021fc4ffe0 RSI: ffff88021fc4e3c8 RDI: 0000000000000063 [ 3288.251966] RBP: ffff8800a2e69e88 R08: 0000000000000096 R09: 0000000000000387 [ 3288.251968] R10: 0000000000000386 R11: 0000000000000003 R12: 0000000000000063 [ 3288.251969] R13: 0000000000000246 R14: 0000000000000004 R15: 0000000000000000 [ 3288.251971] FS: 00007fb0f665b740(0000) GS:ffff88021fc40000(0000) knlGS:0000000000000000 [ 3288.251972] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 3288.251973] CR2: 0000000000000000 CR3: 00000000368fd000 CR4: 00000000000007e0 [ 3288.251974] Stack: [ 3288.251975] ffff8800a2e69ec0 ffffffff8144e5f2 0000000000000002 00007fff3cea3850 [ 3288.251978] ffff8800a2e69f50 0000000000000002 0000000000000008 ffff8800a2e69ed8 [ 3288.251980] ffffffff8144eaff ffff88021017a900 ffff8800a2e69ef8 ffffffff8121f52d [ 3288.251983] Call Trace: [ 3288.251986] [] __handle_sysrq+0xa2/0x170 [ 3288.251988] [] write_sysrq_trigger+0x2f/0x40 [ 3288.251992] [] proc_reg_write+0x3d/0x80 [ 3288.251996] [] vfs_write+0xb4/0x1f0 [ 3288.251998] [] SyS_write+0x49/0xa0 [ 3288.252001] [] tracesys+0xe1/0xe6 [ 3288.252002] Code: 65 34 75 e5 4c 89 ef e8 f9 f7 ff ff eb db 0f 1f 80 00 00 00 00 66 66 66 66 90 55 c7 05 94 68 a6 00 01 00 00 00 48 89 e5 0f ae f8 04 25 00 00 00 00 01 5d c3 66 66 66 66 90 55 31 c0 c7 05 be [ 3288.252025] RIP [] sysrq_handle_crash+0x16/0x20 [ 3288.252028] RSP [ 3288.252029] CR2: 0000000000000000
В одной из строк вывода будет указано событие, вызвавшее системную ошибку:
[ 3288.251889] SysRq: Trigger a crash
С помощью команды ps можно вывести на экран список процессов, которые были запущены на момент сбоя:
crash> ps PID PPID CPU TASK ST %MEM VSZ RSS COMM 0 0 0 ffffffff81a8d020 RU 0.0 0 0 [swapper] 1 0 0 ffff88013e7db500 IN 0.0 19356 1544 init 2 0 0 ffff88013e7daaa0 IN 0.0 0 0 [kthreadd] 3 2 0 ffff88013e7da040 IN 0.0 0 0 [migration/0] 4 2 0 ffff88013e7e9540 IN 0.0 0 0 [ksoftirqd/0] 7 2 0 ffff88013dc19500 IN 0.0 0 0 [events/0]
Для просмотра информации об использовании виртуальной памяти используется команда vm:
crash> vm PID: 5210 TASK: ffff8801396f6aa0 CPU: 0 COMMAND: "bash" MM PGD RSS TOTAL_VM ffff88013975d880 ffff88013a0c5000 1808k 108340k VMA START END FLAGS FILE ffff88013a0c4ed0 400000 4d4000 8001875 /bin/bash ffff88013cd63210 3804800000 3804820000 8000875 /lib64/ld-2.12.so ffff880138cf8ed0 3804c00000 3804c02000 8000075 /lib64/libdl-2.12.so
Команда swap выведет на консоль информацию об использовании области подкачки:
crash> swap FILENAME TYPE SIZE USED PCT PRIORITY /dm-1 PARTITION 2064376k 0k 0% -1
Информацию о прерываниях CPU можно просмотреть с помощью команды irq:
crash> irq -s CPU0 0: 149 IO-APIC-edge timer 1: 453 IO-APIC-edge i8042 7: 0 IO-APIC-edge parport0 8: 0 IO-APIC-edge rtc0 9: 0 IO-APIC-fasteoi acpi 12: 111 IO-APIC-edge i8042 14: 108 IO-APIC-edge ata_piix
Вывести на консоль список файлов, открытых на момент сбоя, можно с помощью команды files:
crash> files PID: 5210 TASK: ffff8801396f6aa0 CPU: 0 COMMAND: "bash" ROOT: / CWD: /root FD FILE DENTRY INODE TYPE PATH 0 ffff88013cf76d40 ffff88013a836480 ffff880139b70d48 CHR /tty1 1 ffff88013c4a5d80 ffff88013c90a440 ffff880135992308 REG /proc/sysrq-trigger 255 ffff88013cf76d40 ffff88013a836480 ffff880139b70d48 CHR /tty1
Наконец, получить в сжатом виде информацию об общем состоянии системы можно с помощью команды sys:
crash> sys KERNEL: /usr/lib/debug/lib/modules/2.6.32-431.5.1.el6.x86_64/vmlinux DUMPFILE: /var/crash/127.0.0.1-2014-03-26-12:24:39/vmcore [PARTIAL DUMP] CPUS: 1 DATE: Wed Mar 26 12:24:36 2014 UPTIME: 00:01:32 LOAD AVERAGE: 0.17, 0.09, 0.03 TASKS: 159 NODENAME: elserver1.abc.com RELEASE: 2.6.32-431.5.1.el6.x86_64 VERSION: #1 SMP Fri Jan 10 14:46:43 EST 2014 MACHINE: x86_64 (2132 Mhz) MEMORY: 4 GB PANIC: "Oops: 0002 [#1] SMP " (check log for details)
Заключение
Анализ и диагностика причин падения ядра представляет собой очень специфическую и сложную тему, которую невозможно уместить в рамки одной статьи. Мы еще вернемся к ней в следующих публикациях.
Для желающих узнать больше — несколько полезных ссылок:
- Документация kdump на сайте kernel.org
- Книга, целиком посвященная проблемам диагностики сбоев ядра
- Подробная документация для утилиты crash
Устранение проблем с kdump в CentOS / RHEL

Механизм kdump – это функция ядра Linux, которая позволяет создавать дампы в случае сбоя ядра.
Он производит точную копию памяти, которую можно проанализировать на предмет первопричины сбоя.
Это скрипт, который настраивает kdump (дамп ядра).
Kdump предоставляет дамп памяти в файл с именем vmcore, когда в ядре возникает критическая проблема.
Vmcore часто требуется, чтобы исследовать проблему.
Аварийный дамп записывается из контекста недавно загруженного ядра, а не из контекста аварийного ядра. Kdump использует kexec для загрузки второго ядра при сбое системы.
Kexec – это механизм быстрой загрузки, который позволяет перезагружать новое ядро Linux из контекста работающего ядра без прохождения прошивки или горячего запуска.
В этом посте объясняются шаги по устранению распространенных проблем с kdump.
Проверка настройки kdump
1. Проверьте, установлен ли в системе пакет kexec-tools.
# rpm -qa | grep kexec
2. Проверьте командную строку ядра в текущем работающем ядре на наличие параметра «crashkernel»:
# cat /proc/cmdline
3. Проверьте, зарезервирована ли память для аварийного ядра при запуске ядра:
# dmesg | grep Reserving
4. Проверьте путь к дампу:
# grep -v ^# /etc/kdump.conf
5. Проверьте объем памяти, доступный в файловой системе, указанной в параметре пути на предыдущем шаге:
# df -h
6. Проверьте состояние сервиса kdump:
# service kdump status ### В CentOS/RHEL 6 # systemctl status kdump ### В CentOS/RHEL 7
Когда служба Kdump не работает
1. Проверьте настройку kdump, следуя приведенному выше разделу.
2. Запустите сервис kdump
# service kdump status ### In CentOS/RHEL 6 # systemctl status kdump ### In CentOS/RHEL 7
3. Проверьте ошибку с терминала.
4. Дополнительную информацию об ошибке запуска службы kdump можно найти в /var/log/messages.
Когда настройка kdump в порядке, а состояние службы kdump работает, но vmcore не генерируется при возникновении сбоя
1. Отредактируйте файл /etc/kdump.conf и добавьте следующую строку, чтобы получить оболочку при сбое генерации vmcore:
default shell
2. В оболочке проверьте доступное хранилище, проверьте, смонтирована ли целевая файловая система vmcore, а затем попробуйте скопировать vmcore вручную и определить,работает ли он.
# cp /proc/vmcore [destination]
Когда оболочка не получена и crashkernel застряло при загрузке
1. Проверьте сообщения на консоли и найдите сообщения о запуске аварийного ядра.
Ищите, где оно застряло.
Crashkernel – это то же самое ядро, которое запускается при запуске системы, и, следовательно, можно увидеть сообщения, похожие на обычные сообщения о загрузке ядра, но с активированными ограниченными устройствами. Например: в аварийном ядре включен только 1 процессор. Обнаружен только целевой диск хранения.
2. Если вы видите сообщения об ошибках выделения страниц, высока вероятность того, что зарезервированного crashkernel недостаточно, и вам потребуется увеличить значение параметра ядра ‘crashkernel’.
CentOS / RHEL 7: Как настроить kdump

Когда включен, система загружается из контекста другого ядра.
Это второе ядро резервирует небольшой объем памяти, и его единственной целью является захват изображения дампа ядра в случае сбоя системы.
Поскольку возможность анализа дампа ядра помогает значительно определить точную причину сбоя системы, настоятельно рекомендуется включить эту функцию.
1. Установите пакет kexec-tools, если он еще не установлен.
Чтобы использовать службу kdump, вы должны установить пакет kexec-tools. Если он еще не установлен, установите инструменты kexec.
# yum install kexec-tools
2. Настройка использования памяти в GRUB2
Чтобы настроить объем памяти, зарезервированный для ядра kdump, отредактируйте /etc/default/grub и измените GRUB_CMDLINE_LINUX, установите параметр crashkernel = [размер] в список параметров ядра.
Выполните команду ниже, чтобы восстановить конфигурацию grub:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Перезагрузите систему, чтобы вступили в силу параметры ядра.
# shutdown -r now
3. Конфигурирование местоположения дампа
Чтобы настроить kdump, нам нужно отредактировать файл конфигурации /etc/kdump.conf.
Опцией по умолчанию является сохранение файла vmcore в каталоге / var / crash / локальной файловой системы.
Чтобы изменить локальный каталог, в котором необходимо сохранить дамп ядра, и замените значение на нужный путь к каталогу.
Например:
path /usr/local/cores
При желании вы также можете сохранить дамп ядра непосредственно в необработанном разделе.
Например:
raw /dev/sdb4
Чтобы сохранить дамп на удаленном компьютере с использованием протокола NFS, удалите хэш-знак («#») с начала строки #nfs my.server.com:/export/tmp и замените значение допустимым именем хоста и путь к каталогу.
Например:
nfs my.server.com:/export/tmp
4. Настройка Core Collector
Чтобы уменьшить размер файла дампа vmcore, kdump позволяет вам указать внешнее приложение для сжатия данных и, при необходимости, оставить всю несущественную информацию.
В настоящее время единственным полностью поддерживаемым сборщиком ядра является makedumpfile.
Чтобы включить основной сборщик, измените конфигурационный файл /etc/kdump.conf, удалите хеш-знак («#») с начала файла makedumpfile #core_collector -c -message-level 1 -d 31 и отредактируйте командную строку как описано ниже.
core_collector makedumpfile -c
5. Изменение действия по умолчанию
Мы также можем указать действие по умолчанию для выполнения, когда дамп ядра не может сгенерироваться в нужном месте. Если не указано действие по умолчанию, «перезагрузка» считается по умолчанию.
default halt
6. Запустите демон kdump
Проверьте и убедитесь, что в командной строке ядра включена конфигурация kdump и память зарезервирована для сбоя ядра:
# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-3.8.13-98.2.1.el7uek.x86_64 root=/dev/mapper/rhel-root ro rd.lvm.lv=rhel/root crashkernel=128M rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet nomodeset
Установите,чтобы служба kdump могла быть запущена при перезагрузке системы.
# systemctl enable kdump.service
Чтобы запустить службу в текущем сеансе, используйте следующую команду:
# systemctl start kdump.service
7. Тестирование kdump (ручной запуск kdump)
Чтобы проверить конфигурацию, мы можем перезагрузить систему с включенным kdump и убедиться, что служба запущена.
# systemctl is-active kdump active
# service kdump status Redirecting to /bin/systemctl status kdump.service kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled) Active: active (exited) since 一 2015-08-31 05:12:57 GMT; 1min 6s ago Process: 19104 ExecStop=/usr/bin/kdumpctl stop (code=exited, status=0/SUCCESS) Process: 19116 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS) Main PID: 19116 (code=exited, status=0/SUCCESS) Aug 31 05:12:57 ol7 kdumpctl[19116]: kexec: loaded kdump kernel Aug 31 05:12:57 ol7 kdumpctl[19116]: Starting kdump: [OK] Aug 31 05:12:57 ol7 systemd[1]: Started Crash recovery kernel arming.
Затем введите в командной строке следующие команды:
# echo 1 > /proc/sys/kernel/sysrq # echo c > /proc/sysrq-trigger
Для записи при сбое ядра в выбранное местоположение то есть в / var / crash /
Обзор CentOS: версии дистрибутива и его преимущества
Сделали обзор на CentOS — популярный дистрибутив Linux, который спонсирует компания Red Hat.

Выбирая дистрибутив для сервера, пользователь сталкивается с многообразием представленных на рынке операционных систем. Основными представителями являются продукты компании Microsoft, дистрибутивы, основанные на Debian, а также продукты корпорации RedHat и их производные. В этой статье мы расскажем о последнем варианте — CentOS, или же бесплатном RHEL.
Что такое CentOS
CentOS — это дистрибутив, использующий в основе ядро Linux. Первостепенная сфера применения — серверное оборудование.
Дистрибутив базируется на Red Hat Enterprise Linux (RHEL) и отличается от нее свободным распространением и отсутствием официальной поддержки. Из этого часто следует распределение, что RHEL применяется в больших компаниях, а CentOS пользуется популярностью у энтузиастов.
История развития ОС: от CAOS Linux до Red Hat
Свой путь данный дистрибутив начал в 2002 году, в составе сборки CAOS Linux. Далее, в 2006 году, произошло слияние компании-разработчика Tao Linux с CentOS. Это увеличило количество пользователей и сделало дистрибутив самой популярной системой в 2010 году. На тот момент более 30% всех веб-серверов Linux оснащалось CentOS. До этого первенство было за Debian, который, впрочем, вернул первенство в 2012 году.
В январе 2014 года компания Red Hat объявила, что команда будет спонсировать проект CentOS. Помогать в разработке платформы с открытым исходным кодом, совместимой с требованиями разработчиков, которые работают с операционной системой и новыми технологиями.
За всю историю дистрибутива было разработано 8 версий, а также CentOS Stream. Ниже будет представлен разбор особенностей версий CentOS 6, 7 и 8.
Мы уже публиковали тексты про RHEL и FedoraOS. Прочитайте их, чтобы сравнить операционные системы:
→ Red Hat Linux Enterprise
→ FedoraOS
Версии CentOS и их ключевые особенности
Дистрибутив CentOS 6.0
Версия CentOS 6.0 была представлена в 2011 году и получила 10 обновлений, закончив официальную работу в 2017 году. Из основных отличий от предыдущих версий можно выделить следующее:
- Появились новые инструменты для перемещения машин (как виртуальных, так и физических) из их текущего формата в виртуальную KVM-машину.
- В обновлении 6.4 добавлены драйверы Microsoft Hyper-V, позволяющие CentOS работать более эффективно в качестве виртуальной машины при установке на сервере Microsoft Hyper-V.
- Добавлена полная поддержка The Precision Time Protocol, или протокола точного времени. Технология позволяет синхронизировать часы во всей сети для уменьшения задержек при доставке пакетов, что позволило увеличить скорость обмена данными.
- Улучшен интерфейс SCSI, или Small Computer Systems Interface, применяемый для подключения различных устройств к ПК (до 16 штук). SCSI используется для повышения производительности, обеспечения более быстрой передачи данных и расширения возможностей устройств. Часто используется с RAID, серверами, высокопроизводительными ПК и сетями хранения данных. Также разработчики ОС произвели работу с новыми демонами Hyper-V для включения/улучшения работы CentOS на узлах Microsoft Hyper-V.
- В версии 6.9 было завершено распространение системы в формате LiveCD из-за увеличения размера дистрибутива. Также прекратилась поддержка небезопасных криптографических протоколов и алгоритмов для увеличения безопасности системы.
Дистрибутив CentOS 7.0
В 2014 году была представлена седьмая версия CentOS, обновиться до которой было возможно с версии 6.5. Срок поддержки редакции заканчивался в 2020 году, а выход последнего критического обновления назначено на 30 июня 2024 года. К основным отличиям от предыдущей версии можно отнести следующее:
- Обновлено ядро Linux до версии 3.10.0, внедрена поддержка контейнеров Linux, инструментов VMware и драйверов 3D-графики «из коробки».
- Введена поддержка технологии Bluetooth Low Energy.
- Осуществлена поддержка Datagram Transport Layer Security (TLS через UDP) и ALPN для OpenSSL.
Также CentOS 7 первым представил systemd, который управляет запуском служб, а также многими системными настройками. Он также включает в себя firewalld в качестве нового метода управления брандмауэром сервера.
Помимо этого, как и в остальных версиях, была проведена работа по увеличению безопасности системы путем обновления протоколов безопасности и отказа от устаревших моделей.
Дистрибутив CentOS 8.0
В 2019 году выпущена версия CentOS 8, срок поддержки которой тоже должен был составлять 10 лет. Но в 2020 году компания RedHat заявила о своем слиянии с гигантом IBM. Компания заявляла, что это не коснется пользователей. Но срок поддержки восьмой версии сократили до 2021 года, а на ее замену пользователям предложили CentOS Stream.
Основные отличия CentOS 8:
- Обновление ядра Linux до версии 4.18,
- Замена SCL на appstream (модульный способ управления программным обеспечением),
- Репозитории extras, dotnet и rhscl заменяются на appstreams,
- Замена менеджера пакетов yum на dnf,
- В восьмой версии движок docker полностью удален в пользу podma,;
- В версии 8 nftables заменяет iptables.
CentOS Stream
В том же 2019 году была представлена CentOS Stream. Разработчик позиционирует систему как предоставляемую по модели rolling-release, то есть по модели непрерывного обновления.
Однако это нововведение поменяло саму концепцию CentOS. Раньше существовала иерархия: Fedora → RHEL → CentOS. Изменения тестировались в Fedora, после этого выпускалась стабильная версия RHEL, а после — фичи появлялись в свободном для доступа CentOS. В новой концепции CentOS занимает место после Fedora и предоставляет скорее тестовый продукт.
Несмотря на заверения RedHat о том, что CentOS 8 будет поддерживаться параллельно, в декабре 2020 года компания заявила о завершении работы над этой версией дистрибутива в пользу CentOS Stream.

На данный момент представлена версия CentOS Stream 9. Ее основные отличия от CentOS 8 и RHEL 8 в следующем:
- Обновленное ядро Linux до версии 5.14,
- Современная версия Python 3.9,
- Рабочий стол обновлен до версии GNOME 40 (против GNOME 3.28 в CentOS 8),
- Применена новая версия библиотеки OpenSSL 3.0 для увеличения безопасности.
В целом, переход с классической CentOS на CentOS Stream вызвал неоднозначную реакцию сообщества. Если некоторые гиганты, в том числе Google, высказались в пользу обновления формата, то часть пользователь на форумах раскритиковала действия RedHat и нарекло ситуацию кончиной CentOS.
Преимущества и недостатки CentOS
Несмотря на смену формата, CentOS остается довольно популярным дистрибутивом. Давайте ознакомимся с основными преимуществами системы:
- Стабильность. Классическая CentOS является производной от центрального продукта компании – RHEL – и к моменту релиза не имеет критических недостатков.
- Длительная поддержка системы. Срок службы для классических версий обозначается в 10 лет, для версии Stream – 6 лет.
- Скорость работы ОС. Это объясняется тем, что дистрибутив предназначен только для запуска самых базовых и стабильных версий программного обеспечения. Процессору не приходится иметь дело с бесконечным количеством различных приложений.
Недостатки есть, но большая часть актуальна не для всех пользователей.
Ранее в версиях CentOS можно было выделить некоторую «устарелость» ПО, но с приходом утилиты Flatpacks пользователи могут устанавливать более свежие версии любого программного обеспечения, которое нужно. Если оно не поддерживается CentOS и является автономным (не связывается с системными библиотеками). Также, конечно, недостатком стало резкое сокращение времени поддержки последней версии CentOS.
Сравнение CentOS с другими операционными системами
В данный момент на рынке дистрибутивов лидерами являются Ubuntu, Debian и CentOS. Из-за того, что Ubuntu базируется на Debian, мы сравним CentOS с последним.
Различия Debian и CentOS
Репозитории. Для Debian-систем используется менеджер пакетов APT и формат .deb. В продуктах компании RedHat — формат пакетов .rpm.
Производитель. Разработкой Debian занимается сообщество, в то время как CentOS — дочерний продукт RHEL.
Обновляемость. Debian представляет новую версию каждые два года. За этот срок дистрибутив получает только обновления безопасности и исправления ошибок. Из-за этого к моменту выхода следующей версии системы большая часть пакетов устаревает.
В CentOS график обновлений с версии на версию зависит от выхода версий RHEL, однако в течении всего жизненного срока выходят обновления безопасности, а также обновления ПО. Например, в версии 7.4 была введена PHP 7.0.
Стабильность системы. В данном вопросе не существует единого мнения, так как каждая из них проходит тщательный процесс проверки. Однако преимущество CentOS в том, что это дочерняя разработка RHEL. Это дополнительный фактор доверия.
Сообщество. На основе Debian разработаны Linux Mint, Ubuntu и некоторые другие дистрибутивы. В связи с этим информации в сети и пользователей самой системы больше, нежели у CentOS (также больше русскоязычных мануалов). По последней в сети существует больше англоязычной информации, но комьюнити также велико.
Панель управления сервером. Из-за того, что CentOS «заточена» под серверы, для нее есть существует большее количество панелей управления — например, уникальные CentOS Web Panel (CWP) или cPanel.
Различия AstraLinux и CentOS
Также в рамках сравнения стоит упомянуть про активно внедряемый в сферу государственных предприятий AstraLinux. Данный дистрибутив позиционируется как переработанная под требования безопасности РФ версия Debian. Как и в случае Debian, нельзя сказать, что мы занимаемся сравнением конкурентов.
Итак, основные различия:
Окружение рабочего стола. В CentOS можно выбрать один из многих вариантов окружения. В Astra же разработчики сделали свой стол Fly, визуально напоминающий версии Windows «нулевых».
Доступность. Хоть CentOS и является дочерней системой платной RHEL, для загрузки доступно множество .rpm пакетов. Astra, разработанная под требования безопасности РФ, делится на два типа: common- и special-издания. В первом, распространяемом бесплатно, доступно множество пакетов. В более защищенном special пользователь столкнется с тем, что изначально репозитории поставляются в формате дисков или их образов, а некоторые пакеты будет не так просто установить.
Обновляемость. Для Astra обновления выходят примерно раз в год, в то время как обновления CentOS зависят от RHEL.
Сообщество. Комьюнити продуктов RHEL уступает Debian-системам, но благодаря ему вы без проблем сможете найти решение проблемы. Комьюнити AstraLinux ограничено только сегментом РФ, где данный дистрибутив распространен не везде. Все это может вызвать сложности при поиске информации.
Графическая оболочка CentOS
Изначально CentOS поставляется без графического интерфейса. При установке возможно выбрать «пресет» с рабочим столом GNOME, однако можно и выбрать один из наиболее популярных:

Добавим описание каждого из них.
KDE
Этот рабочий стол можно назвать наиболее полным и производительным среди всех. У KDE имеется свой проводник, называемый «Дельфин». Он предоставляет вкладки, дополнительные панели, а также встроенный терминал и систему поиска.
Этот рабочий стол можно порекомендовать людям, занимающимся разработкой, дизайном, мультимедиа, или тем, кто любит настраивать все под себя. Данный интерфейс довольно ресурсоемок ввиду «кастомной» настройки, но по своим визуальным функциям наиболее приближен к Windows.

Чтобы установить интернет-соединение, требуется нажать на иконку сети в правом нижнем углу экрана. После откроется окно со всеми созданными подключениями. Для установления соединения достаточно нажать на используемый вариант.

При нажатии на кнопку управления соединениями откроется панель, где можно создать новое подключение.

GNOME
Следующий рабочий стол — это GNOME, предоставляемый по умолчанию. Является одним из первоначальных интерфейсов всего Linux. За 20 лет его внешний вид сменился с подобия Windows XP до рабочего стола с всплывающими по краям панелями. Также оболочка GNOME является основой других интерфейсов.
Для сетевого подключения в GNOME следует нажать в правый верхний угол на иконку звука/выключения системы, после чего откроется всплывающее окно с возможностью выбора сети.

При нажатии на кнопку Параметры соединения открывается окно, позволяющее настроить проводные и беспроводные соединения.

Xfce
Этот рабочий стол можно назвать аналогом старому GNOME 2. Слабым его местом является диспетчер файлов Thunar, предоставляющий меньше функций, нежели конкуренты. Из преимуществ — интерфейс довольно нетребователен к ресурсам.
LXDE
Из представленных вариантов рабочий стол LXDE — самый нетребовательный к характеристикам компьютера. Это делает лучшим выбором для старых машин. По своему внешнему виду он напоминает старые версии Windows с панелью в нижней части экрана и расположенными слева иконками меню.

Для установки можно выбрать все типы рабочих столов, выбирая между ними в процессе загрузки системы:

Версии установки CentOS
После загрузки источника установки пользователю доступны несколько вариантов использования системы:
- минимальная установка — базовый функционал CentOS,
- Compute Node — режим работы для выполнения вычислений и обработки,
- сервер инфраструктуры — сервер служб сетевой инфраструктуры,
- сервер файлов и печати — сервер хранения файлов и печати для предприятий,
- стандартный веб-сервер — сервер для предоставления статического и динамического интернет-контента,
- хост визуализации,
- сервер с GUI — сервер служб сетевой инфраструктуры с интерактивным интерфейсом,
- окружение GNOME — вариант установки системы с рабочим столом GNOME,
- KDE Plasma Workspaces — вариант установки системы с рабочим столом KDE/Plasma 5,
- рабочая станция разработки и дизайна – вариант установки для работы над графическим дизайном.
Каждый вариант установки содержит стандартный набор дополнений для выбранного окружения, а также уникальные средства. К стандартным дополнениям относятся:
- средства отладки приложений и проблем производительности,
- библиотеки совместимости, созданные для работы приложений, написанных для более ранних версий CentOS,
- средства разработки — установка среды разработки,
- средства безопасности для обеспечения целостности и проверки подлинности,
- поддержка смарт-карт — режим поддержки аутентификации с помощью смарт-карт,
- средства администрирования системы.
Теперь рассмотрим некоторые окружения и их дополнения. .
Compute Node
- клиент каталогов — клиенты для интеграции с сетью под управлением службы каталогов,
- гостевые агенты — агенты, работающие под управлением гипервизора,
- средства наблюдения за оборудованием,
- поддержка InfiniBand — программы для поддержки кластеризации и распределения соединений с помощью коммутации InfiniBand и iWARP,
- клиент NFS — обеспечивает подключение системы к сетевому хранилищу,
- средства контроля производительности – инструменты для диагностики системы и производительности на уровне приложений,
- удаленное управление Linux – интерфейс удаленного управления CentOS Linux, включая OpenLMI и SNMP.
Окружение «Сервер инфраструктуры»
Можно установить следующие дополнения (без учета тех, что встречались ранее):
- резервный сервер,
- DNS-сервер,
- сервер файлов и печати,
- высокий уровень доступности,
- сервер управления идентификацией,
- Java,
- сервер FTP,
- производительность масштабных систем,
- сервер электронной почты,
- распределение нагрузки,
- сервер MariaDB,
- клиент NFS,
- средства контроля производительности,
- сервер PostgreSQL,
- сервер печати,
- надежное хранилище.
Окружение GNOME
Здесь можно установить следующие дополнения:
- приложения GNOME,
- приложения интернета,
- совместимость с устаревшей системой X Window,
- офисный комплект.
Установка CentOS
Для примера рассмотрим установку дистрибутива CentOS .
Шаг 1. Загрузка репозитория с официального сайта
Для загрузки системы требуется перейти на официальный сайт и выбрать необходимый продукт. Для выбора пользователя в данный момент доступны три продукта: CentOS Linux ver. 7-2009, CentOS Stream 8 и CentOS Stream 9.

Шаг 2. Создание загрузочного носителя
Для создания загрузочного носителя потребуется USB-накопитель объемом от 8 ГБ и программа UltraISO для Windows или программа AcetoneISO для Linux. Запись производится путем выполнения команды: sudo название менеджера пакетов acetoniso. Также после этого в BIOS потребуется выставить правильный источник загрузки.
Шаг 3. Установка системы
Первым шагом выбираем Install CentOS.

После этого загружается интерфейс, где пользователю предлагают выбрать язык во время установки. В поиске пишем Russian и нажимаем Continue.

После этого пользователя встречает следующее меню (на виртуальной машине оно не отображается целиком):

Рассмотрим основные функции:
- Keyboard — задать язык клавиатуры.
- Поддержка Language — какие языки будет поддерживать система.
- Time & Date — возможность задать часовой пояс и время в системе.
- Инсталляционный источник — в данном разделе требуется указать либо физический носитель, либо ссылку на ресурс, откуда загружалась система.
- Выбор программ — выбор пакетов для установки.
- Installation Destination — возможность разбить жесткий диск на секторы. В случае установки существуют два варианта: автоматическое разделение на разделы и разделение вручную. Автоматический режим гарантирует, что выбранный диск будет автоматически разделен на разделы /(root), /home и swap, где будет создан логический том LVM в файловой системе XFS. Ручной режим потребуется, если вы хотите использовать другие файловые системы (например, ext4 и vfat) и схему разделения, отличную от LVM (например, btrfs).
- KDUMP – настройка работы одноименного механизма, создающего копию ядра линукс в случае сбоя во время установки.
- Сеть и интерфейс – в данном разделе можно добавить интернет-соединение (без него не удастся продолжить установку). Для продолжения работы необходимо передвинуть ползунок во включенное положение.
- Политика безопасности.
При установке восклицательным знаком помечены обязательные для нее разделы. После выполнения всех действий достаточно нажать Начать установку, а после перезагрузить систему.
Автоустановка CentOS на выделенный сервер
Вы можете выбрать CentOS 7 для установки на арендованный сервер. Готовую к работе машину вы получите через несколько минут.
Итоги обзора CentOS
Итак, мы рассмотрели этот дистрибутив GNU/Linux, основанный на свободных исходных данных Red Hat Enterprise Linux.
CentOS является крайне надежной и стабильной системой, которую вы можете развернуть на своем компьютере или сервере. Для использования доступна версия 7, прошедшая проверку временем, а также актуальная версия Stream 9 — своеобразный бета-тест для дальнейших релизов RHEL.
К плюсам дистрибутива можно отнести надежность, стабильность работы, большую базу знаний и комьюнити, длительный срок поддержки, совместимость приложений между разными версиями ОС, а также некоторые «фичи» для управления сервером.
В завершение обзора — о минусах. При использовании дистрибутива вы не получите некоторые последние особенности релизов Linux. Так как CentOS базируется на более старых версиях ядра, чем конкуренты. Также есть некоторая неопределенность по поводу будущего системы из-за смены позиции RHEL и ставке на CentOS Stream.