Linux
  • << DEBIAN >>

  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     Файлов сървър + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на Nginx
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •       Защита - SPF, DKIM и DMARK
  •       Подобрение Антивирус
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •       DKIM, SPF и DMARK
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK
  • << UBUNTU >>
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • Файлова система BTRFS

    За начало да споделя, че съм ползвал помощна информация от Файловая система BTRFS в CentOS 7.

    Създаване на BTRFS

    Основните команди които ще разгледаме са: ● mkfs.btrfs /dev/устройство - създаване на проста файлова система BTRFS ● mkfs.btrfs /dev/устройство1 /dev/устройство2 - създаване на BTRFS на няколко устройства ● mount /dev/устройство /точка-на-монтиране - монтиране на файловата система ● btrfs device scan - сканиране на системата за BTRFS файлови системи ● btrfs filesystem show - показване налични BTRFS-и ● btrfs fi show - показване налични BTRFS-и, както горната команда но съкратено ● btrfs filesystem resize (+|-) обем / точка-на-монтиране - увеличава/намалява размера на BTRFS обема може да е в: K,k-килобайти | М,м-мегабайти | G,g - гигабайти ● btrfs filesystem resize id:обем / точка-на-монтиране - задаваме твърд размер на BTRFS Да разгледаме какви дискове имаме и какво ще правим.

    lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 11G 0 disk sdb 8:16 0 11G 0 disk sdc 8:32 0 11G 0 disk sdd 8:48 0 11G 0 disk sde 8:64 0 55G 0 disk ├─sde1 8:65 0 512M 0 part /boot/efi ├─sde2 8:66 0 53.5G 0 part / └─sde3 8:67 0 976M 0 part [SWAP] sr0 11:0 1 629M 0 rom

    Имаме 4 празни диска. На sde е инсталиран Debian. Първите 4 диска са SATA, а последния е SSD. За начало обаче е необходимо да инсталираме помощните пакети на BTRFS.

    sudo apt update -y sudo apt upgrade -y apt-cache search '^btrfs' btrfs-compsize - calculate compression ratio of a set of files on btrfs btrfs-heatmap - Visualize the layout of data on your btrfs filesystem btrfs-progs - Checksumming Copy on Write Filesystem utilities btrfsmaintenance - automate btrfs maintenance tasks on mountpoints or directories golang-github-containerd-btrfs-dev - Btrfs bindings for Go golang-github-dennwc-btrfs-dev - btrfs library for Go libblockdev-btrfs-dev - BTRFS plugin for libblockdev - development libblockdev-btrfs2 - BTRFS plugin for libblockdev monitoring-plugins-btrfs - btrfs plugin for nagios compatible monitoring systems udisks2-btrfs - BTRFS support for udisks2 sudo apt install btrfs-progs -y

    Вече може да създаваме дискове с файлова система BTRFS. Да създадем BTRFS на /dev/sda

    sudo mkfs.btrfs /dev/sda btrfs-progs v6.2 See http://btrfs.wiki.kernel.org for more information. NOTE: several default settings have changed in version 5.15, please make sure this does not affect your deployments: - DUP for metadata (-m dup) - enabled no-holes (-O no-holes) - enabled free-space-tree (-R free-space-tree) Label: (null) UUID: 5f5b552d-dadc-47d0-ba99-082a3428c17b Node size: 16384 Sector size: 4096 Filesystem size: 11.00GiB Block group profiles: Data: single 8.00MiB Metadata: DUP 256.00MiB System: DUP 8.00MiB SSD detected: no Zoned device: no Incompat features: extref, skinny-metadata, no-holes Runtime features: free-space-tree Checksum: crc32c Number of devices: 1 Devices: ID SIZE PATH 1 11.00GiB /dev/sda

    Забележете, файловата система е 11GB. Данните (Data) са single. Това означава, че са записани еднократно. Метаданните (Metadata) са DUP. Това значи, че са дублирани. На практика заемат 2х265МВ=512МВ. Системните данни също са дублирани. Между другото ако се чудите какво представляват метаданните, това са папки, структура на дървото, имена на файлове, дата, час, разширения, къде се намира файла и т.н. И да се върнем на размера на файловата система. Разбрахме, че имаме резервирано място за метаданни в размер на 512МВ. Това означава, че имаме място за данни във файловата система BTRFS 11GB-0.5GB=10.5GB. Да създадем едновременно 2 диска с BTRFS.

    sudo mkfs.btrfs /dev/sdb /dev/sdc btrfs-progs v6.2 See http://btrfs.wiki.kernel.org for more information. NOTE: several default settings have changed in version 5.15, please make sure this does not affect your deployments: - DUP for metadata (-m dup) - enabled no-holes (-O no-holes) - enabled free-space-tree (-R free-space-tree) Label: (null) UUID: 0f69fe55-628f-4190-a2f7-5e671dcb3091 Node size: 16384 Sector size: 4096 Filesystem size: 22.00GiB Block group profiles: Data: single 8.00MiB Metadata: RAID1 256.00MiB System: RAID1 8.00MiB SSD detected: no Zoned device: no Incompat features: extref, skinny-metadata, no-holes Runtime features: free-space-tree Checksum: crc32c Number of devices: 2 Devices: ID SIZE PATH 1 11.00GiB /dev/sdb 2 11.00GiB /dev/sdc

    Забележете, че мястото на файловата система е 22GB. Все едно имаме RAID0. Обаче метаданните и системните данни се съхраняват в RAID1. Отново са дублирани но в RAID1. И логически разсъждавайки имаме място за данни 22GB-0.25GB-0.25GB=21.5GB. За накрая забележете, че BTRFS-a който създадохме се състои от 2 диска.

    Монтиране на BTRFS

    Продължавам с горния пример, където създадохме BTRFS от два диска.

    sudo mount /dev/sdc /mnt

    И да проверим как се е монтирала.

    sudo mount | tail -n1 /dev/sdc on /mnt type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/)

    Забележете монтирахме само /dev/sdc. Монтира се само единия диск, без значение дали ще е /dev/sdb или /dev/sdc. Да проверим.

    sudo df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 795M 668K 794M 1% /run /dev/sde2 53G 1.7G 49G 4% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sde1 511M 5.9M 506M 2% /boot/efi tmpfs 795M 0 795M 0% /run/user/0 tmpfs 795M 0 795M 0% /run/user/1000 /dev/sdc 22G 3.8M 22G 1% /mnt

    Имаме монтиран /dev/sdc но размра му е 22GB. Това означава, че са монтирани в RAID0 /dev/sdb и /dev/sdc Можем и да размонтираме диска.

    sudo umount /mnt

    На практика монтирането може да е с много опции. Горните примери са в много опростен вид.

    Сканиране на устройства с BTRFS

    Ако по някаква причина не откривате устройство или устройства с BTRFS можете да сканирате системата за налични такива.

    sudo btrfs device scan Scanning for Btrfs filesystems registered: /dev/sdb registered: /dev/sdc registered: /dev/sda

    Да погледнем сега какви налични BTRFS имаме.

    sudo btrfs filesystem show sudo btrfs fi show Label: none uuid: 0f69fe55-628f-4190-a2f7-5e671dcb3091 Total devices 2 FS bytes used 144.00KiB devid 1 size 11.00GiB used 272.00MiB path /dev/sdb devid 2 size 11.00GiB used 264.00MiB path /dev/sdc Label: none uuid: 5f5b552d-dadc-47d0-ba99-082a3428c17b Total devices 1 FS bytes used 144.00KiB devid 1 size 11.00GiB used 536.00MiB path /dev/sda

    Показва налични BTRFS-и и как изглеждат. Освен това имаме UUID на системите им. На по-късен етап UUID ще е необходим за /etc/fstab.

    Монтиране чрез /etc/fstab

    Да запишем UUID в /etc/fstab.

    sudo su btrfs filesystem show >> /etc/fstab

    Да редактираме /etc/fstab, така че BTRFS-ите автоматично да се заредят след рестарт на системата.

    nano /etc/fstab # # / was on /dev/sda2 during installation UUID=e963606d-5e4b-465b-bd20-9dfab0794314 / ext4 errors=remount-ro 0 1 # /boot/efi was on /dev/sda1 during installation UUID=22AF-39DA /boot/efi vfat umask=0077 0 1 # swap was on /dev/sda3 during installation UUID=a48ede21-6aba-466c-a805-7974efaebd90 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 # Label: none uuid: 0f69fe55-628f-4190-a2f7-5e671dcb3091 # Total devices 2 FS bytes used 144.00KiB # devid 1 size 11.00GiB used 272.00MiB path /dev/sdb # devid 2 size 11.00GiB used 264.00MiB path /dev/sdc UUID=0f69fe55-628f-4190-a2f7-5e671dcb3091 /mnt/double btrfs device=/dev/sdb,device=/dev/sdc 0 0 # Label: none uuid: 5f5b552d-dadc-47d0-ba99-082a3428c17b # Total devices 1 FS bytes used 144.00KiB # devid 1 size 11.00GiB used 536.00MiB path /dev/sda UUID=5f5b552d-dadc-47d0-ba99-082a3428c17b /mnt/single btrfs defaults 0 0

    Размонтирваме всички BTRFS-и.

    mount | grep btrfs /dev/sdb on /mnt type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/) umount /mnt

    Монтираме всичко което е във файла /etc/fstab. Имитираме, че зареждаме /etc/fstab след рестарт на системата.. Преди това обаче трябва да създадем две папки.

    mkdir /mnt/{single,double} mount -a mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload. systemctl daemon-reload

    Да проверим какво сме монтирали.

    mount | tail -n5 binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime) tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=813080k,nr_inodes=203270,mode=700,inode64) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=813080k,nr_inodes=203270,mode=700,uid=1000,gid=1000,inode64) /dev/sda on /mnt/single type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/) /dev/sdb on /mnt/double type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/)

    Всичко е правилно, значи след рестарта BTRFS-ите ще се заредят.

    Промяна размера на файловата система

    Няколко примера.

    btrfs filesystem resize -1g /mnt/single/ Resize device id 1 (/dev/sda) from 11.00GiB to 10.00GiB btrfs filesystem show Label: none uuid: 5f5b552d-dadc-47d0-ba99-082a3428c17b Total devices 1 FS bytes used 144.00KiB devid 1 size 10.00GiB used 536.00MiB path /dev/sda Label: none uuid: 0f69fe55-628f-4190-a2f7-5e671dcb3091 Total devices 2 FS bytes used 144.00KiB devid 1 size 11.00GiB used 272.00MiB path /dev/sdb devid 2 size 11.00GiB used 264.00MiB path /dev/sdc btrfs filesystem resize 1:5G /mnt/double Resize device id 2 (/dev/sdc) from 11.00GiB to 5.00GiB btrfs filesystem resize 2:-6G /mnt/double Resize device id 2 (/dev/sdc) from 11.00GiB to 5.00GiB

    ВНИМАНИЕ !!! Променяме размера на файловата система в диска, а не размера на диска. Да проверим:

    df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 795M 684K 794M 1% /run /dev/sde2 53G 1.7G 49G 4% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sde1 511M 5.9M 506M 2% /boot/efi tmpfs 795M 0 795M 0% /run/user/0 tmpfs 795M 0 795M 0% /run/user/1000 /dev/sda 10G 3.8M 9.5G 1% /mnt/single /dev/sdb 10G 3.8M 9.5G 1% /mnt/double

    Да проверим BTRFS-a на двата диска.

    btrfs filesystem show /mnt/double Label: none uuid: 0f69fe55-628f-4190-a2f7-5e671dcb3091 Total devices 2 FS bytes used 144.00KiB devid 1 size 5.00GiB used 272.00MiB path /dev/sdb devid 2 size 5.00GiB used 264.00MiB path /dev/sdc

    Файловата система е 10GB но двата диска са по 10GB значи общо е 20GB. Не забравяйте, че метаданните заемат двойно място. Значи файловата система за данни не е чисто 10GB. Да проверим.

    df -h Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 795M 684K 794M 1% /run /dev/sde2 53G 1.7G 49G 4% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sde1 511M 5.9M 506M 2% /boot/efi tmpfs 795M 0 795M 0% /run/user/0 tmpfs 795M 0 795M 0% /run/user/1000 /dev/sda 10G 3.8M 9.5G 1% /mnt/single /dev/sdb 10G 3.8M 9.5G 1% /mnt/double

    Проверка на BTRFS

    Когато проверявате дадена файлова система то тя трябва да е размонтирана.

    btrfsck /dev/sda Opening filesystem to check... Checking filesystem on /dev/sda UUID: 5f5b552d-dadc-47d0-ba99-082a3428c17b [1/7] checking root items [2/7] checking extents [3/7] checking free space tree [4/7] checking fs roots [5/7] checking only csums items (without verifying data) [6/7] checking root refs [7/7] checking quota groups skipped (not enabled on this FS) found 147456 bytes used, no error found total csum bytes: 0 total tree bytes: 147456 total fs tree bytes: 32768 total extent tree bytes: 16384 btree space waste bytes: 140455 file data blocks allocated: 0 referenced 0

    Изтриване на BTRFS

    Първо демонтираме BTRFS-ите които ще трием.

    mount | grep btrfs /dev/sdb on /mnt/double type btrfs (rw,relatime,space_cache=v2,subvolid=5,subvol=/) umount /mnt/double

    Проверяваме за BTRFS.

    btrfs fi show Label: none uuid: 0f69fe55-628f-4190-a2f7-5e671dcb3091 Total devices 2 FS bytes used 144.00KiB devid 1 size 5.00GiB used 272.00MiB path /dev/sdb devid 2 size 5.00GiB used 264.00MiB path /dev/sdc Label: none uuid: 965a090d-2030-42d7-82d6-717b4734c2e6 Total devices 1 FS bytes used 144.00KiB devid 1 size 11.00GiB used 536.00MiB path /dev/sda

    И да изтрием BTRFS на /dev/sdb и /dev/sdc.

    wipefs --all -t btrfs /dev/sdb /dev/sdc /dev/sdb: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d /dev/sdc: 8 bytes were erased at offset 0x00010040 (btrfs): 5f 42 48 52 66 53 5f 4d

    Да проверим.

    btrfs fi show Label: none uuid: 965a090d-2030-42d7-82d6-717b4734c2e6 Total devices 1 FS bytes used 144.00KiB devid 1 size 11.00GiB used 536.00MiB path /dev/sda

    Ако искате да изтриете всички sd устройства то:

    wipefs --all -t btrfs /dev/sd*