MYCSS

2024-10-12

Restore a VM from a backup file on a ZFS snapshot over NFS in Proxmox VE by use GUI.

Умови:

Proxmox VE server  періодично робить резервні копії до NFS спільної теки котра розміщена на NAS сервері.

NAS це TrueNAS сервер що зберігає дані у ZFS файловій системі. TrueNAS автоматично налаштований робити періодичні знімки (snapshots) ZFS dataset де розміщенні дані для NFS теки.

У VM сервера знайдено підозрілі файли за назвою "." розміром 1024 bytes з бінарним вмістом. Необхідно провести аналіз в "offline copy" сервера.

Задача:

Відновити віртуальну машину з попередньої резервної копії. 

Рішення:

Під'єднати попередні періодичні знімки (snapshots) ZFS dataset, що створені на стороні NAS сервера, для відновлення віртуальної машини з її резервної копії.

Підключення до консолі Proxmox Node.

  • Proxmox node: ns21
  • NFS share: nfs-ns58-10g
  • Target data: 2024-10-11
  • Target VM ID: 150

Proxmox console.
ZFS snapshots зберігаються за замовчуванням у прихованій теці ".zfs".

Знайдено цільовий шлях де зберігаються потрібні резервні копії: /mnt/pve/nfs-ns58-10g/.zfs/snapshot/auto-2024-10-11_00-00

2024-10-05

Note. FreeBSD. pkg create. Backup of erlang-21. Сталася класична ситуація з оновленнями. Postmortem Report.

Умови:

Є віртуальна машина з FreeBSD під керуванням Proxmox VE.

Є застосунок 'pleroma' котрий працює на базі erlang

Причини:

Для підтримання інфраструктури операційна система оновлюється і пакунки підтримуються в актуальному стані.
Застосунок працює, в пам'яті, все нормально. Користувачі заносять нові дані...

Дії:

Snapshot VM with RAM state - 'before_upgrade'.
Сервісне оновлення 'pkg upgrade'

Oct 1 08:51:24 pleroma pkg[25416]: erlang upgraded: 21.3.8.24_1,4 -> 25.3.2.12_1,4
Oct 1 08:52:37 pleroma pkg[25416]: elixir upgraded: 1.11.3 -> 1.16.3 

Застосунок працює.

Вночі - сервісний перезапуск системи. Попередньо зроблено знімок віртуальної машини зі станом: Snapshot VM with RAM state - 'before_reboot'.

Проблеми:

І ось після перезапуску системи - вітаннячка: pleroma  -  не запускається вже під 'erlang -25'.

Error:

==> prometheus_ex
Compiling 19 files (.ex)

== Compilation error in file lib/prometheus/buckets.ex ==
** (UndefinedFunctionError) function Kernel.Utils.defdelegate/2 is undefined or private. Did you mean:

      * defdelegate_all/3
      * defdelegate_each/2

    (elixir 1.16.3) Kernel.Utils.defdelegate({:new, [line: 18, column: 12], [{:arg, [line: 18, column: 16], nil}]}, [])
    lib/prometheus/buckets.ex:18: (module)
could not compile dependency :prometheus_ex, "mix compile" failed. Errors may have been logged above. You can recompile this dependency with "mix deps.compile prometheus_ex --force", update it with "mix deps.update prometheus_ex" or clean it with "mix deps.clean prometheus_ex" 

Ігри з "prometheus_ex" - не допомагають. Оновити 'pleroma' наразі не можливо, додаткові налаштування краще не чіпати зараз. 

Proxmox VE. Disconnect netwok interface.

Рішення:

  1. Відновити "erlang-21", але є, але pkg не присутній вже в репозиторії версії "FreeBSD 13.4". В архівах швидко не знайшов пакунків. З ports знайшов архівні знімки, але з них не компілюється успішно. Відкладено.
  2. Відновлюю Snapshot VM with RAM state - 'before_reboot'. Допомагає. Система знову працює. Але працює поки не перезавантажити. Через те, що вона тільки в пам'яті з запущеним erlang-21/elixir-1.11.. Відновитися до "before_upgrade" не можу, з'явилася нова інформація.
  3. Відновлю Snapshot VM with RAM state - 'before_upgrade' у якості нової віртуальної машини 201. Через:
    qm disk-detach 201 scsi0
    zfs send storage/vm101-disk-0@before_upgrade | zfs receive -f storage/vm201-disk-0
    qm set 201 --scsi0  storage:vm-201-disk-0
  4. Disconnect netwok interface віртуальної машини 201. Запуск віртуальної машини 201: qm start 201.
  5. В консолі віртуальної машини 201 змінюю налаштування тимчасової IP адреси, щоб не було дублікатів. Connect netwok interface. Піддуюся SSH консоллю. Тут є ще пакунки: elixir-1.11.3 erlang-21.3.8.24_1,4 erlang-man-21.3_2.
  6. Створення резервних пакунків erlang-21 та elixir-1.11 з робочої системи:
    $ mkdir backup_pkg
    $ pkg info -r erlang
    erlang-21.3.8.24_1,4:
            elixir-1.11.3
    $ pkg create -o backup_pkg erlang 
    $ pkg create -o backup_pkg elixir
    $ pkg create -o backup_pkg erlang-man
    $ ls -lh backup_pkg/
    total 40576
    -rw-r--r--  1 root  wheel   5.1M Oct  2 15:58 elixir-1.11.3.pkg
    -rw-r--r--  1 root  wheel    33M Oct  2 15:58 erlang-21.3.8.24_1,4.pkg
    -rw-r--r--  1 root  wheel   1.0M Oct  2 15:58 erlang-man-21.3_2.pkg
    
  7. Перенесення файлів 'backup_pkg/*.pkg' на робочу віртуальну машину 101 через 'nfs' або через 'scp'.
  8. В консолі віртуальної машини 101 видаляю версії "erlang-25.3.2.12_1,4", "elixir-1.16.3", та встановлюю щойно завантаженні.
    $ pkg install erlang-21.3.8.24_1,4.pkg erlang-man-21.3_2.pkg elixir-1.11.3.pkg 
    
  9. Перезапуск застосунку і перевірка роботи, все працює.
  10. Блокування пакунків від майбутнього оновлення до розв'язування питання з оновленням самого застосунку.
    $ pkg lock erlang-21.3.8.24_1,4.pkg erlang-man-21.3_2.pkg elixir-1.11.3.pkg 

Висновок. 

На production це робити - гріх 😀
Рознести дані та застосунок за різним мікросервісам: Postgress database VM. NFS сервер для зображень.
Знімки стану віртуальних машин перед будь-якими важливим діями, має бути правило. Дяка ZFS що робить це дуже швидко.

2024-09-25

2024-09-21

Note. Restore the old physical server by moving it to a virtual machine on the Proxmox VE. Creating an iSCSI disk and mounting it at boot. FreeBSD 9.0.

Примітка. Відновлення старого фізичного сервера, перемістивши його на віртуальну машину на Proxmox VE. Створення iSCSI диску та його монтування при завантажені операційної системи. FreeBSD 9.0.

Історія

Основне правило адміністратора, працює не чіпай. Призводить то того що рано чи пізно це вилазить боком. На кшталт не можеш нічого оновити та встановити.

Тому мені історично діставався цей сервер котрий треба перемістити до віртуального середовища поки "/raid1" масив ще працює після нового його збою, але варто зауважити міцний горішок.

Є декілька способів як перемістити систему з фізичного до віртуального. Але я не хотів переносити усі накопиченні проблеми, і вирішив перенести все окрім ядра та базової системи використовуючи    rsync.

До віртуальної машини

Сервер ще живий, операційна система  FreeBSD 9.0. Тому я створив з архівного ISO чисту віртуальну машину.

FreeBSD 9.0 (amd64): Default (i440fx), CPU (x86-64-v2-AES),  SCSI Controler LSI 53C895A, SCSI disk writeback cache, Ethernet Intel E1000E.  

Ось тільки так операційна система завантажилася.

Два мережевих інтерфейси для того, щоб основний інтерфейс вести в офлайн (link_down=1), а інший використати для підключення через SSH (ecdsa-sha2-nistp256) та підключення iSCSI диска. 

Адаптуємо віртуальну машину

Bridge - vmbr0 має в налаштуваннях MTU 9000.  Тому й у віртуальній машині використано для мережевого адаптера MTU 9000 для ефективності iSCSI через те, що фізична мережа у гіпервізора Proxmox VE  - 10 Гб/c і це дало приріст швидкості у два рази.

Додатково вимкнув перевірку контрольних сум мережевим адаптером у віртуальному середовищі:

ifconfig_em1_ipv6="inet6 XXXX:YYYY::101/64 mtu 9000 -txcsum -rxcsum -lro -tso"

Операційна система при завантажені перевіряла пам'ять і це робило певну затримку відключив це

boot/loader.conf : hw.memtest.tests=0

iSCSI

Для можливості приміщення віртуальної машини по кластеру Proxmox, прийнято рішення не створювати локальний диск розміром "1 TB" і робити його періодичну ZFS реплікацію на інші ноди кластеру, а створити мережевий iSCSI диск на NAS сервері (TrueNAS Scale) і змонтувати його у віртуальному середовищі.

TrueNAS Scale - iSCSI

Конфігурація iSCSI в VM

Для підключення  iSCSI диска, завантажую модуль ядра iscsi_initiator_load. Додаткових програм я вже поставити не можу,  тому маю те що маю.

Перевірка що завантажується модуль:

kldload iscsi_initiator_load
Автоматичне завантаження:
boot/loader.conf : iscsi_initiator_load=YES

Налаштування iSCSI ініціатора:

/etc/iscsi.conf:

raid1old50 {
    TargetAddress = nas-server.local
    TargetName = iqn.2005-10.org.freenas.ctl:raid1old50
}

Монтування при завантаженні:

Результат монтування:

$ cat /etc/fstab
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/da0p2      /               ufs     rw      1       1
/dev/da0p3      none            swap    sw      0       0
/dev/gpt/raid1 /raid1    ufs rw,noauto,noatime   0 0

$ mount
/dev/da0p2 on / (ufs, local, journaled soft-updates)
devfs on /dev (devfs, local, multilabel)
/dev/gpt/raid1 on /raid1 (ufs, local, noatime, journaled soft-updates)

2024-09-09

FreeBSD 14. Mail server POSTFIX and mariadb-client instead of mysql-client

Маю операційну систему FreeBSD 14.1-RELEASE у віртуальному середовищі Proxmox VE. 

Щойно оновив поштовий сервер з FreeBSD 13.1-RELEASE, і з'ясувалося що я не можу тепер встановити POSTFIX та mariadb-client одночасно, як це було раніше. Тому це нотатка мені як я  розв'язав цю проблему, щоб не наступати на ті самі граблі двічі.

Коли встановлено у Вас mariadb-server та mariadb-client на одному сервері, то при встановленні поштового сервера postfix як пакунок через pkg install postfix-mysql, або з портів з опцією MySQL.

postfix freebsd port, mysql option

 Вам буде пропоновано видалити mariadb-server та mariadb-client і встановити mysql-client.

2024-08-08

Note. Resize UFS Disk

OS: FreeBSD.
Disk: GPT, UFS. 

Proxmox increase live disk of VM.

gpart commit vtbd1
gpart show vtbd1
gpart resize -i 1 vtbd1
gpart show vtbd1
df -h
growfs /dev/gpt/cloud-data
df -h

2024-07-24

Codefinity. Mastered all the "Foundations of Machine Learning" specialization courses.

The track provides an introduction to the essential concepts and techniques in the field of machine learning. 

This comprehensive learning journey covers various crucial topics, including the utilization of scikit-learn library for machine learning initiation, the application of Linear Regression for predictive modeling, exploration of Classification methods for categorizing data, and the study of Clustering algorithms to discover inherent patterns within datasets. 

By engaging with this track, learners will acquire a solid understanding of fundamental machine learning principles, enabling them to build predictive and analytical models across diverse domains.

8 courses

Syllabus

Codefinity. Project - Logistic Regression Mastering

Project Logistic Regression Mastering to track Foundations of Machine Learning.

In this project, we are going to understand the career tracks of Data Scientists.

Author: Edoardo Cantagallo

Logistic Regression Mastering

2024-07-23

Codefinity. Course Ensemble Learning

Ensemble Learning is an advanced machine learning technique that combines multiple models to improve overall predictive performance and decision-making when solving real-life tasks. 

Author: Ruslan Shudra

Let's summarize and highlight the main information covered in the course.

Ensemble learning in machine learning is a technique that combines the predictions of multiple individual models (learners) to produce a more robust and accurate prediction or classification. It leverages the principle that by aggregating the opinions of multiple models, you can often achieve better results than relying on a single model.
There are three commonly used techniques for creating ensembles: bagging, boosting, and stacking.

Ensemble Learning

 

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready