В прожорливые игры я не играю, фильмы в высоком качестве не смотрю, единственное из ресурсоёмких задач - это докер и виртуальные машины.
Ну, и квартира маленькая, так что живём мы с этим оборудованием, что называется, бок о бок.
Поэтому основными критериями выбора стали такие:
1) отказоустойчивость
2) малошумность
3) сносное быстродействие
Первый критерий привёл к мысли, что нужна материнская плата с RAID на борту, второй - что нужен процессор с низким тепловыделением, а третий - что диски будут SSD. Тут надо признать, что в железе я не разбираюсь совершенно. Поэтому сборка работоспособной машины превратилась в увлекательный квест.
Покопался на сайте одного известного магазина, повыбирал комплектующие на свой вкус, купил, собрал - не работает. Выяснилось, что в современном мире слова "DDR4" и "AM4" гарантируют только, что память и процессор удастся запихнуть в соответствующие слоты, а их работоспособность с данной конкретной материнской платой никто не обещал. К счастью, недостаток знаний удалось отчасти скомпенсировать финансовыми вливаниями, но изучать списки совместимости, искать и докупать на замену пришлось чуть ли не всё.
В итоге я стал счастливым обладателем материнской платы ASRock B450 Pro4, процессора Athlon 200GE, двух плашек ОЗУ A-Data XPG Gammix D10 [AX4U266638G16-SBG] (8+8 ГБ) и двух M.2 SSD A-Data XPG SX6000 Lite [ASX6000LNP-128GT-C] (128+128 ГБ) - для RAID-а. На процессор повесил здоровенный кулер DEEPCOOL REDHAT, вентилятор прицеплять не стал, машина получилась достаточно тихой, с одним вентилятором в блоке питания и непривычно пустым системным блоком в корпусе DEXP DC-101B - ни тебе дисководов, ни сидиромов, ни жестких дисков... Прогресс, однако. Осталось дело за малым - поднять RAID и установить операционную систему.
Первым делом включил raid, покопавшись в настройках материнской платы. К сожалению мануал, рассказывающий о том, как это делается, попался под руку не сразу. А всё оказалось просто - заходим в UEFI Setup Utility и там включаем пару опций:
Boot -> CSM (Compatibility Support Module) -> Disabled Advanced -> AMD PBS -> NVMe RAID mode -> Enabled Advanced -> Storage Configuration -> SATA Mode -> RAIDПосле перезагрузки в UEFI Setup Utility появится дополнительный пункт "RAIDXpert2 Configuration Utility", и там уже можно объединить два диска в массив. Правда, оказалось, что не любые два диска в этом пункте меню видны, и не зря на одном из слотов материнки была наклейка "Ultra M.2". Выяснилось, что и M.2 диски бывают разные, и в слот с этой наклейкой следует пихать тот, у которого есть опция NVMe. Второму M.2 разъёму, правда, не важно, что за диск в него подсунут, с NVMe или без, а вот первый в этом плане привередлив. Так или иначе, с этой проблемой удалось справиться, вот только это не сильно помогло: при установке убунта упорно продолжала видеть мой RAID-массив как два отдельных диска.
Пришлось изучать вопрос дальше, пока в одном из обсуждений попалась ссылка на статью, рассказывающую о разных вариантах реализации RAID. Есть Hardware RAID - когда одновременность чтения-записи на диски обеспечивается на аппаратном уровне, есть Software RAID - когда вся кухня реализована на уровне драйверов операционной системы, и есть Fake RAID - когда операционка вроде бы видит RAID, а на самом деле он реализовывается при помощи программного обеспечения, зашитого в материнскую плату. И, судя по цене материнки, мой случай именено такой. В то же время куча форумов пестрит утверждениями, что под линуксом все эти низкоуровневые RAID не нужны, а пользуйтесь лучше программными RAID-ами, граждане. Поэтому я, скрепя сердце, свой с трудом созданный массив размонтировал:
Boot -> CSM (Compatibility Support Module) -> Disabled Advanced -> AMD PBS -> NVMe RAID mode -> Disabled Advanced -> Storage Configuration -> SATA Mode -> AHCIи приступил к третьей части - установке операционной системы.
Установка операционной системы меня тоже не порадовала. Выяснилось, что установщик моей любимой XUbuntu из коробки RAID не поддерживает, поэтому - либо качайте и ставьте сервер, либо делайте пару дополнительных пассов руками. Кроме того, наступило будущее, и на смену BIOS+MBR пришел UEFI+GPT. В моём случае будущее выразилось в том, что все 128 Гб превратить в RAID-1 не удастся: вышеупомянутая опция "Boot -> CSM (Compatibility Support Module) -> Disabled" приводит к тому, что при загрузке UEFI ищет не MBR, а раздел, носящий имя ESP. Этот раздел размечен fat32 и помечен флагом efi, на нём, собственно, и хранятся инструкции по дальнейшей загрузке операционной системы. При этом обнаружился приятный бонус - оказывается, современные версии линуксового загрузчика GRUB умеют поддерживать в идентичном состоянии несколько ESP, причудливо разбросанных по разным дискам. Поэтому моё первоначальное стремление сделать так:
Disk1: [RAID-1: [ESP...] [всё остальное............] ] Disk2: [ -"- ........................................]превратилось в:
Disk1: [ESP...] [RAID-1: [всё остальное............] ] Disk2: [ESP...] [ -"- ...............................]И про это самое "всё остальное" следует сказать особо.
В принципе, если массив поднят, можно запускать инсталлятор убунты, разбивать им свободное место на разделы и вообще двигаться дальше. Но под линуксом есть ещё одна полезная прослойка, которая называется LVM. Штука эта, Logical Volume Manager, очень интересная. Результат её действия таков, что логические тома, т.е., "разделы", видимые в файловой системе, на самом деле не являются привычными разделами, в виде единого целого хранящимися на диске, а являются мозаикой, элементы которой собираются из кусочков, раскиданных по разным дискам и прочим устройствам. Эти логические тома допускают, по слухам, большую гибкость в настройке, в частности, их размер можно менять как угодно, расширять за счет добавления в машину новых дисков и т.п. Поэтому итоговая структура дисков моего нового компьютера выглядит так:
Disk1: [ESP...] [RAID-1: [LVM: (Том: /.......) (Том: swap.......) (Том: /home.......) ] ] Disk2: [ESP...] [ -"- ..................................................................]ну, или в виде вывода команды lsblk -a:
$ lsblk -a nvme0n1 259:0 0 119,2G 0 disk (первый SSD A-Data XPG SX6000 Lite) ├─nvme0n1p1 259:2 0 128M 0 part (efi раздел) └─nvme0n1p2 259:3 0 119,1G 0 part (раздел под всё остальное) └─md0 9:0 0 119,1G 0 raid1 (raid массив) ├─myVG-rootv 253:0 0 40G 0 lvm / (логический том) ├─myVG-swapv 253:1 0 16G 0 lvm [SWAP] (логический том) └─myVG-homev 253:2 0 63,1G 0 lvm /home (логический том) nvme1n1 259:1 0 119,2G 0 disk (второй SSD A-Data XPG SX6000 Lite) ├─nvme1n1p1 259:4 0 128M 0 part (efi раздел) └─nvme1n1p2 259:5 0 119,1G 0 part (раздел под всё остальное) └─md0 9:0 0 119,1G 0 raid1 (raid массив) ├─myVG-rootv 253:0 0 40G 0 lvm / (логический том) ├─myVG-swapv 253:1 0 16G 0 lvm [SWAP] (логический том) └─myVG-homev 253:2 0 63,1G 0 lvm /home (логический том)
Теперь, наконец, опишу последовательность шагов, приведших к такому результату.
0. Создание инсталляционной флэшки
Берём понравившийся образ, например, отсюда https://mirror.yandex.ru/ubuntu-cdimage/xubuntu/releases/20.10/release/, подключаем флэшку - будем считать, что она села на /dev/sdh - и заливаем:
sudo dd if=xubuntu-20.10-desktop-amd64.iso of=/dev/sdh bs=1M
1. Подготовка к установке
Загружаемся с полученной флэшки, выбираем работать без установки и попадаем на рабочий стол. Там запускаем терминал, устанавливаем boot-repair (на всякий случай, мне, помнится, так и не понадобился):
sudo add-apt-repository -y ppa:yannubuntu/boot-repair sudo apt update apt install boot-repairУстанавливаем средство для управления программными RAID массивами:
sudo apt install mdadmРазмечаем диски:
sudo fdisk /dev/nvme0n1 sudo fdisk /dev/nvme1n1так, чтобы lsblk -a рисовал примерно такую картинку:
$ lsblk -a nvme0n1 259:0 0 119,2G 0 disk ├─nvme0n1p1 259:2 0 128M 0 part └─nvme0n1p2 259:3 0 119,1G 0 part nvme1n1 259:1 0 119,2G 0 disk ├─nvme1n1p1 259:4 0 128M 0 part └─nvme1n1p2 259:5 0 119,1G 0 partРазмечаем ESP под fat:
sudo mkfs -t fat -F 32 /dev/nvme0n1p1 sudo mkfs -t fat -F 32 /dev/nvme1n1p1Создаём RAID:
mdadm --create /dev/md0 --metadata=0.90 --level 1 --raid-disks 2 /dev/nvme0n1p2 /dev/nvme1n1p2этот процесс небыстрый, нужно подождать, пока диски синхронизируются, текущий статус массива можно глянуть командой cat /proc/mdstat. Когда всё закончится, настраиваем LVM. Передаём под его отвественность наш свежесозданный раздел /dev/md0:
pvcreate /dev/md0Создаём группу томов, в которую включаем /dev/md0:
vgcreate myVG /dev/md0Создаём логические тома:
lvcreate -L 40G myVG -n rootv lvcreate -L 16G myVG -n swapv lvcreate -l +100%FREE myVG -n homevПосле этого конфигурация приобретёт законченный вид, и можно приступать к собственно процессу установки.
2. Процесс установки
Сама установка сложностей не представляет - запускаем процесс по ярлыку на рабочем столе, аккуратно указываем соответствие точек монтирования /, /home логическим устройствам и расположение раздела подкачки. По окончании процесса установки на перезагрузку, однако, не соглашаемся - надо на свежепоставленную систему взгромоздить mdadm, использующийся для программного RAID. Поэтому выбираем опцию "Продолжить работу" и возвращаемся в терминал.
3. Дополнительная настройка
Монтируем корень нашей новой системы и подготавливаемся к тому, чтобы в эту новую систему переключиться:
sudo mount /dev/myVG/rootv /mnt mount -o bind /dev /mnt/dev mount -o bind /dev/pts /mnt/dev/pts mount -o bind /sys /mnt/sys mount -o bind /proc /mnt/proc cat /etc/resolv.conf >> /mnt/etc/resolv.confПереключаемся:
chroot /mntДоустанавливаем в свежеустановленную систему необходимые пакеты:
apt install mdadm apt install grub-efi-amd64 apt remove grub-efi-amd64-signedВключаем показ меню GRUB при запуске системы:
vi /etc/grub.d/10_linux # изменить значение quick_boot на 0И, наконец, перезагружаемся.
4. Настройка GRUB для работы с двумя копиями ESP
Если повезло, и система загрузилась, нужно настроить GRUB. это делается командой:
dpkg-reconfigure grub-efi-amd64там в какой-то момент конфигуратор выведет список найденных ESP и предложит отметить галочками, какие из них синхронизировать. Правда, говорят, эта опция доступна только с недавних пор - дистрибутивы, выпущенные ранее 2019 года, такой возможности не имеют. Я поставил обе галочки напротив nvme0n1p1 и nvme1n1p1. Буду надеяться, GRUB не подведёт.
Литература:
Установка Linux на software raid
Install Ubuntu 18.04 desktop with RAID 1 and LVM on machine with UEFI BIOS
How to install Ubuntu server with UEFI and RAID1 + LVM
Как установить Ubuntu на программный RAID-1
Лабораторная работа: настраиваем lvm, raid на linux