Започвам с един от най-простите варианти за изграждане на сървър. Ще инсталираме операционна система Debian 11, върху дънна платка с BIOS. Ще се инсталира чрез използването на LVM (Logical Volume Manager/Менажер на логическите дялове.). Създаваме виртуална машина със следните параметри: CPU - 4 ядра RAM - 4 GB HDD - 2 броя с еднакъв размер Дънна платка с BIOS. В случая ще е на виртуална машина. Да започваме:
Приемаме за начало, че имаме само един диск. Най-често имате компютър с един диск и решавате да го направите сървър. Ще инсталираме така Debian, че когато се снабдим с втори диск, да може да се изградим RAID0 (по точно ще е подобие). Започваме с инсталацията:
До сега винаги показвам как се прави през стандартната инсталация (Install). Сега ще покажа по-професионалния начин на инсталиране.
Експертна инсталация.
Избираме език за инсталиране.
Предпочитам да е Английски, защото нещо ако не работи дава грешките на Английски. Търся по форуми с Google, а на Български няма почти нищо.
Предлага ни да определим зоната в която живеем. Това ще помогне на по-късен етап да се синхронизираме с часовата зона.
Избираме Европа, България.
Избрахме по какъв стандарт да работим на Английски и Български. Стандартите ще са en_US.UTF-8 за Английския и bg_BG.UTF-8 за Българския. Езика по подразбиране ще е Английския.
Да настроим и клавиатурната подредба на втория език който ще ползваме.
Подредбата е Българска фонетична, като ще се сменят Английската и Българската с Alt+Shift
Проверяваме за монтирана медия (CD,DVD,USB или ISO) от която ще инсталираме Debian 11.
Открит е Debian 11 "Bullseye".
Зареждаме инсталационните компоненти от инсталационната медия.
Тук нищо не избираме.
Търсим мрежови хардуер. Примерно мрежовите интерфейси.
Открихме какво имаме, да настроим и самата мрежа.
Ще се помъчи автоматично да настрои мрежата.
Ако не открие дадена конфигурация за 3 сек. ще приеме, че не ползваме тази услуга. Примерно ще тества DHCP дали имаме за 3сек., IPv4 ще тества за 3сек. и т.н.
Даваме име на хоста.
Указваме домейна който ползваме. Ако нямате домейн оставете полето празно.
Ще дефинираме потребители с техните си пароли.
Повишаваме защитата на паролите.
Позволяваме ROOT (главния потребител) да се логва в системата.
Създаваме парола на ROOT.
Позволяваме да има обикновен потребител, различен от ROOT.
Даваме му име.
Даваме му и парола.
Настройваме часовника на компютъра.
Ще взема автоматично времето от Интернет сървъри за време.
Дефинираме сървъра за време.
Указваме часовата зона в която живеем.
Търсим твърди дискове в машината. На тях ще се инсталира Debian 11.
Да разделим откритите дисковете.
Ще ги разделяме ръчно.
Виждаме, че имаме два диска. Казахме за сега все едно, че нямаме втори диск. Ще оразмерим само първия диск. Избираме първия диск и натискаме Enter.
Създаваме празна таблица.
Ще ползваме новия формат GPT, вместо MSDOS.
Създадохме празна таблица. Да я оразмерим.
Създаваме първия том.
Размера му ще е 1MB.
Ще започвам от началото на диска (първото свободно място).
Даваме му име bios_grub.
Ще се използва като BIOS boot area. Използвахме GPT. Принципа на зареждане от такива дискове е първо системата да се обърне към този тип дял. Размера му е много малък.
Ако се опитате дяла да го направите Bootable, ще видите, че не можете.
Завършваме със създаването на дяла.
Избираме останалото свободно място от първия диск.
Създаваме нов дял (втори подред).
Размера му ще е 1GB. За разлика от първия дял GRUB тук ще запише доста неща, като настройки ядра и т.н. Затова е нужно да е примерно 1GB. Някои ползват и 2GB но според мен е излишно.
Почва от началото на останалото свободно място.
Даваме му информационното име boot. Информационно е защото на практика това е /boot.
Избираме му файловата система която ще поддържа. Най-често за boot се ползва Ext2, но може и Ext4.
Готови сме и с втория дял.
Избираме наново останалото място след двата дяла.
Създаваме нов дял. Този ще е последен.
Размера му ще е останалото свободно място. Друг дял няма да имаме.
Даваме му име lvm.
Няма да променяме файловата му система. Ще е Ext4. Много стабилна при работа с данни от типа файлове, папки.
Дяла ще се използва за логически томове за LVM.
Готови сме и с този дял.
Създадохме дял за LVM. Да настроим логическите групи, томове и т.н.
Първо записваме промените които правихме до тук по диска.
Създаваме логическа група.
Даваме и име vg0.
Групата ще бъде на дяла /dev/sda3.
След като създадохме групата, да създадем и логическите томове.
Първия логически том ще се намира в логическата група vg0
Ще се казва root
Ще заема 16GB. Тук правя едно пояснение: За ROOT отделяме минимално място, защото LVM позволява в работеща система да се увеличават логическите томове. Като цяло практиката е да се използва минималното място което Ви трябва, или малко отгоре но не цялото. Не Ви стига мястото? Както си работите, давате му увеличение колкото е необходимо, не цялото. С това приключваме създаването на логическия том (дял) за root.
Създаваме още един логически том. Той ще е за SWAP.
Отново ще е в логическата група vg0
Ще му дадем информативно име swap. Да ни напомня, че е за SWAP.
Отново даваме минимален размер на дяла. Ако ни е необходим повече винаги може да си го увеличим.
Приключваме със създаването на виртуалните томове.
Създадохме виртуални томове с техните си размери. Да ги дефинираме за какво ще се използват, на каква файлова система ще са.
Ще използва файлова система Ext4
Ще се монтира като корен на системата /
Първия логически том го дефинирахме.
Започваме с втория отделен за SWAP.
Ще се използва за swap.
И с този логически том сме готови.
Като цяло сме готови със всичко. Разделяне на дискове, определяне размери на дялове, дефиниране на дялове. Завършваме работа с диска.
Имаме грешка. Ако съм честен нарочно я направих, за да видите, че Debian е умна операционна система и следи много взаимни връзки. В случая казва, че за коренната директория / сме направили две монтирания. И ако погледнем не тази а предната картинка, ще видим, че логическия дял root има точка на монтиране / и физическия дял /dev/sda2 (boot) също е монтиран в /. Да оправим проблема.
Връщаме се на втория физически дял.
Променяме точката на монтиране да е /boot
Записваме промените.
Записваме промените по целия диск.
Оглеждаме внимателно дали всичко е вярно и ако е вярно се съгласяваме да запишем състоянието на диска.
Предлага да инсталираме базовите програми за системата.
Имаме избор кое ядро да ползваме. В случая linux-image-5.10.0.20-amd64 е по-ново но не толкова сигурно. Затова избираме другото.
Предлага да заредим драйверите които са налични в Debian 11 и са свободни.
Предлага да конфигурираме пакетния менажер (От огледален сървър в България).
Казва ни, че сме инсталирали Debian 11 от инсталационна медия. Предлага ни ако имаме други медии и тях да ползваме. Аз нямам друг диск затова казвам No.
Предлага ни да определим мрежови огледален пакетен менажер. Съгласяваме се.
Ще ползваме несигурния протокол http. Може и през другите протоколи. На всички работи стабилно.
Огледалния сървър е в България.
Дефинираме точно кой сървър от България да ползваме.
Казваме, че не ползваме прокси сървър за да достигаме сървъра.
Пита дали ползваме не свобдни софтуери работещи на Debian. Аз не ползвам затова казвам No.
Отново пита дали ползваме не свободни софтуер. Отново казваме не.
Уведомява ни, че репозиторите за описани в /etc/apt/sources.list. Да разрешим ли репозиторите от този лист. Съгласяваме се, ще ползваме тези репозитори.
Когато се обновяваме от репозиторите Debian иска някои сървиси да работят. Указваме кои ползваме.
Предлага да изберем кой софтуер да инсталираме в системата.
Искаме актуализацията на системата да не става автоматично, а когато ние решим.
Предлага ни да изпращаме данни до разработчиците на софтуера за системата която ползваме. Тук няма еднозначно решение. Принципно е хубаво да се пращат, особенно ако се работи нещо ново. За стандартни стабилни решения няма смисъл нищо да се праща.
Избираме кое точно ни е необходимо да се инсталира. В случая е стандартните пакети и SSH сървъра за да може отдалечено да управляваме сървъра.
Идва времето да се инсталира GRUB лодера.
Предлага да инсталираме GRUB на първичния диск.
Независимо, че виждате два диска инсталираме го на първия /dev/sda. Казахме, че все едно втория диск го няма за сега.
Инсталираме на диск с GPT. Това ни предупреждава.
Завършихме инсталацията.
Предлага да сверим часовника на системата.
Това е. Завършихме. Изваждаме инсталационния носител и рестартираме системата.
До тук добре. Правилно сме инсталирали GRUB и той се зареди.
Без проблеми системата се зареди докрая. Влизаме като ROOT.
Вкарваме паролата на ROOT.
Прекрасно, всичко работи. Да проверим какво сме сътворили.
df -h Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 394M 616K 393M 1% /run /dev/mapper/vg0-root 15G 1.3G 13G 10% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 938M 87M 804M 10% /boot tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000
Корена на системата е монтиран във виртуалната група vg0 и във виртуалния том root. Съответно boot е монтиран на физическия дял /dev/sda2. До тук добре. Да проверим swap-a.
/usr/sbin/swapon -s Filename Type Size Used Priority /dev/dm-1 partition 1949692 0 -2
SWAP-a също съществува и се намира в логическия том dm-1. Много интересно, горе логическите томове ги показва както /dev/mapper/vg0-root, а на swap-a го показва като /dev/dm-1. На практика може да кaжем следното:
ls -l /dev/mapper/vg0* lrwxrwxrwx 1 root root 7 Jan 25 13:01 /dev/mapper/vg0-root -> ../dm-0 lrwxrwxrwx 1 root root 7 Jan 25 13:01 /dev/mapper/vg0-swap -> ../dm-1
/dev/mapper/vg0-root това е /dev/dm-0, a /dev/mapper/vg0-swap e /dev/dm-1. Значи всичко е правилно. Още нещо може да проверим: За начало логическата група:
/usr/sbin/vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 32.06 GiB PE Size 4.00 MiB Total PE 8208 Alloc PE / Size 4290 / 16.76 GiB Free PE / Size 3918 / 15.30 GiB VG UUID YSwB2e-OgUO-2u9H-1E1w-IXBE-YeCr-Rrnfek
Имаме два работещи логически тома (Cur LV 2 / Open LV 2) и свободно място в групата (Free PE / Size 3918 / 15.30 GiB). Това ни позволява, ако някой от томовете не му достига място да му отпуснем от свободното място в групата. Извода е: "Правете томове с малък размер, a не на цялото място". Може да проверим и логическите томове
/home/a# /usr/sbin/lvdisplay --- Logical volume --- LV Path /dev/vg0/root LV Name root VG Name vg0 LV UUID fBjZAt-eDHj-hpzU-BceS-MoZh-WIk9-HXda6V LV Write Access read/write LV Creation host, time debian11-BIOS-LVM-RAID1, 2023-01-25 12:48:26 +0200 LV Status available # open 1 LV Size <14.90 GiB Current LE 3814 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:0 --- Logical volume --- LV Path /dev/vg0/swap LV Name swap VG Name vg0 LV UUID iCau6r-YCH1-g78e-HbWn-XAfI-V5Nz-XEld9w LV Write Access read/write LV Creation host, time debian11-BIOS-LVM-RAID1, 2023-01-25 12:49:22 +0200 LV Status available # open 2 LV Size <1.86 GiB Current LE 476 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256
Два логически тома са налични. Да проверим и физическия том
/usr/sbin/pvdisplay --- Physical volume --- PV Name /dev/sda3 VG Name vg0 PV Size <32.07 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 8208 Free PE 3918 Allocated PE 4290 PV UUID Bk46fh-nxsk-retz-Gn9x-RT1z-yq0P-JGkdbd
Имаме един физически том съдържащ в себе си виртуална група vg0. Има и още неща които показва, но за сега не са важни. Много пъти споменавах, да не се ползва много дисково пространство, а да се заделя толкова колкото Ви трябва и евентуално малко отгоре, но не цялото. Сега ще демонстрирам в работещо състояние как да си увеличите тома. Ще обяснявам стъпка по стъпка. Първото нещо е да видим сегашното състояние на системата:
df -h
Виждаме, че root е пълен на 10% (13GB свободни). Решили сме да правим нещо голямо изискващо свободно място 15GB. Трябват ни едни свободни 2GB. Следващата стъпка е да проверим има ли свободно място в логическата група.
/usr/sbin/vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 32.06 GiB PE Size 4.00 MiB Total PE 8208 Alloc PE / Size 4290 / <16.76 GiB Free PE / Size 3918 / 15.30 GiB VG UUID YSwB2e-OgUO-2u9H-1E1w-IXBE-YeCr-Rrnfek
Виждаме, че има свободно място 15.3GB. Напълно достатъчно. Да използваме едни 4GB за да има запас. И сега самото увеличение на логическия том root.
/usr/sbin/lvextend -L+4GB /dev/vg0/root x Size of logical volume vg0/root changed from 14.90 GiB (3814 extents) to 18.90 GiB (4838 extents). Logical volume vg0/root successfully resized.
Увеличихме размера на root от 14.9GB на 18.9GB. Точно с 4GB увеличихме тома. Сега малко пояснение по горната команда: lvextend - увеличаваме размера на логическия дял -L+4GB - размера се увеличава като към текущия добавяме 4GB /dev/vg0/root - добавяме пространство в указания логически дял. Забележете, указах /dev/vg0/root, а не /dev/mapper/vg0-root. На практика е едно и също. Използвахме -L+4GB за да дефинираме размера, но той може да се дефинира и по друг начин. Примерно знаем точно колко трябва да е голям логическия дял, в случая трябва да е 18.9GB. То тогава вместо -L+4GB може да се използва -L18.9GB И да проверим какво сътворихме.
df -h Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 394M 620K 393M 1% /run /dev/mapper/vg0-root 15G 1.3G 13G 10% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 938M 87M 804M 10% /boot tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000
Много важен момент! Увеличихме контейнера за разширение на логическия том, но самия логически том не е разширен. Ясно се вижда в частта /dev/mapper/vg0-root. С една дума размера на файловата система пак си остана 13GB. И имайки в предвид гореказаното трябва да увеличим размера на файловата система.
/home/a# /usr/sbin/resize2fs /dev/mapper/vg0-root resize2fs 1.46.2 (28-Feb-2021) Filesystem at /dev/mapper/vg0-root is mounted on /; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 3 The filesystem on /dev/mapper/vg0-root is now 4954112 (4k) blocks long.
Забележете, този път указах пътя да е /dev/mapper/vg0-root за да видите, че е едно и също. С горната команда запълнихме контейнера с файловата система. Да проверим:
df -h Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 394M 632K 393M 1% /run /dev/mapper/vg0-root 19G 1.3G 17G 8% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda2 938M 87M 804M 10% /boot tmpfs 394M 0 394M 0% /run/user/0 tmpfs 394M 0 394M 0% /run/user/1000
Правилно файловата система се увеличи с 4GB. Съответно се увеличи и свободното пространство. Сигурно си задавате въпроса, а дали няма така лесно да се намаля размера на виртуалния дял? За съжаление не е толкова просто. Технологията за намаляване е: Първо намаляваме файловата система и след това контейнера. В противен случай ако намалим направо контейнера ще счупим файловата система. Преди да покажа как се намаля размера искам да разясня един факт. Увеличаването на размера го направихме на две стъпки. Първо увеличихме контейнера и след това файловата система. Има и още един начин, всичко това да стане с една стъпка. За целта трябваше да използваме командата:
/usr/sbin/lvextend -r -L+4GB /dev/vg0/root
Тук важния момент е ключа -r, той автоматично разширява и файловата система. Сега да демонстрираме как се намаля размера на дяла. Примерно от един дял трябва да прехвърлите място в друг. За да се намали размера на дяла който ще намаляваме трябва да се размонтира. Веднага изкача въпроса. А как да стане при работеща система на дяла root?. Ето го и проблема. За целта трябва да се спре системата и да се стартира от Лайв СД. Зареждаме системата примерно от Live CD на Lubuntu. Отваряме терминал. И проверяваме дали Lubuntu е разпознало нашата LVM система.
sudo vgdisplay
Всичко е точно. Разпозната е. Обаче ако пробваме с:
sudo df -h
Ще видим, че логическите томове не са монтирани. Това ни и трябва. Така ще може да намалим размера на немонтираните логически дялове. Да демонстрираме пак на root. Първото нещо както знаем е да намалим размера на файловата система. Важен момент: най-първо трябва да проверим за грешки файловата система.
sudo e2fsck /dev/vg0/root e2fsck 1.46.5 (30-Dec-2021) /dev/vg0/root: clean, 37312/1237888 files, 457984/4954112 blocks.
За по-детайлна проверка може да използваме ключа -f. След като видяхме, че нямаме грешки, да намалим файловата система. Както споменах по-горе за увеличението на размера можеше да се направи с една команда. Точно този метод ще ползваме и тук. Може да стане на две стъпки но вероятността за грешка се увеличава, затова на една стъпка
sudo lvreduce -r -L-4GB /dev/vg0/root
Готово, и всичко е точно. намали се с 4GB. Обърнете внимание, първо се изпълни преоразмеряване на файловата система и чак след това редуциране на логическия том. Да проверим:
sudo lvdisplay
Вярно размера на дяла е намалял.
Твърдението в заглавието не е точно. Няма да правим RAID0 на двата диска, а ще разширим размера на логическата група и на логическия дял. За начало да проверим какви твърди дискове имаме:
ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Jan 25 19:13 /dev/sda brw-rw---- 1 root disk 8, 1 Jan 25 19:13 /dev/sda1 brw-rw---- 1 root disk 8, 2 Jan 25 19:13 /dev/sda2 brw-rw---- 1 root disk 8, 3 Jan 25 19:13 /dev/sda3 brw-rw---- 1 root disk 8, 16 Jan 25 19:13 /dev/sdb
Имаме налични два твърди диска sda, sdb. Преди да го добавим в логическата група, първо трябва да се подготви. За целта ще ползваме помощна програма parted. За да я ползваме обаче първо трябва да се инсталира.
apt install parted -y
Инсталирахме програмата Да настроим втория диск.
/usr/sbin/parted /dev/sdb GNU Parted 3.4 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands.
Ако се сещате първия диск го дефинирахме като GPT. За разнообразие втория диск ще го направим в MSDOS.
(parted) mklabel msdos (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 35.4GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags
Готово диска е във формат MSDOS. Още диска няма никакви дялове. Хубавото на MSDOS e, че не изисква никакви физически дялове за да може да се включи в LVM структурата. Ако беше GPT, първо се дефинира като GPT и след това на целия диск може да се направи един дял. Този създаден дял ще участва в LVM. Затова с това завършваме и излизаме от parted.
(parted) q Information: You may need to update /etc/fstab.
Да проверим твърдите дискове отново.
ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Jan 25 19:13 /dev/sda brw-rw---- 1 root disk 8, 1 Jan 25 19:21 /dev/sda1 brw-rw---- 1 root disk 8, 2 Jan 25 19:13 /dev/sda2 brw-rw---- 1 root disk 8, 3 Jan 25 19:13 /dev/sda3 brw-rw---- 1 root disk 8, 16 Jan 25 19:54 /dev/sdb
Нищо на пръв поглед не се е променило. sdb отново няма никакви дялове както в началото. За да включим sdb в LVM, първо да дефинираме диска като physical volume/физически дял.
/usr/sbin/pvcreate /dev/sdb WARNING: dos signature detected on /dev/sdb at offset 510. Wipe it? [y/n]: y Wiping dos signature on /dev/sdb. Physical volume "/dev/sdb" successfully created.
Готово. Да присъединим физичския дял към съществуващата група на дяловете.
/usr/sbin/vgextend vg0 /dev/sdb Volume group "vg0" successfully extended
Да проверим какво сме направили.
/usr/sbin/vgdisplay --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size <65.06 GiB PE Size 4.00 MiB Total PE 16655 Alloc PE / Size 4290 / <16.76 GiB Free PE / Size 12365 / 48.30 GiB VG UUID YSwB2e-OgUO-2u9H-1E1w-IXBE-YeCr-Rrnfek
В групата има две физически устройства. Свободното място също се е увеличило на 48.40GB. От тук нататък с логическата група можете да правите каквото си поискате. Не стига място за накой дял, веднага може да го увеличим. Искам да създадем нов логически дял, имаме място може да го създадем. В началото написах, че това е RAID1 но не точно така, просто увеличихме размера на логическата група. Освен добавянето на физически дял към логическата група, също може и да извадим физически дял от логическата група. Първо вадим sdb от логическата група vg0
/usr/sbin/vgreduce vg0 /dev/sdb Removed "/dev/sdb" from volume group "vg0"
Готво След това вадим физическия дял sdb от LVM.
/usr/sbin/pvremove /dev/sdb Labels on physical volume "/dev/sdb" successfully wiped.
И тука мина успешно. Остана да демонстрираме и RAID1
Чудя се как да почна тази част. За да прехвърлите цялата система на логически RAID 1 е доста сложно. При наличие на ZFS файловата система това начинание е меко казано глупаво. Обаче пък живота поднася изненади и може някъде да потрябва. Сега мисля да направя така: - ще демонстрирам как се прави RAID1 но не на текущата операционна система, а примерно на някакви други два дяла, - ще обясня методологията на прехвърляне на системата върху логическия RAID без да показвам команди. За начало да разделим втория диск както е разделен първия. Гледаме как е диск sda за да се ориентираме.
parted /dev/sda GNU Parted 3.4 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) unit mib (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sda: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 boot 3 2050MiB 33791MiB 31741MiB ext4 lvm
Това ще ни е отправната точка. Прехвърляме се на втория диск.
(parted) select /dev/sdb Using /dev/sdb
Разделяме го както първия диск. Започваме с първия дял.
(parted) mklabel gpt (parted) mkpart Partition name? []? bios_grub File system type? [ext2]? Просто натискаме Enter Start? 1 End? 2 (parted) set 1 bios_grub on
Да видим текущото състояние
(parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub
Имаме първи дял както на първия диск с включен флаг bios_grub. Продължаваме със изграждане на втория дял.
(parted) mkpart Partition name? []? boot File system type? [ext2]? Просто натискаме Enter Start? 2 End? 2050 (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 boot
И този дял е както на първия диск. Продължаваме с изграждане на третия дял.
(parted) mkpart Partition name? []? lvm File system type? [ext2]? ext4> Start? 2050> End? -1 (parted) p Model: ATA VMware Virtual S (scsi) Disk /dev/sdb: 33792MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 2.00MiB 1.00MiB ext2 bios_grub bios_grub 2 2.00MiB 2050MiB 2048MiB ext2 boot 3 2050MiB 33791MiB 31741MiB ext4 lvm (parted) q Information: You may need to update /etc/fstab.
До тук добре. Идеята ми е, ако ми остане сила и желание да покажа как да прехвърля системата на тези два диска във виртуален RAID1. За да покажа как се прави софтуерен RAID1 ще сложа нови два диска и на тях ще демонстрирам. За начало добавяме нови два диска на виртуалната машина. Оразмеряваме новите два диска чрез parted, преди това да видим текущото състояние.
ls -l /dev/sd* brw-rw---- 1 root disk 8, 0 Jan 26 20:28 /dev/sda brw-rw---- 1 root disk 8, 1 Jan 26 20:28 /dev/sda1 brw-rw---- 1 root disk 8, 2 Jan 26 20:28 /dev/sda2 brw-rw---- 1 root disk 8, 3 Jan 26 20:28 /dev/sda3 brw-rw---- 1 root disk 8, 16 Jan 26 20:33 /dev/sdb brw-rw---- 1 root disk 8, 17 Jan 26 20:33 /dev/sdb1 brw-rw---- 1 root disk 8, 18 Jan 26 20:33 /dev/sdb2 brw-rw---- 1 root disk 8, 19 Jan 26 20:33 /dev/sdb3 brw-rw---- 1 root disk 8, 32 Jan 26 20:28 /dev/sdc brw-rw---- 1 root disk 8, 48 Jan 26 20:28 /dev/sdd
Имаме два диска по 33GB (старите) и нови два диска по 8GB. Ще форматираме дискове sdc и sdd.
parted GNU Parted 3.4 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) select /dev/sdc Using /dev/sdc (parted) mklabel gpt (parted) mkpart Partition name? []? lvm File system type? [ext2]? ext4 Start? 1 End? -1 (parted) select /dev/sdd Using /dev/sdd (parted) mklabel gpt (parted) mkpart Partition name? []? lvm File system type? [ext2]? ext4 Start? 1 End? -1 (parted) q Information: You may need to update /etc/fstab.
Двата диска имат по един дял на цялото си пространство. Да проверим:
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 33G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 954M 0 part /boot └─sda3 8:3 0 32.1G 0 part ├─vg0-root 254:0 0 14.9G 0 lvm / └─vg0-swap 254:1 0 1.9G 0 lvm [SWAP] sdb 8:16 0 33G 0 disk ├─sdb1 8:17 0 1M 0 part ├─sdb2 8:18 0 1.9G 0 part └─sdb3 8:19 0 31.1G 0 part sdc 8:32 0 8G 0 disk └─sdc1 8:33 0 8G 0 part sdd 8:48 0 8G 0 disk └─sdd1 8:49 0 8G 0 part sr0 11:0 1 1024M 0 rom
sda и sdb са първите дискове които имахме и са по 33GB. sdc и sdd са по 8B и съответно имат по един дял също 8GB. Сега ще се постараем да изградим виртуален RAID1 на дискове sdc и sdd. Първото нещо е да създадем физически томове на sdc1 и sdd1 с LVM структура.
/usr/sbin/pvcreate /dev/sdc1 Physical volume "/dev/sdc1" successfully created. /usr/sbin/pvcreate /dev/sdd1 Physical volume "/dev/sdd1" successfully created.
Успешна работа. Да създадем логическа група на двата физически дяла.
/usr/sbin/vgcreate vg1 /dev/sdc1 /dev/sdd1 Volume group "vg1" successfully created
И да проверим
/usr/sbin/pvdisplay --- Physical volume --- PV Name /dev/sdc1 VG Name vg1 PV Size <8.00 GiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 2047 Free PE 2047 Allocated PE 0 PV UUID CP41kL-KMED-LKff-SyPU-5CXj-htaa-aBkaiD --- Physical volume --- PV Name /dev/sdd1 VG Name vg1 PV Size <8.00 GiB / not usable 2.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 2047 Free PE 2047 Allocated PE 0 PV UUID 0y2a6i-aw8Z-3HUO-ikul-gpWw-TmZy-7Fl4bH --- Physical volume --- PV Name /dev/sda3 VG Name vg0 PV Size <32.07 GiB / not usable 3.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 8208 Free PE 3918 Allocated PE 4290 PV UUID Bk46fh-nxsk-retz-Gn9x-RT1z-yq0P-JGkdbd
Супер имаме две виртуални групи (vg0, vg1). Съответно vg0 има един физически дял /dev/sda3, групата vg1 има два физически дяла sdc1, sdd1. До тук е точно както трябва. Да проверим и логическата груп vg1.
/usr/sbin/vgdisplay vg1 --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 15.99 GiB PE Size 4.00 MiB Total PE 4094 Alloc PE / Size 0 / 0 Free PE / Size 4094 / 15.99 GiB VG UUID CeyiCV-CtTa-svV3-Kfvq-mLNx-7y77-s8N8BW
Отново показва, имаме два физически дяла и размера на групата вече не е 8GB, а 16GB. Супер, продължаваме със създаването на логическия RAID1. Ще покажа и двете команди, които вършат едно и също. Просто втората се пише по-кратко. Започвам с първата команда.
/usr/sbin/lvcreate --size 3G --name lvmirror --mirrors 1 vg1
И втората команда, която лично предпочитам.
/usr/sbin/lvcreate -L 3G -n lvmirror -m1 vg1 Logical volume "lvmirror" created.
Супер, RAID1 е създаден. Сега ще изчакаме малко докато се синхронизират двата диска. От време на време може да се проверява със следната команда.
/usr/sbin/lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices root vg0 -wi-ao---- 14.90g /dev/sda3(0) swap vg0 -wi-ao---- 1.86g /dev/sda3(3814) lvmirror vg1 rwi-a-r--- 3.00g 100.00 lvmirror_rimage_0 (0),lvmirror_rimage_1(0) [lvmirror_rimage_0 vg1 iwi-aor--- 3.00g /dev/sdc1(1) [lvmirror_rimage_1 vg1 iwi-aor--- 3.00g /dev/sdd1(1) [lvmirror_rmeta_0] vg1 ewi-aor--- 4.00m /dev/sdc1(0) [lvmirror_rmeta_1] vg1 ewi-aor--- 4.00m /dev/sdd1(0)
Изчаквате докато синхронизирането стане на 100% Cpu$Sync стане 100. В нашия случай вече е 100%. RAID1 е създаден. За да се работи с него трябва да създадем файлова система (да го форматираме). Ще ползваме файловата система Ext4.
/usr/sbin/mkfs.ext4 /dev/vg1/lvmirror mke2fs 1.46.2 (28-Feb-2021) Creating filesystem with 786432 4k blocks and 196608 inodes Filesystem UUID: fb9e5f17-f5f5-4be1-b14b-c673b73753d0 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
До тук добре, но за да може да се работи със RAID-a ще трябва да го монтираме някъде. Сега ще го монтирам на ръка, а добрата практика е да се опише в /etc/fstab. За начало създаваме папка където да го монтираме.
mkdir /mnt/vlmirror
Папката е готова. Да монтираме RAID-a
/usr/bin/mount /dev/vg1/lvmirror /mnt/vlmirror/
Готово. Да проверим какво има вътре.
ls -l /mnt/vlmirror/ total 16 drwx------ 2 root root 16384 Jan 26 21:21 lost+found
Да създадем папка в RAID-a и да копираме там някакъв файл.
mkdir /mnt/vlmirror/test cp /etc/fstab /mnt/vlmirror/test/ ls -l /mnt/vlmirror/test/ total 4 -rw-r--r-- 1 root root 816 Jan 26 21:29 fstab
Преди да счупим RAID-a да проверим дали е синхронизиран на 100%.
/usr/sbin/lvs -a -o +devices
Отново синхронизиран на 100%. И сега чупим RAID1. Примерно изгаря първия диск от 8GB. Или във виртуалната машина третия диск. Спираме виртуалната машина и трием диска. След рестарта да проверим какво стана.
/usr/sbin/lvs -a -o +devices WARNING: Couldn't find device with uuid 0y2a6i-aw8Z-3HUO-ikul-gpWw-TmZy-7Fl4bH. WARNING: VG vg1 is missing PV 0y2a6i-aw8Z-3HUO-ikul-gpWw-TmZy-7Fl4bH (last written to /dev/sdd1). LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices root vg0 -wi-ao---- <14.90g /dev/sda3(0) swap vg0 -wi-ao---- <1.86g /dev/sda3(3814) lvmirror vg1 rwi---r-p- 3.00g lvmirror_rimage_0(0),lvmirror_rimage_1(0) [lvmirror_rimage_0] vg1 Iwi---r--- 3.00g /dev/sdc1(1) [lvmirror_rimage_1] vg1 Iwi---r-p- 3.00g [unknown](1) [lvmirror_rmeta_0] vg1 ewi---r--- 4.00m /dev/sdc1(0) [lvmirror_rmeta_1] vg1 ewi---r-p- 4.00m [unknown](0)
Обърнете внимание на червения текст. Казва, че единия диск го няма. Да приверим какво се получи.
/usr/sbin/vgdisplay vg1 WARNING: Couldn't find device with uuid 0y2a6i-aw8Z-3HUO-ikul-gpWw-TmZy-7Fl4bH. WARNING: VG vg1 is missing PV 0y2a6i-aw8Z-3HUO-ikul-gpWw-TmZy-7Fl4bH (last written to /dev/sdd1). --- Volume group --- VG Name vg1 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 0 Max PV 0 Cur PV 2 Act PV 1 VG Size 15.99 GiB PE Size 4.00 MiB Total PE 4094 Alloc PE / Size 1538 / <6.01 GiB Free PE / Size 2556 / 9.98 GiB VG UUID CeyiCV-CtTa-svV3-Kfvq-mLNx-7y77-s8N8BW
Забележете, в групата има 2 дяла, а активния е един, но най-лошия е горния надпис. vg1 липсва. Грубо казано и RAID-a се счупи. Да направим още няколко проверки
/usr/sbin/pvs WARNING: Couldn't find device with uuid PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie. WARNING: VG vg1 is missing PV PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie (last written to /dev/sdc1). PV VG Fmt Attr PSize PFree /dev/sda3 vg0 lvm2 a-- 32.06g 15.30g /dev/sdc1 vg1 lvm2 a-- <8.00g 4.99g [unknown] vg1 lvm2 a-m <8.00g 4.99g
От горната команда се вижда, че имаме само два физически дяла които са активни (/dev/sda3, /dev/sdc1) и един непознат. Съответно /dev/sda3 е във виртуалната група vg0, а /dev/sdc1 e b /vg1 и още виждаме, че vg1 е счупена. Още нещо трябва да се види: изтрихме третия диск, а /dev/sdc съществува, би трябвало той да го няма, а да съществува /dev/sdd. Това е така, защото сме на виртуална машина, а не на физическа. Да се пробваме да оправим групата и да я монтираме, за да разберем дали се е развалил RAID-a.
/usr/sbin/vgreduce vg1 /dev/sdd1 Cannot use /dev/sdd1: device not found WARNING: Couldn't find device with uuid PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie. WARNING: VG vg1 is missing PV PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie (last written to /dev/sdc1). Cannot change VG vg1 while PVs are missing. See vgreduce --removemissing and vgextend --restoremissing. Cannot process volume group vg1
Не стана, защото във vg1 не съществува физическия том PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie. Да поправим проблема.
/usr/sbin/vgreduce --removemissing vg1 --mirrorsonly --force WARNING: Couldn't find device with uuid PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie. WARNING: VG vg1 is missing PV PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie (last written to /dev/sdc1). WARNING: Couldn't find device with uuid PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie. WARNING: Couldn't find device with uuid PbWD5x-L0oN-4aDy-Utj9-DedP-mVt0-KdoIie. Wrote out consistent volume group vg1.
Поправиха всичките липсващи физически томове липсващи в логическите групи. Да проверим:
/usr/sbin/pvs PV VG Fmt Attr PSize PFree /dev/sda3 vg0 lvm2 a-- 32.06g 15.30g /dev/sdc1 vg1 lvm2 a-- <8.00g 4.99g
Сега всичко е точно. Да проверим и логическите томове.
/usr/sbin/lvs -a -o +devices LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert Devices root vg0 -wi-ao---- <14.90g /dev/sda3(0) swap vg0 -wi-ao---- <1.86g /dev/sda3(3814) lvmirror vg1 rwi---r--- 3.00g lvmirror_rimage_0(0),lvmirror_rimage_1(0) [lvmirror_rimage_0] vg1 vwi---r--- 3.00g [lvmirror_rimage_1] vg1 Iwi---r--- 3.00g /dev/sdc1(1) [lvmirror_rmeta_0] vg1 ewi---r--- 4.00m [lvmirror_rmeta_1] vg1 ewi---r--- 4.00m /dev/sdc1(0)
До тук добре. Да проверим дали ще може да монтираме /dev/vg1.
ls -l /dev/vg* crw------- 1 root root 10, 63 Jan 27 12:05 /dev/vga_arbiter /dev/vg0: total 0 lrwxrwxrwx 1 root root 7 Jan 27 12:05 root -> ../dm-0 lrwxrwxrwx 1 root root 7 Jan 27 12:05 swap -> ../dm-1
Няма да можем, защото vg1 липсва Да оправим и този проблем като рестартираме машината. След това отново проверяваме.
ls -l /dev/vg* crw------- 1 root root 10, 63 Jan 27 12:18 /dev/vga_arbiter /dev/vg0: total 0 lrwxrwxrwx 1 root root 7 Jan 27 12:18 root -> ../dm-0 lrwxrwxrwx 1 root root 7 Jan 27 12:18 swap -> ../dm-1 /dev/vg1: total 0 lrwxrwxrwx 1 root root 7 Jan 27 12:18 lvmirror -> ../dm-6
Готово. Да пробваме да монтираме vg1
mount /dev/vg1/lvmirror /mnt/vlmirror/
Да проверим какво има в наличност в монтирания логически том.
ls -l /mnt/vlmirror/ total 20 drwx------ 2 root root 16384 Jan 27 11:21 lost+found drwxr-xr-x 2 root root 4096 Jan 27 11:22 test /home/a# ls -l /mnt/vlmirror/test/ total 4 -rw-r--r-- 1 root root 816 Jan 27 11:22 fstab
Всичко което създадохме в RAID1 масива се запази. Техниката си работи както обикновен RAID1, но по отношение на скоростта не бих се изказал ласкаво. Ако ме питате работете с физически RAID масиви. С това смятам да приключвам. Независимо, че не харесвам този начин на работа В следващите теми ще се убедите, че ползването на LVM е нещо много ценно.