- Создание диска из оперативной памяти (озу)
- Создание таблицы разделов
- Протестировать скорость диска
- Системные требования
- Проверка диска на ошибки и bad blocks
- Установка Debian 10 на raid
- Загрузочная флешка для Debian
- Подключение Яндекс Диска
- Информация о дисках
- Загрузка дистрибутива (iso образа)
- Работа в debian с lvm
- Установка по сети (netinstall)
- Установка Debian 10 Buster
- Утилита FDISK в Unix/Linux
- Посмотреть свободное место на диске
- Проверить нагрузку на диск
- Дополнительные материалы по Debian
- Разметка жесткого диска
- Подключить сетевой диск
- Запись образа на флешку
- Разметка жесткого диска
- Видео
- Помогла статья? Подписывайся на telegram канал автора
- Установка Дебиан 9 на raid
- Подключить и примонтировать диск
- Разметка диска
- Создание файловой системы ext4, xfs
Создание диска из оперативной памяти (озу)
Расскажу об еще одной интересной возможности при работе с дисками — создание диска из оперативной памяти. Зачем это может пригодится на практике, я не знаю. Сам использовал только из любопытства для тестов. В проде лично я не вижу применения. Linux обычно и так использует всю доступную оперативную память и кэширует файловые операции. Так что большой необходимости в дисках в оперативной памяти я не вижу. Но может вы найдете реальное применение.
Создаем диск из оперативной памяти размером в 5 Гб и монтируем его в /mnt/tmpfs.
# mkdir /mnt/tmpfs/ # mount -t tmpfs -o size=5000M tmpfs /mnt/tmpfs/
Смотрим, что получилось.
# df -h

Я создал диск в оперативной памяти размером 5 Гб. Проверим его скорость записи.
# # sync; dd if=/dev/zero of=/mnt/tmpfs/tempfile bs=1M count=3000; sync 3000+0 records in 3000+0 records out 3145728000 bytes (3.1 GB, 2.9 GiB) copied, 1.11855 s, 2.8 GB/s
Неплохо 🙂 Что примечательно, оперативная память не резервируется сразу при создании диска. Она расходуется только если на диск действительно записываются какие-то файлы. Причем расходуется память пропорционально количеству данных, которые на диск записаны. Если у вас есть идеи, как можно использовать такие разделы, делитесь в комментариях. Первое, что приходит в голову — использовать диск из оперативной памяти под кэш статических страниц web сайта. Но как я уже говорил, ядро linux и так должно кэшировать в памяти то, к чему идут интенсивные запросы.
На практике я все это не проверял. Есть какой-то прирост к отклику сайта или нет, если его кэш поместить на такой диск. Было бы любопытно проверить, но как-то все времени не хватает. Может кто-то проверит и поделится результатом. Так же такой диск можно использовать под какую-нибудь тестовую базу данных для ускорения обработки запросов. Можно, конечно, заморочиться и настроить нормально кэши самой базы. Но если файлы базы просто поместить на диск в оперативной памяти, то прирост очевидный будет сразу же, без всяких настроек.
Обращаю внимание на важный нюанс. Следите за заполнением диска из памяти. Если вы израсходуете всю доступную память и начнет работать swap, вы получите сильные тормоза в системе.
Создание таблицы разделов
Чтобы начать разбиение диска, запустите fdisk с именем устройства. В этом примере мы будем работать с /dev/sdb :
fdisk /dev/sdbКомандная строка изменится, и откроется диалоговое fdisk котором вы можете вводить команды:
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): Изменения, внесенные вами в таблицу разделов, не вступят в силу, пока вы не запишете их с помощью команды w . Вы можете выйти из диалога fdisk без сохранения изменений, используя команду q .
Чтобы получить список всех доступных команд, введите m :
m
Если вы разбиваете новый диск на разделы, прежде чем начинать создавать разделы, вам необходимо создать таблицу разделов. Пропустите этот шаг, если на устройстве уже есть таблица разделов, и вы хотите ее сохранить.
fdisk поддерживает несколько схем разделения. MBR и GPT — два самых популярных стандарта схем разделов, которые по-разному хранят информацию о разделах на диске. GPT — это новый разрешающий стандарт, который имеет много преимуществ перед MBR. Основные моменты, которые следует учитывать при выборе стандарта разметки:
- Используйте MBR для загрузки диска в устаревшем режиме BIOS.
- Используйте GPT для загрузки диска в режиме UEFI.
- Стандарт MBR поддерживает создание раздела на диске размером до 2 ТиБ. Если у вас диск объемом 2 ТиБ или больше, используйте GPT.
- MBR имеет ограничение в 4 основных раздела. Если вам нужно больше разделов, один из основных разделов можно настроить как расширенный и содержать дополнительные логические разделы. С GPT у вас может быть до 128 разделов. GPT не поддерживает расширенные или логические разделы.
В этом примере мы будем использовать таблицу разделов GPT.
Введите g чтобы создать новую пустую таблицу разделов GPT:
gРезультат будет выглядеть примерно так:
Created a new GPT disklabel (GUID: 4649EE36-3013-214E-961C-51A9187A7503).Следующим шагом будет создание новых разделов.
Создадим две перегородки. Первый размером 100 ГиБ, а второй займет оставшееся место на диске.
Выполните команду n чтобы создать новый раздел:
nВам будет предложено ввести номер раздела. Нажмите «Enter», чтобы использовать значение по умолчанию ( 1 ):
Partition number (1-128, default 1):Далее команда попросит указать первый сектор. Как правило, всегда рекомендуется использовать значения по умолчанию для первого значения. Нажмите «Enter», чтобы использовать значение по умолчанию ( 2048 ):
First sector (2048-500118158, default 2048):При следующем запросе вам нужно будет ввести последний сектор. Вы можете использовать абсолютное значение для последнего сектора или относительное значение для начального сектора, используя символ +, следующий за размером раздела. Размер может быть указан в кибибайтах (K), мебибайтах (M), гибибайтах (G), тебибайтах (T) или пебибайтах (P).
Введите +100G чтобы установить размер раздела 100 ГиБ:
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-500118158, default 500118158): +100GCreated a new partition 1 of type 'Linux filesystem' and of size 100 GiB.По умолчанию тип нового раздела установлен на «Файловая система Linux», что в большинстве случаев подходит. Если вы хотите изменить тип, нажмите l чтобы получить список типов разделов, а затем нажмите t чтобы изменить тип.
Создадим второй раздел, который займет оставшееся место на диске:
nИспользуйте значения по умолчанию для номера раздела, первого и последнего секторов. Это создаст раздел, который будет использовать все доступное пространство на диске.
Partition number (2-128, default 2):
First sector (209717248-625142414, default 209717248):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (209717248-625142414, default 625142414): После создания разделов используйте команду p чтобы отобразить новую таблицу разделов:
pDisk /dev/sdb: 298.9 GiB, 320072933376 bytes, 625142448 sectors
Disk model: nal USB 3.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: F8365250-AF58-F74E-B592-D56E3A5DEED1
Device Start End Sectors Size Type
/dev/sdb1 2048 209717247 209715200 100G Linux filesystem
/dev/sdb2 209717248 625142414 415425167 198.1G Linux filesystem Если вы хотите удалить раздел, используйте команду d .
Сохраните изменения, запустив команду w :
pКоманда запишет таблицу на диск и выйдет из меню fdisk .
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.Ядро прочитает таблицу разделов устройства без перезагрузки системы.
Протестировать скорость диска
Проверка реальной скорости диска задача не простая. Во-первых, в операционной системе есть кэш. Если используется рейд контроллер, то в нем тоже есть свой кэш. Важно мерить скорость так, чтобы не попадать в эти кэши. К тому же проще всего измерить линейную скорость чтения и записи, но в реальном профиле нагрузки сервера линейной записи и чтения практически не бывает. Так что я предлагаю пару простых способов измерить скорость записи и чтения на глазок, просто чтобы прикинуть или сравнить разные диски.
Для теста записи можно воспользоваться утилитой dd, записав пустой файл. Размер файла выбирайте больше объема оперативной памяти. За это отвечает параметр count, который задает количество блоков bs в 1 мб, которые мы запишем.
# sync; dd if=/dev/zero of=tempfile bs=1M count=12000; sync 12000+0 records in 12000+0 records out 12582912000 bytes (13 GB, 12 GiB) copied, 14.4436 s, 871 MB/s

Это обычный ssd диск Samsung 860 EVO. Виртуальная машина работает на нем. А вот результат на рейд контроллере с отложенной записью, где массив raid10 собран из 4-х sata hdd.
# sync; dd if=/dev/zero of=tempfile bs=1M count=2000; sync 2000+0 records in 2000+0 records out 2097152000 bytes (2.1 GB) copied, 1.83823 s, 1.1 GB/s
Тут явно запись полностью попадает в кэш контроллера, поэтому такая нереальная скорость для обычных hdd дисков. Привожу это для примера, чтобы вы понимали, что то, что вы видите на тестах скорости это не всегда скорость самих дисков. Вот обычный софтовый raid1 на двух hdd дисках.
# sync; dd if=/dev/zero of=tempfile bs=1M count=6000; sync 6000+0 records in 6000+0 records out 6291456000 bytes (6.3 GB) copied, 37.7701 s, 167 MB/s
Скорость чтения диска можно измерить, к примеру, с помощью программы hdparm. Ставится из стандартных репозиториев.
# apt install hdparm # hdparm -t /dev/vda1 /dev/vda1: Timing buffered disk reads: 742 MB in 3.00 seconds = 247.13 MB/sec
Привожу в пример эту программу, так как у нее явно указано, что ключ t позволяет производить чтение непосредственно с диска, минуя кэш системы. Хотя способов это сделать есть множество, но этот, как мне кажется, самый простой.
Системные требования
Начнем с системных требований. Debian, как и любой linux дистрибутив в минимальной установке, требует очень мало системных ресурсов. Согласно официальной документации, минимальные системные требования для установки Debian 10 следующие.
На практике, я обычно начинаю с виртуалок c 1 CPU, 512 Мб и 20 Гб диска для небольших задач (web сайт, шлюз, и т.д.) Дальше уже смотрите по загрузке и потребностям. Такие же минимальные значения системных ресурсов обычно стоят в начальных VDS или VPS хостеров.
Проверка диска на ошибки и bad blocks
С выходом файловых систем ext4 и xfs я практически забыл, что такое проверка диска на ошибки. Сейчас прикинул и ни разу не вспомнил, чтобы у меня были проблемы с файловой системой. Раньше с ext3 или ufs на freebsd проверка диска на ошибки было обычным делом после аварийного выключения или еще каких бед с сервером. Ext4 и xfs в этом плане очень надежны.
В основном ошибки с диском вызваны проблемами с железом. Как посмотреть параметры smart я уже показал выше. Но если у вас все же появились какие-то проблемы с файловой системой, то решить их можно с помощью fsck (File System Check). Обычно она входит в базовый состав системы. Запустить проверку можно либо указав непосредственно раздел или диск, либо точку монтирования. Раздел при этом должен быть отмонтирован.
# umount /dev/sdb1 # fsck /dev/sdb1 fsck from util-linux 2.33.1 e2fsck 1.44.5 (15-Dec-2018) /dev/sdb1: clean, 11/1310720 files, 109927/5242619 blocks
Проверка завершена, ошибок у меня не обнаружено. Так же у fsck есть необычная опция, которая не указана в документации или man. Запустив fsck с ключем -c можно проверить диск на наличие бэд блоков.
# fsck -c /dev/sdb1

Насколько я понимаю, проверка выполняет посекторное чтение и просто сообщает о том, что найден бэд блок. Теоретически, можно собрать все эти блоки в отдельный файл и затем передать их утилите e2fsck, которая сможет запомнить эти бэды и исключить из использования.
# fsck -c /dev/sdb1 > badblocks.txt # e2fsck -l badblocks.txt /dev/sdb1
На практике я не проверял как это работает и имеет ли вообще смысл в таких действиях. Если с диском замечены хоть малейшие проблемы, я его сразу меняю.
Установка Debian 10 на raid
Рассмотрим вариант установки debian на софтовый рейд mdadm. Эта актуальная ситуация, когда вы разворачиваете систему на железе, а не виртуальной машине. К примеру, такая конфигурация будет полезна для установки proxmox. В этой статье я уже рассматривал установку debian на raid1. Но там более старая версия Debian. Так что рассмотрю еще раз эту тему уже на примере Debian 10.
Итак, начинаем установку системы по приведенной ранее инструкции. Доходим до этапа разбивки диска и выбираем режим Manual.

Выбираем любой из дисков и перемещаемся в раздел конфигурации дисков. Нам нужно, чтобы получилась следующая картина:
- Массив raid1, объединяющий оба диска.
- /boot раздел прямо на mdadm рейде.
- Поверх массива LVM том на всем остальном пространстве, кроме /boot.
- Корневой раздел по всему lvm.
В конечном итоге, в конфигураторе это выглядит так:

Последовательность действий для этой конфигурации следующая:
- На каждом диске создаете по 2 раздела — один под /boot 500 Мб и второй все остальное пространство.
- Объединяете эти разделы в 2 raid1 mdadm. Один массив под /boot, второй под остальную систему.
- На массиве под /boot сразу же делаете раздел /boot и файловую систему ext2.
- Создаете volume group на весь второй массив, потом в этой группе создаете logical volume под корневой раздел.
- В logical volume создаете корневой раздел / и файловую систему ext4.
В итоге у вас должно получиться то же, что и у меня на картинке. Дальше ставите debian 10 как обычно. После установки на raid нужно выполнить несколько важных действий.
- Зайти в систему и создать swap.
- Установить загрузчик на оба диска. Во время установки он был установлен только на один диск.
- Протестировать отказ одного из дисков.
Думаю, с созданием swap вопросов быть не должно. По ссылке все подробно описано. Установим загрузчик на оба жестких диска, чтобы в случае выхода любого из них, система смогла загрузиться. Для этого выполняем команду:
# dpkg-reconfigure grub-pc
Выскочат пару запросов на указание дополнительных параметров. Можно ничего не указывать, оставлять все значения по-умолчанию. А в конце выбрать оба жестких диска для установки загрузчика.

Смотрим теперь, что с дисками.

Картина такая, как и было задумано. Выключим сервер, отсоединим один диск и включим снова. При запуске, нормально отработал grub, дальше посыпались ошибки в консоль.

Тем не менее, сервер через некоторое время загрузился. Смотрим, в каком состоянии диски.

В целом, все в порядке, система полностью работает. Просто не хватает одного диска. Теперь снова выключим сервер и воткнем в него чистый диск такого же объема. То есть имитируем замену сломанного диска на новый. Запускаем сервер и проверяем список дисков в системе.
# fdisk -l | grep /dev Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors /dev/sda1 * 2048 999423 997376 487M fd Linux raid autodetect /dev/sda2 999424 20969471 19970048 9.5G fd Linux raid autodetect Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors Disk /dev/md1: 9.5 GiB, 10215227392 bytes, 19951616 sectors Disk /dev/md0: 475 MiB, 498073600 bytes, 972800 sectors Disk /dev/mapper/vg00-root: 9.5 GiB, 10213130240 bytes, 19947520 sectors
Старый диск sda c двумя разделами и новый диск sdb без разделов. Нам нужно на новый диск скопировать структуру диска sda. Делаем это следующей командой.
# sfdisk -d /dev/sda | sfdisk /dev/sdb
# fdisk -l | grep /dev Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors /dev/sda1 * 2048 999423 997376 487M fd Linux raid autodetect /dev/sda2 999424 20969471 19970048 9.5G fd Linux raid autodetect Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors /dev/sdb1 * 2048 999423 997376 487M fd Linux raid autodetect /dev/sdb2 999424 20969471 19970048 9.5G fd Linux raid autodetect Disk /dev/md1: 9.5 GiB, 10215227392 bytes, 19951616 sectors Disk /dev/md0: 475 MiB, 498073600 bytes, 972800 sectors Disk /dev/mapper/vg00-root: 9.5 GiB, 10213130240 bytes, 19947520 sectors
То, что надо. Теперь добавляем новый диск в деградированные массивы mdadm.
# mdadm --add /dev/md0 /dev/sdb1

Дожидаемся окончания ребилда массива под boot. Это будет быстро. И возвращаем диск в корневой раздел.
# mdadm --add /dev/md1 /dev/sdb2
Не забываем добавить загрузчик на новый диск.
# dpkg-reconfigure grub-pc
После окончания ребилда можно перезагрузить сервер, чтобы убедиться, что все порядке. Я рекомендую всегда делать подобные проверки при настройке серверов. Не важно, какой у вас рейд контроллер. Надо имитировать поломку диска и выполнить его замену. При необходимости, процесс восстановления можно записать, чтобы при поломке диска точно знать, как действовать.
На этом иснтрукция по установке Debian 10 на софтовый рейд массив закончена. По-моему, получился очень функциональный вариант. Дальше на этот сервер можно установить proxmox и получить устойчивый к отказу дисков гпервизор. Причем по надежности он будет не хуже, чем железный рейд, а возможно и лучше.
Загрузочная флешка для Debian
Обычные CD диски сейчас уже становятся редкостью. Для меня не понятно, почему размеры iso образов до сих пор частенько подгоняют под размер CD или DVD диска. Я уже много лет использую загрузочные флешки для установки систем на железо. С ними быстрее, удобнее, проще обновлять образ.
Есть много способов записать образ debian на флешку для последующей установки. У меня в комплекте есть несколько популярных программ для создания загрузочных usb:
- Rufus.
- Unetbootin.
- Win32DiskImager.
- Etcher.
Это все бесплатные программы под Windows. Чаще всего пользуюсь первыми двумя. Иногда бывают ситуации, когда инсталлятор не может установить систему, записанную на флешку той или иной программой. Не знаю, по какой причине это бывает. Тогда приходится пробовать разные версии.
В данном случае нам подойдет программа Rufus. Вы без проблем найдете ее на просторах интернета, не буду приводить ссылки. Сам всегда держу ее под рукой. Никаких особенных настроек не надо. Просто запускаете программу, выбираете флешку, образ и вперед.

Дожидаемся окончания процесса и загрузочная флешка готова.
Подключение Яндекс Диска
Статью с настройкой дисков завершу описанием подключения ндекс.Диска. Я лично давно и интенсивно его использую. У меня есть статья по созданию резервной копии сайта на яндекс.диск. Статья хоть и старая, но актуальная. Я продолжаю использовать предложенные там решения.
Яндекс диск можно подключить как системный диск по webdav. Скажу сразу, что работает это так себе, я давно им не пользуюсь в таком виде. Мне больше нравится работать с ним через консольный клиент linux.
Устанавливаем консольный клиент yandex-disk на Debian.
# echo "deb http://repo.yandex.ru/yandex-disk/deb/ stable main" | tee -a /etc/apt/sources.list.d/yandex-disk.list > /dev/null # apt install gnupg # wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | apt-key add - # apt update && apt install yandex-disk
Дальше запускаете начальную настройку.
# yandex-disk setup
После этого яндекс диск подключен к системе и готов к работе. Посмотреть его статус можно командой.
# yandex-disk status

Остановить или запустить Яндекс.Диск можно командами.
# yandex-disk stop # yandex-disk start
Файл конфигурации находится по адресу /root/.config/yandex-disk/config.cfg. Туда, к примеру, можно добавить список папок исключений, которые не нужно синхронизировать.
exclude-dirs="dir1,exclude/dir2,path/to/another/exclude/dir"
Консольный клиент поддерживает символьные ссылки. Я много где использовал его. В основном в скриптах по автоматизации бэкапов. К примеру, я останавливал сервис яндекс диска, готовил бэкапы к отправке. Упаковывал их архиватором с разбивкой архивов по размеру. Потом создавал символьные ссылки в папке яндекс диска и запускал синхронизацию. Когда она заканчивалась, удалял локальные файлы и останавливал синхронизацию.
Яндекс диск сильно тормозит и падает, если у вас много мелких файлов. Мне доводилось хранить в нем бэкапы с сотнями тысяч файлов. Передать их в облако напрямую было невозможно. Я паковал их в архивы по 2-10 Гб и заливал через консольный клиент. Сразу могу сказать, что это решение в пользу бедных. Этот облачный диск хорош для домашних нужд пользователей и хранения семейных фоток и видео. Когда у вас большие потоки данных, которые нужно постоянно обновлять, работа с яндекс диском становится сложной.
Во-первых, трудно мониторить такие бэкапы. Во-вторых, тяжело убедиться в том, что то, что ты залил в облако, потом нормально скачается и распакуется из бэкапа. Как запасной вариант для архивов, куда они будут складываться раз в неделю или месяц, подойдет. Но как основное резервное хранилище точно нет. Какие только костыли я не придумывал для ндекс.Диска в процессе промышленной эксплуатации. В итоге все равно почти везде отказался. Да, это очень дешево, но одновременно и очень ненадежно. Он иногда падает. Это хорошо, что упал, можно отследить и поднять. Так же он может зависнуть и просто ничего не синхронизировать, при этом служба будет работать. Все это я наблюдал, когда пытался синхронизировать сотни гигабайт данных. Иногда у меня это получалось 🙂
Информация о дисках
Информацию о дисках в системе можно получить различными способами. Зачастую, интересна информация не только о физических дисках, но и о разделах. Начнем все же с физических дисков. Подробную информацию о железе, в том числе и о дисках, выдает программа hwinfo. В базовой системе ее нет, нужно поставить отдельно.
# apt install hwinfo
Теперь смотрим информацию о дисках:
# hwinfo --disk
Программа выведет железную информацию о всех дисках в системе. Вот пример вывода одного из физических дисков.

На выходе максимально подробная информация о диске — вендор, модель, серийный номер, метки диска в системе и много другое. Программа показывает принадлежность диска к рейд массиву, что бывает удобно. Вот вывод информации о диске из рейда adaptec.

Следующая программа, которую я использую, чтобы посмотреть информацию о физическом диске в debian — smartmontools. Она более громоздкая, тянет за собой кучу зависимостей, но зато умеет по расписанию следить за смартом дисков, слать уведомления в случае проблем. Фактически это не утилита, а готовый сервис. Ставится так.
# apt install smartmontools
Возможностей у программы много. Я в рамках данной статьи, покажу только, как посмотреть информацию о диске, в том числе параметры SMART.
# smartctl -i /dev/sda

# smartctl -A /dev/sdd

С диском некоторые проблемы, судя по смарту.
Физические диски посмотрели, теперь посмотрим на список дисков с привязкой к логическим разделам. Я обычно использую 2 утилиты для этого — lsblk и fdisk.
# lsblk -a

# fdisk -l | grep /dev/sd

Мне обычно хватает этих команд, чтобы получить полную информацию о дисках и разделах на них.
Загрузка дистрибутива (iso образа)
Существует 3 формата дистрибутива, различающиеся по типу носителя:
- CD образы.
- DVD образы.
- BD (Blu-Ray) образ (только для версии Debian Edu)
Я лично использую только CD образы:
- netinst.iso — Минимальный по объему образ, который содержит только самое необходимое для запуска установщика debian. Все остальное в процессе установки загружается из интернета. Без доступа к интернету, возможна установка голой системы с минимальным набором системных утилит.
- xfce-CD-1.iso — Стандартный iso образ, который подходит для offline установки минимальной конфигурации сервера с графическим окружением xfce (хотя зачем он на сервере?). По размеру сопоставим с обычным cd диском. Можно записать на флешку и устанавливать с нее.
Название образа netinst вводит в заблуждение, намекая на то, что для установки нужен интернет. На самом деле это не так. Базовую установку с минимальным набором программ, которые включают в себя основные системные утилиты, можно выполнить даже без наличия интернета.
Есть еще так называемые live дистрибутивы. Набор live образов позволяет попробовать систему дебиан без установки на железо. Отличаются друг от друга эти образы графической оболочкой. Данные iso образы актуальны для проверки работы системы на десктопах у обычных пользователей. Для системных администраторов, которые ставят систему на серверы, они вряд ли представляют интерес. Так что, если вам хочется просто посмотреть на работу системы, не устанавливая ее, можете воспользоваться live образами.
Для установки Debian на сервер, можно использовать любой дистрибутив, так как вам фактически нужна только голая система. Все остальное устанавливается отдельно по мере необходимости. Для жителей России удобно использовать зеркало яндекс для загрузки дистрибутива Debian — https://mirror.yandex.ru/debian-cd/current/amd64/iso-cd/ Скорость будет выше, чем с официального сайта. Я и потом использую этот репозиторий для установки пакетов и обновлений.
Работа в debian с lvm
LVM тема обширная и раскрыть ее у меня задача не стоит. В сети все это есть, я сам постоянно пользуюсь поиском. Приведу только несколько команд из своей шпаргалки, которыми я регулярно пользуюсь для создания, подключения и изменения lvm дисков. Команды актуальны для любых дистрибутивов, где есть lvm, не только в Debian.
Допустим, вы подключили 2 новых диска или raid массива к серверу и хотите их объединить в единое адресное пространство. Я расскажу, как это сделать. Только сразу обращаю внимание, что подключать одиночные диски так не следует, если там будут храниться важные данные. Выход из строя любого из дисков объединенного раздела приведет к потере всех данных. Это в общем случае. Возможно их можно будет как-то вытащить, но это уже не тривиальная задача.
В системе у меня один диск /dev/sda, я добавил еще 2 — sdb и sdc.
# lsblk -a NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 20G 0 disk ├─sda1 8:1 0 243M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 19.8G 0 part └─debian10--vg-root 254:0 0 19.8G 0 lvm / sdb 8:16 0 10G 0 disk sdc 8:32 0 10G 0 disk
Инициализируем диски в качестве физического тома lvm.
# pvcreate /dev/sdb /dev/sdc Physical volume "/dev/sdb" successfully created. Physical volume "/dev/sdc" successfully created.
Теперь создадим группу томов, в которую будут входить оба диска.
# vgcreate vgbackup /dev/sdb /dev/sdc Volume group "vgbackup" successfully created
В данном случае vgbackup — название созданной группы. Теперь в этой группе томов мы можем создавать разделы. Они в чем-то похожи на разделы обычных дисков. Мы можем как создать один раздел на всю группу томов, так и нарезать эту группу на несколько разделов. Создадим один раздел на всем пространстве группы томов. Фактически, этот раздел будет занимать оба жестких диска, которые мы добавили.
# lvcreate -l100%FREE vgbackup -n lv_full
lv_full название логического раздела. Теперь с ним можно работать, как с обычным разделом. Создавать файловую систему и монтировать к серверу. Сделаем это.
# mkfs -t ext4 /dev/vgbackup/lv_full # mkdir /mnt/backup # mount /dev/vgbackup/lv_full /mnt/backup
Проверяем, что получилось.
# df -h | grep /mnt/backup /dev/mapper/vgbackup-lv_full 20G 45M 19G 1% /mnt/backup
Мы подключили lvm раздел, который расположен на двух жестких дисках. Повторю еще раз — обычные жесткие диски так не собирайте, используйте только raid тома для этого.
Теперь для примера давайте удалим этот раздел и создадим 2 новых, один на 14 Гб, другой на 5 Гб и так же их подключим к системе. Для начала удаляем раздел lv_full, предварительно отмонтировав его.
# umount /mnt/backup # lvremove /dev/vgbackup/lv_full
Проверяем, что раздела нет.
# lvs

Остался только один — системный. Создаем 2 новых раздела:
# lvcreate -L14G vgbackup -n lv01 # lvcreate -L4G vgbackup -n lv02 # lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root debian10-vg -wi-ao---- <19.76g lv01 vgbackup -wi-a----- 14.00g lv02 vgbackup -wi-a----- 4.00g
Дальше так же создаем файловые системы и монтируем новые разделы к серверу. Надеюсь, на конкретных примерах я сумел показать удобство и особенность работы с lvm томами и разделами. Дальше мы продолжим эту тему. При автомонтировании через fstab томов lvm можно использовать их имена вида /dev/mapper/vgbackup-lv_full, а не метки. Эти имена не меняются.
Вот наглядный пример, где можно использовать lvm тома размазанные на несколько дисков. Есть небольшой файловый сервер с 4-мя sata дисками по 4 tb. Нужно было сделать максимально объемное файловое хранилище. Были собраны 2 mdadm raid1. Немного объема ушло на служебные разделы, а потом все, что осталось объединили в единый lvm том и получили шару объемом 6.4 Tb.

Сразу могу сказать, что производительность такой штуки не очень высокая, но зато есть защита от отказа одного из дисков, плюс файловое хранилище нужного объема. Можно было сразу все собрать в raid10, но я сейчас уже не помню, почему от этого отказались. Были какие-то объективные причины, а привел эту ситуацию я просто для примера. Таким образом можно объединять различные разнородные массивы для увеличения суммарного объема одного раздела.
Установка по сети (netinstall)
С сетевой установкой Debian есть определенная путаница. Как я уже ранее говорил, название iso образа netinst.iso вводит в заблуждение. На самом деле, с этого образа можно установить минимальную систему даже без наличия локальной сети. Но в то же время, при наличии интернета можно загрузить любой дополнительный пакет.
Настоящее руководство по netinstall представляет из себя совсем другую процедуру. Подробно она описана в официальном мануале — Подготовка файлов для загрузки по TFTP. Смысл сетевой установки в том, что вы со своего компьютера, на который хотите установить систему Debian, подключаетесь по технологии PXE к TFTP серверу и с него начинаете загружать установочные файлы.
При такой процедуре, вам для установки системы на компьютер не нужно ничего, кроме локальной сети и настроенного tftp сервера. Кроме этого, сетевая карта компьютера должна поддерживать технологию PXE. Такой вариант сетевой установки дебиан будет удобен, если вам необходимо развернуть систему на большое количество машин.
Мне приходилось настраивать TFTP сервер для отдачи файлов при загрузке по PXE. Изначально кажется, что все это слишком сложно, но на самом деле ничего сложного нет. Я без особых проблем смог настроить бездисковые станции для запуска linux системы. Но это отдельная история, выходящая за рамки данной инструкции.
Установка Debian 10 Buster
К установке системы Debian 10 у нас все готово. Вставляйте флешку в сервер, если будете ставить на голое железо, либо подключайте iso образ к виртуальной машине и приступайте. Нас встречает традиционное первоначальное меню загрузочного образа.

Я лично предпочитаю использовать консольный (Install), а не графический (Graphical Install) установщик. У меня в нем быстрее получается выбирать необходимые разделы. В целом, это вопрос личных предпочтений. Все этапы установки и варианты выбора настроек идентичны при любом способе. Я продолжаю в консольном.
Не буду приводить скриншоты всех этапов установки Debian 10. Не вижу в этом смысла. Там все достаточно очевидно. Буду останавливаться только на ключевых моментах и давать советы. Итак, после запуска установки системы, вам предложат выбрать язык. На серверах я всегда выбираю английский язык и английскую раскладку. Не вижу тут никаких альтернатив. Язык современной техносферы — английский и глупо идти поперек. Если вам понадобятся другие языки, то можете их настроить потом, по мере работы с системой.
После выбора языка необходимо выбрать географическое расположение. На этом этапе я всегда задумываюсь, по какому принципу группируются возможные варианты.

На первом экране представлены такие популярные и известные страны, как Замбия, Нигерия, Филлипины, Зимбабве, Ботсвана, но пропущены почти все (или все?) европейские страны. Для того, чтобы выбрать Россию, нужно пройти в other, выбрать Europe, а потом уже Russian Federation. Может быть такая группировка не случайна и есть какая-то байка на этот счет. Если кто-то в курсе, прошу поделиться.
После выбора страны нам предлагают указать кодировку и раскладку клавиатуры. Я всегда выбираю en_US.UTF-8 и American English. Если понадобится дополнительный язык, его всегда можно добавить позже. Далее необходимо подождать некоторое время, пока установщик не подгрузит следующие компоненты, необходимые для установки дебиан. После этого он попытается настроить сеть. Если у вас все в порядке с сетевой картой, и в сети работает dhcp-сервер, на моменте настройки сети не будет остановки, и она пройдет без каких-либо ваших действий. Если же у вас нет dhcp-сервера, то вам будет предложено вручную указать все сетевые параметры:
- ip адрес
- маску сети
- ip шлюза и dns сервера
После сетевых параметров нас попросят указать имя сервера и его домен. Можете указывать что угодно. Если у вас нет никакого домена, можете оставить поле пустым, либо указать домен local.


После создания паролей и пользователя, выбираем часовой пояс. На следующем этапе установки переходим к разметки диска. Это важный момент, поэтому рассмотрим его отдельно.
Утилита FDISK в Unix/Linux
fdisk — общее название системных утилит для управления разделами жёсткого диска. Широко распространены и имеются практически в любой операционной системе, но работают по-разному. Используют текстовый интерфейс пользователя.
Предупреждение: Не создавайте, не удаляйте и не изменяйте разделы, если вы не знаете, что вы делаете!
Посмотреть свободное место на диске
Рассмотрим теперь вопрос, как удобнее всего смотреть свободное место на диске. Тут особо вариантов нет — используется известная и популярная утилита df.
# df -h

Команда показывает информацию и заполнении всех примонтированных дисков, в том числе и сетевых, если они присутствуют в системе. Нужно понимать, что эта информация не всегда достоверная. Вот пример такой ситуации — Диск занят на 100% и не понятно чем, df и du показывают разные значения.
Сразу же покажу удобную комбинацию команд, чтобы посмотреть, кто в данной директории занимает больше всего места. Директории выстроятся в список, начиная с самой объемной и далее. В моем примере будут выведены 10 самых больших папок в каталоге.
# du . --max-depth=1 -ah | sort -rh | head -10

В первой строке будет объем самой директории /usr, а далее вложенные в нее. Привожу пример небольшого скрипта, который я люблю использовать, чтобы оценить размер директорий, к примеру, в архиве бэкапов и сохранить информацию в текстовый файл. Актуально, если у вас не настроен мониторинг бэкапов в zabbix.
echo "==================================" >> dir_size.txt echo "Dirs size `date +"%Y-%m-%d_%H-%M"`" >> dir_size.txt echo "==================================" >> dir_size.txt du -s *| sort -nr | cut -f 2- | while read a;do du -hs $a >> dir_size.txt ;done
На выходе останется файл dir_size.txt следующего содержания.
================================== Dirs size 2019-09-04_18-16 ================================== 3.2T resad 2.0T winshare 1.7T mail 1.2T doc 957G share 43G web 17G hyperv 6.5G zabbix 5.2G onlyoffice 525M databases
В целом, по свободному месту на дисках все. Утилит df и du достаточно, чтобы закрыть этот вопрос.
Проверить нагрузку на диск
Теперь немного поговорим о том, как измерить или посмотреть нагрузку дисков. Иногда видно, что сервер явно очень сильно тормозит. При этом смотришь загрузку CPU и доступную память — всего в избытке, но приложение еле шевелится. Конечно, с нормальным мониторингом вы быстро поймете, что у вас проблемы с диском, но если мониторинга нет, то можно в консоли быстро оценить обстановку с помощью некоторых утилит.
Я предлагаю использовать небольшой пакет утилит sysstat. Ставим его.
# apt install sysstat
Дальше запускаем iostat с параметрами.
# iostat -xk -t 2

Нас в первую очередь будет интересовать последний столбец %util. Чем больше он стремится к 100%, тем выше нагрузка на диск. Если она очень высокая, вы захотите узнать, какой процесс больше всего нагружает диск. Это можно узнать с помощью pidstat.
# pidstat -d 1

Видим, что основную нагрузку на диск генерирует процесс mysqld. Можем отдельно последить за ним. Для этого надо узнать его pid и запустить pidstat для конкретного процесса.
# pidstat -p `pgrep mysqld` -d 1

Так мы можем мониторить дисковую активность конкретного процесса.
Так же для наглядного мониторинга загрузки диска мне нравится использовать программу dstat.
# apt install dstat # dstat --top-bio

Она в реальном времени показывает дисковую нагрузку конкретных приложений. Есть еще похожая команда.
# dstat --top-io
Если я правильно понял описание, первая показывает скорость доступа к реальным устройствам, а вторая в том числе кэши и всякие виртуальные файловые системы. Возможно я ошибся, вот описание из документации:
Программа dstat показывает не только загрузку дисков. Ее можно использовать для комплексного наблюдения за системой. Например вот так.
# dstat -tldnpms 10
При этом будет выводиться:
- текущее время – t
- средняя загрузка системы – l
- использования дисков – d
- загрузка сетевых устройств – n
- активность процессов – p
- использование памяти – m
- использование подкачки – s
- с интервалов в 10 секунд

На этом по анализу нагрузки на диск у меня все. Если у вас есть еще какие-то интересные утилиты для этих задач, прошу поделиться в комментариях. Загрузка дисков одна из самых востребованных метрик в серверах, так как очень сложно правильно ее оценить, в отличие от загрузки cpu и memory.
Дополнительные материалы по Debian
| Рекомендую полезные материалы по Debian: |
| Настройки системы |
|---|
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика. Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования. Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др. Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления. Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления. Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog. |
| Настройка программных комплексов |
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке. Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop. Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk. Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки. Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети. |
| Разное |
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows. Ускорение работы 1С с postgresql и диагностика проблем производительности |
Разметка жесткого диска
Тема разметки диска раньше была достаточно спорной и вызывала много дискуссий и споров. Делали отдельно разделы под корень /, домашнюю директорию /home, под логи /var/logs и т.д. Мне кажется, что сейчас все это стало неактуально. Сервера общего назначения переехали в виртуальные среды, а там можно и дополнительный диск выделить под образовавшиеся нужды, либо увеличить текущий. Нет необходимости заранее продумывать на много шагов вперед, можно без проблем потом добавить дисковое пространство.
Если же вы настраиваете железный сервер, то скорее всего четко знаете для чего он нужен и разбиваете уже в зависимости от его прямого назначения. Я сам лично, если нет каких-то особых требований к серверу, создаю только один общий раздел /, lvm не использую. Не вижу в нем смысла в виртуальных машинах. А на железо я ставлю только гипервизоры, там lvm под системный раздел тоже не нужен.

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

Указываем использовать все свободное место диска.

Проверяем предлагаемую схему разбивки. Если все в порядке, продолжаем.

Соглашаемся с записью изменений на диск. Начинается непосредственно установка системы. Нужно подождать некоторое время, обычно несколько минут.
На следующем этапе установки системы, вам будет задан вопрос по поводу дополнительного диска с пакетами. Вам будет предложено проверить другой диск для установки дополнительных пакетов.

Отказываемся и идем дальше. Теперь нужно выбрать зеркало, с которым будет работать пакетный менеджер apt. Выбираем свою страну и подходящее зеркало. Я выбираю Russian Federation и зеркало andex.Mirror.


Далее нас просят указать прокси. Скорее всего вы им не пользуетесь, поэтому строку можно оставить пустой. Если это не так, то укажите адрес proxy сервера.

Нас спрашивают о том, хотим ли мы делиться анонимной статистической информацией об использовании различного ПО на сервере. Я обычно не делюсь.

Выбираем набор дополнительного ПО, которое будет установлено на сервер debian вместе с основной системой. Я никогда не ставлю ничего, кроме ssh сервера и системных утилит.

Все остальное можно установить потом. На последнем этапе установки нас спрашивают про загрузчик grub — установить ли нам его. В подавляющем большинстве случаев это нужно сделать. Если вы не знаете, нужно или нет, значит 100% нужно. Без загрузчика можно обойтись в очень специфических ситуациях, которые мы рассматривать не будем в этой инструкции по установке debian. Так что устанавливаем grub на единственных жесткий диск.


Перезагружаем сервер. Установка завершена, он полностью готов к работе. Не забывайте, что по-умолчанию, на сервер нужно подключаться под учетной записью обычного пользователя, не root. После установки debian, предлагаю выполнить предварительную настройку сервера.
Подключить сетевой диск
Расскажу, как быстро выполнить монтирование наиболее популярных сетевых дисков:
- по smb
- по nfs
В общем случае, подключить сетевой диск по smb можно следующей командой.
# mount -t cifs //10.1.4.4/backup /mnt/backup -o user=admin,password=passadmin
Если команда не отработает и будет ошибка, установите отдельно cifs-utils.
# apt install cifs-utils
# mount -t cifs -vvv //10.1.4.4/backup /mnt/backup -o vers=2.1,user=admin,password=passadmin
Для подключения сетевого диска по nfs, необходимо установить на машину nfs-client, который находится в пакете nfs-common.
# apt install nfs-common
После этого можете подключить сетевую папку по nfs:
# mount -t nfs 10.1.4.4:/backup /mnt/backup
С nfs, так же как и с cifs, можно вывести расширенный лог и принудительно указать версию.
# mount -t nfs -vvv -overs=2 10.1.4.4:/backup /mnt/backup
Перед подключением диска можете проверить, а если вам вообще доступ к сетевому диску на сервере:
# showmount --exports 10.1.4.4
Вы должны увидеть список nfs дисков, к которым у вас есть доступ. Если список пуст, подмонтировать ничего не получится.
Запись образа на флешку
Обычные CD диски сейчас уже становятся редкостью. Для меня не понятно, почему размеры iso образов до сих пор частенько подгоняют под размер CD или DVD диска. Я уже много лет использую загрузочные флешки для установки систем на железо. С ними быстрее, удобнее, проще обновлять образ.
Есть много способов записать образ debian на флешку для последующей установки. У меня в комплекте есть несколько популярных программ для создания загрузочных usb:
- Rufus.
- Unetbootin.
- Win32DiskImager.
- Etcher.
Это все бесплатные программы под Windows. Чаще всего пользуюсь первыми двумя. Иногда бывают ситуации, когда инсталлятор не может установить систему, записанную на флешку той или иной программой. Не знаю, по какой причине это бывает. Тогда приходится пробовать разные версии.
В данном случае нам подойдет программа Rufus. Вы без проблем найдете ее на просторах интернета, не буду приводить ссылки. Сам всегда держу ее под рукой. Никаких особенных настроек не надо. Просто запускаете программу, выбираете флешку, образ и вперед.

Если у вас система Linux, то для создания загрузочной флешки с Debian 10 используйте программу Etcher.
Разметка жесткого диска
Тема разметки диска раньше была достаточно спорной и вызывала много дискуссий и споров. Делали отдельно разделы под корень /, домашнюю директорию /home, под логи /var/logs и т.д. Мне кажется, что сейчас все это стало неактуально. Сервера общего назначения переехали в виртуальные среды, а там можно и дополнительный диск выделить под образовавшиеся нужды, либо увеличить текущий. Нет необходимости заранее продумывать на много шагов вперед, можно без проблем потом добавить дисковое пространство.
Если же вы настраиваете железный сервер, то скорее всего четко знаете для чего он нужен и разбиваете уже в зависимости от его прямого назначения. Я сам лично, если нет каких-то особых требований к серверу, создаю только один общий раздел / на lvm.

Далее нужно выбрать жесткий диск, на который будет установлена система. Если у вас он только один, как у меня, то выбирать не из чего. Дальше выбираем схему разбивки диска. Как я уже сказал ранее, все будет храниться в одном корневом разделе, так что выбираем All files in one partition.

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

В принципе, можно с ним согласиться. Но лично мне не нравится swap на отдельном lvm томе. Я люблю хранить swap в файле прямо на файловой системе. Теоретически, это чуть медленнее, чем отдельный раздел, но практически это не важно. В современных серверах swap редко используется, нужен больше для стабильности работы системы, нежели для скорости. Со swap в отдельном разделе не получится гибко работать, как с обычным файлом. Я на серверах ставлю минимальный размер свопа в 1 Гб, увеличиваю по мере необходимости. Когда своп это обычный файл, с этим нет проблем.
Так что изменения не записываем, выбираем No. Вы попадаете в раздел управления разметкой диска. Необходимо удалить LV раздел под swap, затем удалить LV раздел root и создать его заново максимального размера. Потом на нем же еще раз создать корневую систему в точке монтирования /. Должно получиться вот так.

В принципе, раздел /boot тоже можно было бы разместить в корне, но в целом можно оставить и так. Я сталкивался с неожиданными проблемами, когда /boot раздел был на lvm. Так что не буду вам рекомендовать его куда-то переносить.
Когда будете соглашаться с новой разметкой, получите предупреждение, что забыли про swap. Не обращайте на него внимание. Дальше пойдет непосредственно установка Debian 10 в виде копирования системных файлов на диск.
На следующем этапе установки системы, вам будет задан вопрос по поводу дополнительного диска с пакетами. Вам будет предложено проверить другой диск для установки дополнительных пакетов. Отказываемся и идем дальше. Теперь нужно выбрать зеркало, с которым будет работать пакетный менеджер apt. Выбираем свою страну и подходящее зеркало. Я выбираю Russian Federation и зеркало mirror.corbina.net. Раньше всегда выбирал зеркало Яндекса, но в Debian 10 его почему-то нет для выбора.

Далее нас просят указать прокси. Скорее всего вы им не пользуетесь, поэтому строку можно оставить пустой. Если это не так, то укажите адрес proxy сервера. На следующем этапе установки debian 10 вопрос о том, хотим ли мы делиться анонимной статистической информацией об использовании различного ПО на сервере. Я обычно не делюсь.
Дальше выбираем набор дополнительного ПО, которое будет установлено на сервер debian 10 вместе с основной системой. Я никогда не ставлю ничего, кроме ssh сервера и системных утилит.

Все остальное можно установить потом. На последнем этапе установки нас спрашивают про загрузчик grub — установить ли нам его. В подавляющем большинстве случаев это нужно сделать. Если вы не знаете, нужно или нет, значит 100% нужно. Без загрузчика можно обойтись в очень специфических ситуациях, которые мы рассматривать не будем в этой инструкции по установке debian. Так что устанавливаем grub на единственных жесткий диск.

Перезагружаем сервер. Установка завершена, он полностью готов к работе. Не забывайте, что по-умолчанию, на сервер нужно подключаться под учетной записью обычного пользователя, не root. После установки системы, предлагаю выполнить предварительную настройку сервера.
Видео
https://youtube.com/watch?v=fyp9GSdjzS4%3Ffeature%3Doembed
Если у вас есть желание научиться администрировать системы на базе Linux, но вы с ними никогда не работали и не знакомы, то рекомендую начать с онлайн-курса «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Цена за курс минимальная (символическая). Информация о курсе и цене.
Помогла статья? Подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Установка Дебиан 9 на raid
Рассмотрим вариант установки debian на софтовый рейд mdadm. Эта актуальная ситуация, когда вы разворачиваете систему на железе, а не виртуальной машине. К примеру, такая конфигурация будет полезна для установки proxmox. В этой статье я уже рассматривал установку debian на raid1. Но там версия 8-я, а у нас сейчас 9-я. Так что рассмотрю еще раз эту тему, но уже в варианте графического инсталлятора, а не консольного.
Итак, начинаем установку системы по приведенной ранее инструкции. Доходим до этапа разбивки диска и выбираем режим Manual.

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

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

То есть мы на каждом диске создаем по одному пустому разделу, без точки монтирования и файловой системы. Эти пустые разделы мы объединим в raid и там уже сделаем корень системы — /. Для swap я не создаю отдельный раздел, чтобы не делать потом отдельный raid для него. Swap сделаем в виде файла после установки системы. Итак, создаем рейд — Configure Software raid. Соглашаемся с предложением сохранить изменения.

Выбираем Create MD device, затем RAID1.


Указываем, что у нас будет 2 устройства в массиве и spare device не будет вовсе.


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

В конце соглашаемся на запись изменений. В разделе конфигурирования рейда нажимаем Finish и выходим из него.

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

На этом завершаем создание рейда и разметку диска и переходим дальше к установке debian, как было описано выше. Никаких принципиальных изменений больше не будет. Единственное, будет задан вопрос о том, что вы не создали раздел swap и будет предложено вернуться и исправить это.

Можно отказаться и продолжить установку.
После установки на raid нужно выполнить несколько важных действий.
- Зайти в систему и создать swap.
- Установить загрузчик на оба диска. Во время установки он был установлен только на один диск.
- Протестировать отказ одного из дисков.
Думаю, с созданием swap вопросов быть не должно. По ссылке все подробно описано. Установим загрузчик на оба жестких диска, чтобы в случае выхода любого из них, система смогла загрузиться. Для этого выполняем команду:
# dpkg-reconfigure grub-pc
Выскочат пару запросов на указание дополнительных параметров. Можно ничего не указывать, оставлять все значения по-умолчанию.

А в конце выбрать оба жестких диска для установки загрузчика.

После установки загрузчика на оба диска, можно проработать вариант отказа одного из дисков. Для начала проверим статус нашего рейда:
# cat /proc/mdstat md0 : active raid1 sdb1[1] sda1[0] 20953088 blocks super 1.2 [2/2] [UU]
Все в порядке, рейд на месте. Выключим сервер, отсоединим один диск и включим снова. Сервер замечательно загрузился с одним диском. Проверяем raid:
# cat /proc/mdstat md0 : active raid1 sda1[0] 20953088 blocks super 1.2 [2/1] [U_]
Одного диска нет. Теперь снова выключим сервер и воткнем в него чистый диск такого же объема. То есть имитируем замену сломанного диска на новый. Запускаем сервер и проверяем список дисков в системе:
# fdisk -l | grep /dev Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors /dev/sda1 * 2048 41940991 41938944 20G fd Linux raid autodetect Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors Disk /dev/md0: 20 GiB, 21455962112 bytes, 41906176 sectors
Старый диск sda c разделом sda1 и новый диск sdb без разделов. Нам нужно так же на нем создать один раздел на весь диск с типом Linux raid. Сделаем это с помощью cfdisk.
# cfdisk /dev/sdb

Записываем изменения и проверяем, что получилось:
# fdisk -l | grep /dev Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors /dev/sda1 * 2048 41940991 41938944 20G fd Linux raid autodetect Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors /dev/sdb1 * 2048 41943039 41940992 20G fd Linux raid autodetect Disk /dev/md0: 20 GiB, 21455962112 bytes, 41906176 sectors
То, что надо. Второй раздел идентичный первому. Добавим его теперь в рейд.
# mdadm --add /dev/md0 /dev/sdb1 mdadm: added /dev/sdb1
Проверяем статус рейда:
# cat /proc/mdstat md0 : active raid1 sdb1[2] sda1[0] 20953088 blocks super 1.2 [2/1] [U_] [>....................] recovery = 4.5% (954304/20953088) finish=6.6min speed=50226K/sec
Идет ребилд массива. Надо дождаться его окончания, а пока поставим на новый диск загрузчик, как проделали это ранее. После пересборки массива замена сбойного диска завершена, можно продолжать эксплуатировать сервер в штатном режиме.
Подключить и примонтировать диск
Расскажу, как подключить и настроить новый физический или виртуальный диск в Debian. У меня в системе есть один диск — /dev/sda. Я подключил к ней новый жесткий диск sdb. Хочу его отформатировать в файловую систему xfs и примонтировать в каталог /mnt/backup.
Разметка диска
Вы можете не создавать разделы на жестком диске, а создать файловую систему прямо по всему диску. Делать так не рекомендуется, хотя лично я никаких проблем не получал при таком использовании диска. С разделами просто удобнее, так как ими можно оперировать — изменять, перемещать, расширять. добавлять и т.д.
Создадим один раздел на диске с помощью утилиты cfdisk.
# cfdisk /dev/sdb
Если диск чистый, то вам будет предложено создать таблицу разделов на ней. Я обычно gpt создаю. Дальше через графический интерфейс создайте раздел на весь диск и укажите type — Linux filesystem.

Как закончите, сохраняйте изменения. Вас попросят подтвердить запись, написав yes. Пишите полное слово, не просто y, а именно yes, иначе изменения не будут записаны. Теперь надо обновить таблицу разделов. Иногда система автоматически не видит новые разделы, а требует перезагрузку, чтобы их увидеть. Перезагружаться не обязательно, достаточно запустить программу partprobe.
# partprobe -s
Если ее нет в системе, то установите пакет parted.
# apt install parted
Создание файловой системы ext4, xfs
Раздел на новом диске создали. Теперь его надо отформатировать в файловую систему xfs. Это не родная система для Debian, поэтому нужно поставить отдельный пакет xfsprogs для работы с ней.
# apt install xfsprogs
Создаем файловую систему xfs на новом диске.
# mkfs.xfs /dev/sdb1
Если вам нужно создать файловую систему ext4, то ничего ставить дополнительно не нужно. Сразу форматируете раздел в ext4 командой:
# mkfs -t ext4 /dev/sdb1
Теперь создаем директорию, куда будем монтировать новый диск и подключаем его.
# mkdir /mnt/backup # mount /dev/sdb1 /mnt/backup
Проверяем, что получилось.
# df -h

Посмотрим, какую метку получил новый раздел с помощью blkid.

Метку будем использовать для того, чтобы монтировать диск автоматически при загрузке системы. Для этого редактируем файл /etc/fstab. Добавляем в самый конец новую строку, чтобы получилось примерно так.
/dev/mapper/debian10--vg-root / ext4 errors=remount-ro 0 1 UUID=88c4c0aa-be17-4fd9-b1b7-5c8be142db77 /boot ext2 defaults 0 2UUID=415236b0-68bd-4f27-8eaf-5e8ab49d98d7 /mnt/backup xfs defaults 0 1
Обязательно следите за тем, чтобы в конце файла fstab был переход на новую пустую строку. Это важно. Если не сделать переход на пустую строку, система не загрузится.
Очень внимательно редактируйте fstab. Ошибка с этим файлом может привести к тому, что система не будет грузиться. Сам сталкивался с этим неоднократно. Я всегда убеждаюсь, что корректно отредактировал fstab перезагрузкой системы. У меня были ситуации, когда файл правился с ошибкой, а потом система не перезагружалась месяцами. Через пол года сделал ребут и система не загрузилась. Это был гипервизор с кучей виртуалок. Было не по себе от такого сюрприза. Оказалось, что была ошибка в fstab, которую оперативно исправил, благо был доступ к консоли. Внимательно за этим следите.
Поясню еще, почему использовали метку диска, а не название диска в системе — /dev/sdb1. Раньше я всегда так и делал. Ну как раньше — лет 7-10 назад. Потом пошли какие-то изменения и стали возникать ситуации, что после добавления новых дисков в систему, менялись системные названия дисков. Когда сталкиваешься с этим впервые — впадаешь в ступор. Вроде только добавил диск в систему, а у тебя все сломалось. То, что было /dev/sdb стало /dev/sdc со всеми вытекающими последствиями. Выход из этой ситуации — использовать метки разделов, а не названия. Метки не меняются.

