Cистемные требования CentOS 7
7 июля 2014 года увидел свет релиз дистрибутива CentOS 7. Перед его установкой рекомендуется ознакомиться с системными требованиями. Подробно посмотреть полный список максимальных и минимальных системных требований можно на официальном wiki. Я же приведу только самые важные параметры:
Поддержка i386 архитектуры | нет |
Минимальное количество памяти | 1GB |
Рекомендуемое количество памяти | 1GB на каждое ядро процессора |
Минимальное место на диске | 10GB |
Рекомендуемое место на диске | 20GB |
Максимальный размер файла (ext3) | 2TB |
Максимальный размер файловой системы (ext3) | 16TB |
Максимальный размер файла (ext4) | 16TB |
Максимальный размер файловой системы (ext4) | 50TB |
Это официальные данные с сайта CentOS. У RHEL они такие же, я проверял. У меня лично на VDS благополучно все работает и с 512MB памяти, меньше не пробовал ставить, думаю и с 256 заведется.
как Быстро найти самые большие файлы в системе?
Быстро узнать самые большие файлы в системе можно так:
ls -lR | sort -k5 -n
Выполнять ее лучше всего в корне под рутом, чтобы не пропустить все системные подкаталоги. В выводе этой команды самые большие файлы будут располагаться ближе к концу, чтобы не пришлось мотать вверх по буферу консоли (ведь и буфера консоли может не хватить).
Недостаток команды: видны имена файлов, но не видны директории, в которых находятся эти файлы. Это впринципе не большая проблема, так как самых больших файлов обычно не более десятка, и даже если непонятно где они находятся, их можно найти по имени и размеру через команду find.
find . -type f -printf '%20s %p\n' | sort -n | cut -b22- | tr '\n' '\000' | xargs -0 ls -laSr
НАЙТИ 10 САМЫХ БОЛЬШИХ ФАЛОВ, НАЧИНАЯ с директории <DIR>
Выполните следующую комбинацию команд для поиска десяти самых больших файлов в Linux, начиная с директории <DIR> (измените <DIR> на директорию в которой Вы хотите запустить поиск).
find <DIR> -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
Найти 10 самых больших фалов, начиная с ‘/home’
find /home -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk '{printf "%10d MB\t%s\n",($7/1024)/1024,$NF}'
Установка CentOS 8 с флешки
Флешку подготовили, приступаем к установке. Ставим загрузку с USB и наблюдаем стандартный, горячо любимый и родной (смахнул слезу) установщик Centos.
Дальше увидите немного обновленный, но тем не менее привычный интерфейс с опциями установки. Перечислим их.
- Выбор часового пояса centos.
- Поддержка каких языков будет осуществляться на сервере.
- Выбор раскладки клавиатуры.
- Откуда будет происходить установка. Так как у нас дистрибутив centos dvd1, установка будет локальной.
- Выбор пакетов для установки.
- Разбивка жесткого диска. Подробнее коснемся этого пункта, когда будем разбирать установку на raid.
- Настройка режима работы KDUMP. Этот механизм делает дамп ядра, если оно у вас падает в момент установки. Теоретически может пригодится, если у вас с установкой возникнут какие-то проблемы. В общем случае лучше не включать, сэкономите немного оперативной памяти во время установки.
- Настройка сетевых интерфейсов. Без них нельзя установить систему, если используется netinstall.
- Подозреваю, что security policy это про SELinux, но скажу честно, я не знаю, как это работает на этапе установки, потому что никогда не настраивал и не изучал вопрос. Буду рад, если кто-то поделится актуальной инфой в комментариях.
Восклицательным знаком помечены разделы, без настройки которых продолжение невозможно. Пройдемся по всем параметрам и установим необходимые для нас значения. Итак, нажимаем на Time & Date (раньше было Date & Time, явно поработал кто-то эффективный и протолкнул изменение, за которое получил премию по итогу квартала) и настраиваем параметры времени:
- Указываем регион.
- Выбираем город.
- Включаем при необходимости службу времени для синхронизации часов centos с внешними серверами. Это возможно сделать только если вы уже настроили сетевые параметры. Если нет, то вернитесь к этой настройке позже.
- Выбираем список внешних серверов для синхронизации времени.
- Указываем формат, в котором будет отображаться текущее время.
- При необходимости изменяем дату сервера.
Когда все сделаете, жмите сверху на Done. В разделе Language Support можно выбрать дополнительные языки, которые будет поддерживать система. В принципе, настраивать прямо сейчас тут нет большой необходимости, если вы точно не знаете, понадобится ли вам какое-то еще язык, помимо английского. Все это можно добавить и потом. Но если точно знаете, что нужен еще один язык в системе, например, Русский может понадобиться, если будете использовать Сервер 1С, то добавляйте сразу.
То же самое с клавиатурой. Если нужен набор на еще каком-то языке, то добавляйте его в разделе Keyboard.
- Добавляем необходимые раскладки. Я добавил Russian.
- Нажимаем Options и выбираем, как будет происходить переключение раскладок.
- Тестируем раскладки и переключение. Если все в порядке, идем дальше.
Далее нужно указать, откуда будет производиться установка. Как я уже говорил, в данном примере я использую полный iso образ dvd1, который позволяет выполнить установку centos 8 полностью локально. Сетевую установку я рассмотрю отдельно позже. Так что в данном случае нам ничего отдельно настраивать не надо, по-умолчанию и так выбран виртуальный cd-rom в виде устройства sr0 в качестве источника.
CentOS 7 netinstall
Установка Centos 7 с образа netinstall отличается от прочих только одним моментом. Во время подготовки к установке по сети в разделе INSTALLATION SOURCE вам вместо локального источника необходимо указать путь к образу, расположенному где-то в сети. Очевидно, что перед этим необходимо выполнить настройку сети и убедиться, что у компьютера есть доступ в интернет.
В качестве источника для установки я буду использовать упомянутое ранее зеркало яндекса. CentOS netinstall url — https://mirror.yandex.ru/centos/7/os/x86_64/
Указываем путь и жмем Done . После проверки доступности источника, в разделе SOFTWARE SELECTION можно выбрать необходимый для установки набор софта:
Дальше можно начинать установку, указав все остальные параметры, которые мы рассмотрели выше.
Как узнать место на дисках centos
Большинство системных администраторов используют минимальную версию Centos, для того, чтобы узнать сколько свободного места на дисках, там есть встроенная утилита df, вроде все хорошо, но она не отображает всей картины, благодаря которой можно однозначно понять, чем занят жесткий диск Centos7.
df -h
В итоге вы увидите вот такую картину:
- Filesystem > отображает текущий каталог
- Size > размер
- Used > размер использованного
- Avail > доступное дисковое пространство
- Use > процентное использование
Согласитесь, что не совсем понятно, что именно занимает дисковое пространства на Centos 7. Просто представьте ситуацию, что у вас есть какой-то каталог, занимающий 100 гб и там огромное количество файлов, а вам нужно понять, что именно занимает это пространство. Для решения это задачи есть утилита ncdu, она не идет в стандартной сборке и ее нужно доставлять.
CentOS 7 minimal
Если вы используете диск centos minimal iso, то увидите следующий экран:
Здесь вам предлагают указать параметры установки. Восклицательным знаком помечен раздел, без настройки которого продолжение невозможно. Для настройки доступны следующие параметры установки:
- Выбор часового пояса centos.
- Выбор раскладки клавиатуры.
- Поддержка каких языков будет осуществляться на сервере.
- Откуда будет происходить установка. Так как у нас дистрибутив centos minimal, установка будет с локального iso.
- Выбор пакетов для установки. В образе minimal доступен только минимальный набор софта.
- Разбивка жесткого диска. Подробнее коснемся этого пункта, когда будем разбирать установку на raid.
- Настройка сетевых интерфейсов.
Для продолжения установки необходимо выполнить как минимум разбивку жесткого диска. Без этого продолжение установки невозможно. Но мы пройдемся по всем параметрам и установим необходимые для нас значения.
Итак, нажимаем на DATE & TIME и настраиваем параметры времени:
- Указываем регион.
- Выбираем город.
- Включаем при необходимости службу времени для синхронизации часов centos с внешними серверами.
Это возможно сделать только если вы уже настроили сетевые параметры. Если нет, то вернитесь к этой настройке позже. - Выбираем список внешних серверов для синхронизации времени:
- Указываем формат, в котором будет отображаться текущее время.
- При необходимости изменяем дату сервера.
После завершения настроек жмем сверху синюю кнопку Done.
Идем в следующую настройку — KEYBOARD LAYOUT:
- Добавляем необходимые раскладки. Я добавил Russian.
- Нажимаем Options и выбираем, как будет происходить переключение раскладок.
- Тестируем раскладки и переключение. Если все в порядке, идем дальше.
Нажимаем LANGUAGE SUPPORT:
Выбираем дополнительные языки, которые будет поддерживать система. Чаще всего мне это не нужно, но для примера добавим поддержку русского языка. Это может пригодиться, например, при создании файлового архива с русскими названиями в файлах. С поддержкой русского языка можно работать в консоли с русскими названиями папок и файлов. Если у вас, к примеру, сервер настраивается для работы в качестве шлюза, поддержка дополнительных языков скорее всего не пригодится. После выбора снова жмем Done.
Теперь выполним сетевые настройки. Идем в раздел NETWORK & HOSTNAME. Подробно о я указывал в одной из своих статей, поэтому останавливаться на этом вопросе не буду. Включаем ползунок в положение ON и получаем автоматически настройки по dhcp:
- Включение ползунка в положение ON активирует интерфейс, он получает настройки по dhcp.
- Если вы хотите изменить эти настройки, нажимаете Configure.
- Указываете hostname. Если забудете, то после установки этот параметр можно изменить.
Завершаем настройку нажатием на Done. Теперь можно вернуться в настройки часов и активировать Network Time.
Теперь перейдем в раздел INSTALLATION SOURCE. При установке centos minimal менять этот параметр нет необходимости. Там по-умолчанию установлен локальный источник, нам это подходит. Можно ничего не трогать:
В разделе SOFTWARE SELECTION при minimal установке тоже нечего выбрать, уже указан единственно возможный вариант:
Нам осталось рассмотреть последнюю обязательную настройку, без которой установка centos не начнется — INSTALLATION DESTINATION. Зайдя в нее вы увидите список подключенных к серверу дисков. В моем случае это один жесткий диск.
Если ваш диск определился правильно, выбираете его и нажимаете Done. Выскакивает окошко с предупреждением, что для установки системе понадобится примерно 1 Гб места на жестком диске, а на вашем жестком диске нет необходимого свободного места. Это происходит потому, что раньше на этом диске была установлена другая система и она занимала весь жесткий диск. Нам нужно удалить всю старую информацию для установки новой системы. Делаем это, нажимая Reclaim space:
Выбираем диск и удаляем все существующие разделы на нем — жмем сначала Delete all, а потом Reclaim space:
После этого установщик выберет весь диск в качестве диска для установки. После этого можно начать непосредственно установку centos, нажав кнопку Begin Installation.
Дальше рассмотрим вариант, когда вы выполняете установку с образа netinstall.
Загрузочная флешка для CentOS 7
Последнее время лично я практически не пользуюсь обычными CD, предпочитая им загрузочные флешки. Они удобнее, занимают меньше места, проще обновить дистрибутив на них. Но иногда приходится заморочиться для создания загрузочной флешки. Например, для создания загрузочной флешки CentOS 6 я раньше пользовался программой unetbootin, но с 7-й версией этот номер не прошел. Созданная в ней флешка не позволяет установить CentOS 7, так как сам инсталлятор в какой-то момент не видит источник установки на флешке.
Но на выручку пришла бесплатная программа Win32DiskImager. С ее помощью без проблем удается создать загрузочную флешку CentOS 7. Вот как это делается:
- Скачиваем дистрибутив программы.
- Скачиваем дистрибутив CentOS 7. Я для теста использовал версию Minimal.
- Вставляем чистую флешку, запускаем программу и указываем настройки:
- Нажимаем Write и ждем окончания записи.
- Загрузочная флешка CentOS 7 готова.
Этого достаточно для создания флешки. Теперь ей можно пользоваться для установки операционной системы с флешки.
Установка CentOS 7
Первое, что вы увидите после перезагрузки, это меню установки CentOS, выберите первый вариант:
Дождитесь завершения загрузки образа в память:
Выберите язык, на котором будет работать установщик и в будущем будет установлена система:
Шаг 7. Главное меню
На этом шаге мастер сильно отличается от других дистрибутивов. Мы имеем главное меню, в котором нужно настроить все параметры, отмеченные треугольником:
Сначала выберите ваш часовой пояс:
Кнопка готово находится в верхнем левом углу.
Шаг 9. Выбор программ
На этом экране вы можете выбрать программное обеспечение и окружение рабочего стола, которое нужно устанавливать. Например, мы будем устанавливать CentOS с Gnome:
Шаг 10. Выбор диска
Дальше выберите в главном меню место для установки. Здесь выберите диск, на который будете устанавливать систему. Затем поставьте галочку Я настрою разделы:
Шаг 11. Настройка разделов
После нажатия кнопки готово появится экран, на котором мы можем создавать разделы с помощью кнопки плюс. Систему разметки LVM оставляем как есть, тогда будет удобнее изменять разделы. Но если хотите, можете переключить на обычный раздел.
Шаг 12. Раздел корня
Нажмите + чтобы создать новый раздел. Введите точку монтирования / в поле Mount point. В поле Desired Capasity введите размер, например, 10G (10 гигабайт):
Проделайте все те же действия для загрузочного раздела. Точка монтирования — /boot, размер 300M.
Шаг 14. Домашний раздел
Точно так же создайте домашний раздел. Точка монтирования /home. Размер указывать не нужно. Будет занято все доступное пространство.
Шаг 15. Завершение разметки
Должно получиться что-то похожее на это:
Вы можете настроить каждый из разделов, задать для него файловую систему, метку и так далее. Можно еще создать раздел подкачки. Система будет писать об этом предупреждение. Но можно просто нажать два раза готово. После этого подтвердите действие и вы вернетесь в главное меню.
Шаг 16. Настройка сети
В разделе Network & Hostname вы можете настроить сеть. Для выключения сети по DHCP достаточно включить переключатель:
Все настроено и установка CentOS 7 может быть начата. Нажмите кнопку начать установку. Затем подтвердите действие:
Шаг 18. Пароль суперпользователя
Установка началась. А пока нам нужно указать пароль суперпользователя. Кликните по этому пункту:
Затем введите пароль два раза:
Если пароль недостаточно сложный, система предупредит об этом. Но вы можете проигнорировать это предупреждение и нажать готово два раза.
Шаг 19. Пользователь
В том же самом меню можно выбрать настройку пароля пользователя. Здесь нужно ввести имя, логин и пароль:
Не забудьте установить галочку сделать пользователя администратором.
После того как установка CentOS будет завершена нажмите готово и подождите пока компьютер перезагрузится.
Выберите первый пункт в меню Grub:
Выберите имя пользователя, которого вы создали при установке:
Введите пароль этого пользователя.
Ответьте на несколько вопросов мастера начальной настройки Gnome:
IOTOP
Посмотреть, какие процессы в настоящее время создают нагрузку на диск удобно смотреть командой iotop:
# iotop Total DISK READ: 38.27 M/s | Total DISK WRITE: 36.91 M/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 28096 be/4 root 0.00 B/s 15.75 K/s 0.00 % 99.99 % 28044 be/3 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % [jbd2/sde1-8] 28074 be/4 root 38.14 M/s 38.12 M/s 0.00 % 94.27 % mc -P /tmp/mc-root/mc.pwd.27971 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % 3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [stopper/0] 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] ...
Здесь видно, что в данный момент mc что-то пишет (а в это время в другом окне я в самом деле копировал кучу файлов на usb-диск в Midnight Commander (он же mc).
Понять, что коипрует mc в данный момент можно узнать командой:
# lsof | grep mc
Установка сервера CentOS 7
Здесь вкратце поговорим о том, как развернуть универсальный сервер на базе CentOS 7 с минимальным набором необходимых инструментов, которые требуются для его полноценной работы.
Итак, для начала необходимо отыскать сам сервер. Его можно либо нанять в Сети (от 250 рублей), либо настроить на локальной машине. Единственное, что потребуется, – это данные SSH, которые будут использоваться для входа на сервер. Возьмем в качестве примера абстрактный почтовый адрес [email protected] и имя пользователя c паролем тоже centos.
Начать конфигурацию стоит с создания пользователя и выдачи ему всех необходимых прав:
- Добавляем пользователя командой useradd centos;
- Создаем для него уникальный пароль – passwd centos;
- Заставляем систему отправлять root-почту этому пользователю – vi /etc/aliases;
- Даем пользователю права sudo командой visudo (командная строка отзовется подтверждением операции).
Далее необходимо указать имя хоста. Это можно сделать командой hostnamectl set-hostname server1.centos.net.
После нужно отключить Firewall и SeLinux. Это необходимо сделать для того, чтобы случайно не лишить себя прав доступа к серверу. Приостановить работу Firewall можно, используя команды systemctl stop firewalld и systemctl disable firewalld. Ситуация с SeLinux немного сложнее: необходимо открыть соответствующий конфигурационный файл в текстовом редакторе Vi с помощью команды vi /etc/selinux/config, разыскать там строку SELINUX=enabled и заменить на SELINUX=disabled. Затем нужно перезагрузить систему.
Следующим этапом настройки будет установка SSH.
Для этого необходимо:
- Добавить соответствующие ключи с севера командой ssh-copy-id [email protected].
- Изменить порт в конфигурационном файле /etc/ssh/sshd_config на Port 222.
- Запретить вход на сервер без прав Root, вписав строку PermitRootLogin without-password.
- И перезагрузить сервер командой systemctl restart sshd.
Также нужно обновить все системы и установить хранилища epel и rpmforge. Для этого необходимо:
- Обновить все системные элементы командой yum update.
- Загрузить новые системные компоненты командой yum -enablerepo=cr update.
- Если существующих компонентов недостаточно, можно загрузить более современные версии epel и rpmforge, для этого вводим команду yum -y install *адрес репозитория, где хранится нужная версия программного обеспечения* (подходящий репозиторий можно легко найти на профильных ресурсах).
Шаг 1. Расширение раздела
Обычные тома
Допустим, есть диск /dev/sdb и раздел /dev/sdb2, который нужно увеличить.
Сначала необходимо отмонтировать раздел:
umount /dev/sdb2
В случае работы с корневой директорией, отмонтировать ее не получиться. В таком случае необходимо загрузить компьютер с LiveCD.
Подключаемся утилитой fdisk к /dev/sdb:
fdisk /dev/sdb
Если мы работаем с разделом более чем 2Тб, используем утилиту parted.
Смотрим номера разделов:
: p
Удаляем раздел (не переживайте — все данные сохраняются):
: d
: 2
* в моем примере, раздел для удаления на второй позиции.
Создаем новый раздел:
: n
Первичный (primary):
: p
Номер раздела — 2:
: 2
На запрос начального и конечного секторов просто нажимаем Enter.
Если раздел был загрузочный, добавляем соответствующий флаг:
: a
Еще раз проверяем, что получилось:
: p
Сохраняем изменения:
: w
LVM
LVM-тома расширяются на лету, даже для корневых разделов. В данном примере, работаем с /dev/sda.
Открываем диск утилитой fdisk:
fdisk /dev/sda
* напомню, что при работе с диском 2Тб и более, следует использовать утилиту parted.
Создаем еще один раздел:
: n
Первичный:
: p
Номер раздела оставляем тот, который предлагает система (просто нажимаем Enter).
Первый и последний сектора также оставляем по умолчанию для использования всего дискового пространства (еще два раза Enter).
Задаем тип раздела:
: t
Выбираем номер раздела (в моем примере создавался раздел 3):
: 3
Командой L можно посмотреть список всех типов, но нас интересует конкретный — LVM (8e):
: 8e
Сохраняем настройки:
: w
Проинформируем систему, что в таблице разделов произошли изменения:
partprobe
Создаем физический том из нового раздела:
pvcreate /dev/sda3
Смотрим наши Volume Group и для нужного добавляем созданный том:
vgdisplay
vgextend vg_centos /dev/sda3
* в моем примере группа томов LVM называется vg_centos
Смотрим LVM-разделы и расширяем пространства для нужного:
lvdisplay
lvextend -l +100%FREE /dev/vg_centos/lv_root
* данная команда расширяем LVM-раздел /dev/vg_centos/lv_root, используя все свободное пространство (100%FREE).
Заключение
Я постарался рассказать подробно и понятно о полной настройке ELK Stack. Информацию в основном почерпнул в официальной документации. Мне не попалось более ли менее подробных статей ни в рунете, ни в буржунете, хотя искал я основательно. Вроде бы такой популярный и эффективный инструмент, но статей больше чем просто дефолтная установка я почти не видел. Буквально одна на хабре попалась с какой-то более ли менее кастомизацией.
Какие-то проверенные моменты я не стал описывать в статье, так как посчитал их неудобными и не стал использовать сам. Например, если отказаться от logstash и отправлять данные с beats напрямую в elasticsearch, то на первый взгляд все становится проще. Штатные модули beats сами парсят вывод, устанавливают готовые визуализации и дашборды в Kibana. Вам остается только зайти и любоваться красотой Но на деле все выходит не так красиво, как хотелось бы. Кастомизация конфигурации усложняется. Изменение полей в логах приводит к более сложным настройкам по вводу этих изменений в систему. Все настройки поступающей информации переносятся на каждый beats, изменяются в конфигах отдельных агентов. Это неудобно.
В то же время, при использовании logstash, вы просто отправляете данные со всех beats на него и уже в одном месте всем управляете, распределяете индексы, меняете поля и т.д. Все настройки перемещаются в одно место. Это более удобный подход. Плюс, при большой нагрузке вы можете вынести logstash на отдельную машину.
Я не рассмотрел в своей статье такие моменты как создание визуализаций и дашбордов в Кибана, так как материал уже и так получился объемный. Я устал писать эту статью Смотрите остальные мои материалы по данной теме. Там есть примеры.
Так же я не рассмотрел такой момент. Logstash может принимать данные напрямую через syslog. Вы можете, к примеру, в nginx настроить отправку логов в syslog, минуя файлы и beats. Это может быть более удобно, чем описанная мной схема. Особенно это актуально для сбора логов с различных сетевых устройств, на которые невозможно поставить агента, например mikrotik. Syslog поток так же можно парсить на ходу с помощью grok. Отдельно надо рассмотреть автоочистку старых индексов в elasticsearch.
Подводя итог скажу, что с этой системой хранения логов нужно очень вдумчиво и внимательно разбираться. С наскока ее не осилить. Чтобы было удобно пользоваться, нужно много всего настроить. Я описал только немного кастомизированный сбор данных, их визуализация — отдельный разговор. Сам я постоянно использую и изучаю систему, поэтому буду рад любым советам, замечаниям, интересным ссылкам и всему, что поможет освоить тему.
Все статьи раздела elk stack — https://serveradmin.ru/category/elk-stack/.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .