Базовая настройка LVM + Debian 12 + Docker

Основные моменты при развертывании сервера с использованием LVM (logical volume manager) менеджера логических томов.

Установка Debian 12 и разбивка на разделы для работы сервера.

1. Запускаем установщик в VMware готового дистрибутива Debian 12;

2. Доходим до раздела разметка дисков

И выбираем Вручную

Рис 1. Разметка дисков
Рис 1. Разметка дисков

3. Выбираем диск VMware для последующий разметки

Рис 2. VMware Virtual
Рис 2. VMware Virtual

4. Создать новую пустую таблицу разделов на этом устройстве

Рис 3. Новая таблица разделов
Рис 3. Новая таблица разделов

5. Выбираем снова наш диск

Рис 4. Первичный и логический диск
Рис 4. Первичный и логический диск

6. Создаем новый раздел

Рис 5. Создать новый раздел
Рис 5. Создать новый раздел

7. Выбираем максимальное место нового раздела

Рис 6. разметка диска
Рис 6. разметка диска

Дальше идет разметка дисков: Первичный и Логический

Первичный раздел (Primary Partition)

Первичный раздел — это основной тип раздела на жестком диске. В контексте MBR можно создать до четырёх первичных разделов на одном физическом диске.

1) Основные характеристики первичных разделов:

2) Количество: На диске может быть максимум четыре первичных раздела.

3) Использование: Один из первичных разделов может быть помечен как активный, с которого загружается операционная система.

4) Прямая загрузка: Операционная система может загружаться непосредственно из первичного раздела.

5) Типы данных: Первичные разделы могут использоваться для хранения операционных систем, данных или других целей.

Логический раздел (Logical Partition)

Логический раздел — это подтип разделов, который существует внутри расширенного раздела (Extended Partition). Логические разделы используются для преодоления ограничения на количество первичных разделов.

Основные характеристики логических разделов:

Создание внутри расширенного раздела: Логические разделы создаются внутри единственного расширенного раздела, который сам является одним из первичных разделов.

Количество: Количество логических разделов практически не ограничено, что позволяет создавать гораздо больше разделов на одном физическом диске.

Использование: Логические разделы могут использоваться для хранения данных и установки программ, но не могут быть активными для загрузки операционной системы напрямую (это обычно делается через загрузчик, установленный на первичном разделе).

Гибкость: Логические разделы позволяют более гибко управлять дисковым пространством, особенно когда требуется более четырёх разделов на одном диске.

Различия между первичными и логическими разделами:

Число: Первичных разделов может быть до четырёх, логических — гораздо больше (внутри одного расширенного раздела).

Структура: Первичные разделы создаются непосредственно на диске, а логические находятся внутри расширенного раздела.

Загрузка ОС: Операционная система может загружаться непосредственно из первичного раздела, тогда как логический раздел для этого использоваться не может без посредничества загрузчика.

Гибкость: Логические разделы обеспечивают большую гибкость в управлении дисковым пространством, особенно при необходимости создания большого количества разделов.

8. Выбираем первичный раздел для создания раздела на нашем диске

Рис 7. Первичный диск
Рис 7. Первичный диск

9. Попадаем в разделы:

· Использовать как;

· Точка монтирования;

· Параметры монтирования;

· Метка;

· Зарезервированные блоки;

· Обычное использование;

· Метка ‘загрузочный’;

· Удалить раздел;

· Настройка раздела закончена;

10. Настройка диска

Рис 8. Разметка диска
Рис 8. Разметка диска

Пройдемся по настройкам.

1. Использовать как (Use as)

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

Примеры использования:

  • ext4: Одна из самых популярных файловых систем для Linux.
  • swap: используется как область подкачки для расширения оперативной памяти.
  • NTFS, FAT32: для разделов, совместимых с Windows.
  • EFI System Partition (ESP): Необходим для систем с UEFI.

Точка монтирования (Mount point)

Точка монтирования указывает, в какую часть файловой системы будет интегрирован данный раздел.

Примеры использования:

  • / (корень): Основная точка монтирования для операционной системы.
  • /home: Отдельный раздел для домашних директорий пользователей.
  • /boot: Раздел, содержащий загрузочные файлы.
  • /var, /opt, /mnt: Для других специфических целей или приложений.

Параметры монтирования (Mount options)

Эти параметры определяют различные опции монтирования раздела, такие как поведение при ошибках или использование кэширования.

Примеры использования:

  • defaults: Стандартный набор опций монтирования.
  • ro: Монтирование в режиме только для чтения.
  • noatime: Отключение обновления времени доступа для повышения производительности.
  • nodiratime: Отключение обновления времени доступа для директорий.

Метка (Label)

Метка раздела — это название, которое можно присвоить разделу для облегчения его идентификации.

Примеры использования:

  • ROOT: Для корневого раздела.
  • HOME: Для домашнего раздела.
  • DATA: Для раздела с данными.

Зарезервированные блоки (Reserved blocks)

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

Примеры использования:

  • Зарезервированные блоки: Обычно составляет около 5% от общего пространства раздела.

Обычное использование (Typical usage)

Это поле описывает предполагаемое использование раздела, что может помочь системе оптимизировать его для конкретных задач.

Примеры использования:

  • Стандартное использование (Standard): Обычные файлы и директории.
  • Логирование (Logging): Разделы, используемые для хранения логов.
  • Хранилище больших файлов (Large file storage): Для больших файлов, таких как видеозаписи.

Метка 'загрузочный' (Bootable flag)

Этот параметр устанавливает, является ли раздел загрузочным.

Примеры использования:

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

Удалить раздел (Delete partition)

Этот параметр позволяет удалить существующий раздел на диске.

Использование:

  • Удаление: Выберите этот параметр, чтобы удалить выбранный раздел, освободив место для создания новых разделов или расширения существующих.

Настройка раздела закончена (Partition setup finished)

Этот параметр завершает настройку текущего раздела и возвращает вас к главному меню разметки диска.

Использование:

  • Завершить: Когда вы закончили настройку параметров для текущего раздела, выберите этот параметр, чтобы подтвердить и сохранить изменения.

Переходим в раздел разметка и запись информации о разделах на диск.

Записать изменения на диск и настроить LVM нажимаем Продолжить.

Рис 9. Разметка диска
Рис 9. Разметка диска

Меню: кратко о имеющейся конфигурации LVM

В данном разделе мы и будем создавать тома.

Нажимаем создать группу томов

Рис 10. Создать группу томов
Рис 10. Создать группу томов

Введите название, которое вы хотите дать новой группе томов

Здесь мы задаем правильное название для группы томов, ориентируемся по задачам, которые будет выполнять сервер, в нашем же случае можно назвать vg_docker.

Снизу описаны более подробные описания правильных названий групп томов.

При создании группы томов (volume group, VG) в LVM важно выбрать имя, которое будет легко идентифицируемо и понятно в контексте вашей системы. Вот несколько рекомендаций для выбора правильного имени группы томов:

1. Описание назначения

Имя должно отражать назначение или содержимое группы томов.

  • vg_data — для хранения данных.
  • vg_os — для операционной системы.
  • vg_backup — для резервных копий.

2. Использование стандартных префиксов

Стандартные префиксы помогают легко идентифицировать группы томов как таковые.

  • vg_ — стандартный префикс для volume group.
  • lvm_ — иногда также используется как префикс.

3. Указание имени сервера или хоста

Если у вас несколько серверов или хостов, указание их имени в группе томов может помочь в идентификации.

  • vg_server1_data
  • vg_webserver_os

4. Учитывание окружения

Для больших инфраструктур может быть полезно указывать окружение.

  • vg_prod_db — для базы данных в производственной среде.
  • vg_dev_web — для веб-приложений в среде разработки.

5. Использование сокращений

Сокращения помогают сократить длину имени, сохраняя при этом его смысл.

  • vg_srv1_os вместо vg_server1_operating_system
  • vg_bkp вместо vg_backup

Примеры хороших имен для групп томов:

vg_data — группа томов для данных.

vg_os — группа томов для операционной системы.

vg_home — группа томов для домашних директорий.

vg_backup — группа томов для резервных копий.

vg_websrv1 — группа томов для первого веб-сервера.

vg_prod_db — группа томов для базы данных в производственной среде.

vg_dev_app — группа томов для приложений в среде разработки

Выбираем устройство или несколько из списка, в данном случае это наш будущий диск.

Рис 11. Группа томов
Рис 11. Группа томов

Записываем изменения и нажимаем продолжить

Рис 12. Разметка диска
Рис 12. Разметка диска

Переходим к созданию логического тома:

Выбираем – создать логический том и нажимаем продолжить

Рис 13 Создать логический том.
Рис 13 Создать логический том.

Выбираем, и пишем раздел boot (необходим для загрузчика):

Рис 14. boot
Рис 14. boot

Как правило для загрузчика выделяют 512Мб

Рис 15. boot
Рис 15. boot

Раздел swap (файл подкачки) смотрим, сколько у нас есть оперативной памяти и отходим от нее.

Рекомендации:

· 2 ГБ оперативной памяти и минимальная нагрузка: 2 ГБ swap.

· 2 ГБ оперативной памяти и средняя/высокая нагрузка: 3-4 ГБ swap.

· Использование гибернации: 2 ГБ или чуть больше swap.

Рис 16. Swap
Рис 16. Swap

Ставим 2000МБ для swap

Рис 17. Swap настройка
Рис 17. Swap настройка

Раздел home.

Создание отдельного раздела /home на сервере может иметь как свои преимущества, так и недостатки, в зависимости от конкретных задач и требований к серверу. Рассмотрим основные моменты, которые помогут решить, нужно ли создавать отдельный раздел /home на сервере.

Преимущества отдельного раздела /home

1. Безопасность данных пользователей:

  • Отдельный раздел /home позволяет защитить данные пользователей в случае сбоя системы. Если корневой раздел (/) переполнится или возникнут проблемы с файловой системой, данные пользователей останутся нетронутыми.

2. Упрощение резервного копирования:

  • Отдельный раздел /home упрощает процесс резервного копирования данных пользователей. Можно настроить регулярное резервное копирование только этого раздела, что сэкономит время и ресурсы.

3. Гибкость управления пространством:

  • Отдельный раздел /home позволяет более гибко управлять дисковым пространством, выделяя определённый объём для данных пользователей и предотвращая переполнение корневого раздела.

4. Легкость обновлений и миграций:

  • При обновлении операционной системы или миграции на новый сервер, наличие отдельного раздела /home упрощает процесс, так как можно переустановить систему без затрагивания данных пользователей.

Недостатки отдельного раздела /home

1. Сложность настройки:

  • Создание и управление несколькими разделами требует дополнительного времени и знаний. Неопытные администраторы могут столкнуться с трудностями при первоначальной настройке.

2. Нерациональное использование дискового пространства:

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

В нашем случае мы используем на сервере только Docker и создаем dockerfile для удобного запуска, так что можно выделить некоторый объем под /home – 1GB

Рис 18. home
Рис 18. home
Рис 19. home
Рис 19. home

Создание корневого раздела /

Рис 20. root
Рис 20. root
Рис 21. root
Рис 21. root

Оставшиеся место выделяем под /var так как там хранятся временные файлы для нашего сервера.

Рис 22. var
Рис 22. var

По итогу должно выйти таким образом:

Нажимаем продолжить и создаем логический том

Рис 23. Разметка диска
Рис 23. Разметка диска

Нажимаем закончить

Рис 24. LVM
Рис 24. LVM

Итог разметки для томов выглядит таким образом:

Рис 25. LVM
Рис 25. LVM

Итоговое действие, выбираем для всех наших томов нужные разделы, для этого выбираем первый том на 511МБ нажимаем на него и выбираем:

Рис 26. Boot
Рис 26. Boot

Раздел – не использовать – нажимаем

Рис 27. boot
Рис 27. boot

Выбираем файловую систему EXT4 и нажимаем продолжить

Рис 28. boot
Рис 28. boot

Заходим в точку монтирования после данного действия и выбираем boot и продолжить

Рис 29. Точка монтирования
Рис 29. Точка монтирования
Рис 30. boot
Рис 30. boot

Настройка раздела закончена пункт выбираем и нажимаем - Продолжить

Рис 31. разметка дисков
Рис 31. разметка дисков

Повторяем такое же действие с другими томами.

Однако!!!

Для раздела swap выбираем РАЗДЕЛ ПОДКАЧКИ

Рис 32. swap
Рис 32. swap

По итогу наш диск должен быть таким:

Рис 33 Разметка дисков
Рис 33 Разметка дисков

Выбираем закончить разметку и записать изменения на диск и нажимаем Продолжить.

Рис 34. Разметка дисков
Рис 34. Разметка дисков

Соглашаемся с изменениями на таблице разделов:

Рис 35. Изменение на диске
Рис 35. Изменение на диске

Идет установка базовой системы

Рис 36. Установка
Рис 36. Установка

Настройка менеджера – нажимаем нет

Рис 37. Менеджер пакетов
Рис 37. Менеджер пакетов

Зеркало оставляем deb.debian.org

Рис 38. deb
Рис 38. deb

Пропускаем Прокси (если он есть, пишем необходимые данные)

Выбор программного обеспечения:

Выключаем все ненужное и оставляем SSH и стандартные системные утилиты:

Рис 39. SSH
Рис 39. SSH

Нажимаем продолжить.

Установка системного загрузчика GRUB. Устанавливаем на первичный диск.

Рис 40. Первичный диск
Рис 40. Первичный диск

Наш диск sda. Выбираем его и нажимаем продолжить.

Рис 41. sda
Рис 41. sda

После установки перезапускаем VMware. Входим под пользователя на сервере и пишем команду lsblk.

Если вы все сделали правильно вы увидите такую ветку:

Рис 42. lsblk
Рис 42. lsblk

Базовая установка и настройка Debian + Docker

1. Заходим по ssh на сервер, где у нас ssh username@ip

Ip адрес можно узнать командной ip a

Рис 43. ip a
Рис 43. ip a

Смотрим на сетевой интерфейс ens33 (у вас он может по другому называться), lo не используем, он нам для этого не нужен.

1. Зашли на сервер и переходим в режим root

su –

Обновляем пакеты:

apt update -y apt upgrade -y

Устанавливаем базовые программы

apt install htop mc vim sudo

Устанавливаем репозиторий Docker:

# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update

Устанавливаем сам Docker:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Проверяем работает ли Docker:

sudo docker run hello-world

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

Создаем группу докер:

sudo groupadd docker

Добавляем пользователя

sudo usermod -aG docker $USER

Активируем изменения в группе

newgrp docker

Переключаемся в обычного пользователя

su username

Запускаем докер от обычного пользователя

docker run hello-world

Основные цели создания LVM:

Гибкое управление дисковым пространством:

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

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

Для примера возьмём сервер с Debian 12 + Docker:

У нас есть виртуальная машина в VMware Vshere, Debian 12 на ней установлен Docker, заканчивается место в директории /var, нужно что-то делать, иначе перестанет функционировать сервер, для решения данной проблемы используется LVM, важный момент, при изначальном развертывании сервера LVM не используется, его нужно выбрать, так как в будущем не будет возможности его применить.

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

2. Заходим на сервер и через утилиту fdisk мы добавляем наш новый диск, создаем для него раздел и монтируем к необходимому каталогу.

Рис 44. раздел sda4
Рис 44. раздел sda4
2
6 комментариев

А зачем это здесь? И что это за "Рис 44. раздел sda4"
Решил сюда свою курсовую, диплом запостить?
UPD: Хы тут реально 44 рисунка :))

1
Ответить

Сюжет на уровне Солсов, графика на уровне терминалов, геймплея нет.

1
Ответить

Спасибо! Как раз то что нужно было.

Ответить

Всегда пожалуйста, но это только первая часть, потом будет еще (если будет не лень)

Ответить

Устанавливаем репозиторий DockerЗачем? Все эти манипуляции с лихвой закрываются официальным автоинсталлером

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Ответить

Почему дебиан, почему из ГУЯ?) все ж проще

Ответить