Začnu stručně: máme Discourse! Najdete ho na
https://discourse.vpsfree.cz.
V roce 2009 jsme původně začínali s fórem, které mělo sloužit jako
poradna a místo pro diskuzi obecně, ale v podstatě nikdo ho nepoužíval.
Možná tam byly tři posty, které nebyly ode mě. Pak jsme přešli na
mailing listy, které mají tu výhodu, že příchozího mailu si všimne
mnohem víc lidí. To zafungovalo, ale zhruba, když jsme míjeli velikost
1000 členů, se přesně tenhle faktor otočil zas proti nám. Až příliš
často uvažujeme nad tím, zda se svojí prkotinou spamovat tolik lidí.
Za sebe musím říct, že mám pokaždé obrovskou radost, když se na
community-listu povede něco vyřešit. Chtěl bych toho vidět víc, mnohem
víc, nemyslím, že by nebylo, co řešit, o čem se bavit, jen ten formát
mailing listu se nám už asi trochu přežil.
Discourse vypadá, že by pro nás mohl spojit to nejlepší z obou světů –
je možné ho použít mailem, ale organizací má spíš jako fórum.
Když se nám povede, že nám to na Discourse začne víc žít, můžeme taky
zvážit přechod z IRC na Discourse Chat. V IRC místnosti teď už taky visí
už jen okolo 50 lidí ze špičkových cca 100, v souladu s tím, jak
relevance IRC upadá.
Mimo jiné, na #vpsfree teď visí bot vpsfbr0, je to instance
matterbridge, přes kterou by nakonec mělo jít přemostit aspoň základním
způsobem všechny podstatnější IM, zatím je nastavený jako most s
Matrixem - https://view.matrix.org/room/!vOrcaItWgYDyYypqCI:matrix.org/
Do vpsFree Discourse se přihlašuje buďto přihlašovacími údaji vpsAdminu
(pro členy) nebo se dá vytvořit běžný účet (pro nečleny). Aby byla
trochu přidaná motivace se tam přijít podívat, napadlo nás, že bychom
mohli tuhle příležitost využít k nabídnutí všeho toho hardware, který je
už rok vypnutý a nebudeme ho určitě potřebovat.
Co bude dál s mailing listy:
news-list ještě chvíli podržíme v podobě, jak fungoval, ale po nějaké
době (půl roku až rok) se přesune na kombinaci Discourse (kde se dá o
těch věcech potom diskutovat) a blog (jako nástěnka pro věřejnost).
outage-list – vpsAdmin už dlouho umí reportovat výpadky dotčeným členům
rovnou a celá historie je dostupná bez přihlášení – tam tedy můžeme
přestat posílat rovnou
community-list – tam na konci roku vypneme možnost posílat do něj nové
příspěvky s automatickou odpovědí, že už dál diskutujeme jen na
Discourse
No a tím se rozloučíme s mailing listy :).
Díky všem, kdo jste na nich byli aktivní, přijměte prosím pozvání na
novou platformu – pojďme to zkusit pojmout jako novou příležitost k
výměně zkušeností. Doufám, že snad s menším třením oproti mailing
listům.
/snajpa
Ahoj,
(English below)
TL;DR ve VPS lze nově používat distribuci Guix.
GNU Guix System [1] je linuxová distribuce založená na správci balíčků
Guix. Funguje to velice podobně jako NixOS [2] a Nix, až na to, že Guix
a celý systém se konfiguruje pomocí Guile Scheme. Ve Scheme jsou opravdu
veškeré součásti systému, včetně init systému Shepherd [3].
Na rozdíl od klasických distribucí se Guix a NixOS konfigurují
deklarativně: v konfiguračním souboru nadefinujeme kompletní podobu
výsledného systému, tj. jaké má obsahovat uživatele/skupiny, služby a
jejich nastavení. Ať už se jedná o aktualizaci nebo rollback, mezi
různými verzemi systému se lze snadno přepínat buď za běhu, nebo při
bootu v zavaděči, resp. u nás ve Start Menu [4]. Guix oproti NixOS
obsahuje jen Free Software.
Protože ve vpsFree používáme NixOS [5] skoro na všechno, zajímalo mě
taky, jak je na tom Guix. Bohužel Scheme pořádně neznám a ani mě to moc
neláká -- je tam příliš mnoho závorek :) Před rokem se jeden člen snažil
[6] šablonu pro Guix vytvořit, ale sám jsem neviděl cestu, jak na to. Až
před pár dny jsem narazil na blog [7], který obsahoval potřebné
informace. Hlavní problém byl, že ve VPS nemáme zavaděč a taky se
nepřipojuje kořenový souborový systém -- je připojen už před spuštěním
/sbin/init ve VPS. V konfiguraci však zavaděč i kořenový systém být
musí, jinak se systém nesestaví.
Nakonec to není žádná věda: jako zařízení pro zavaděč stačí /dev/null
[8] a volba --no-bootloader, s kořenovým systémem je to podobné [9].
Pokud by někdo měl zájem to vyzkoušet, VPS s Guixem si můžete vytvořit
na node1.stg (staging). Jinde zatím nebude fungovat integrace pro
nastavení sítě. Více informací viz KB:
https://kb.vpsfree.org/manuals/distributions/guix
Jsou tam ještě nějaké nedostatky, které už nejspíš řešit nebudu, aspoň
ne teď. Základ včetně integrace do vpsAdminu a Start Menu je zdá se
funkční. Sami pro Guix využití nemáme, dělal jsem to spíš ze
zajímavosti. Jestli Guix někdo použijete, budeme rádi za zpětnou vazbu.
ENGLISH:
TL;DR VPS can now use Guix distribution.
GNU Guix System [1] is a linux distribution based on Guix package
manager. It is very similar to NixOS [2] and Nix, except that Guix is
configured using Guile Scheme. Indeed, most of the system components
including the init system Shepherd [3] are written in Scheme.
Unlike other well-known linux distributions, Guix and NixOS are
configured declaratively: users/groups and all services with their
settings that should a part of the target system are defined in a config
file. It is possible to switch between different system configurations,
be it an upgrade or downgrade. System versions can be switched at
runtime or from the bootloader -- in our case, from the Start Menu [10].
Unlike NixOS, Guix contains only Free Software, as it is a part of the
GNU project.
At vpsFree.cz, we use NixOS [5] almost everywhere. I was thus interested
to see the state Guix is in. Unfortunately, I'm not familiar with
Scheme, there are far too many parentheses! A year ago, one of our
members tried to create [6] template for Guix, but we haven't been able
to make it work. A few days ago, I've discovered a blogpost [7] that
helped me understand the missing pieces. Our main issue was that inside
the VPS, there's no bootloader and no need to mount the root file
system, as it is mounted even before its /sbin/init is started. Guix
configuration however requires them to be configured.
In the end it's pretty straightforward. /dev/null is used [8] as a
device for the bootloader together with option --no-bootloader. Mounting
of the root file system can be bypassed in a similar way [9].
If someone would like to give it a go, you can create VPS with Guix on
node1.stg (staging). For more information, see KB:
https://kb.vpsfree.org/manuals/distributions/guix
There are several known issues, but the base system appears to be
operational. Network configuration is integrated with vpsAdmin and the
Start Menu can be used to run older system generations. As we do not
have any actual use for Guix ourselves, I'm going to leave it as it is
for now. We'll be glad for any feedback if you'll run anything on Guix.
[1] https://guix.gnu.org
[2] https://nixos.org
[3] https://kb.vpsfree.cz/navody/vps/start_menu
[4] https://www.gnu.org/software/shepherd/
[5] https://github.com/vpsfreecz/vpsfree-cz-configuration
[6] https://github.com/vpsfreecz/vpsadminos-image-build-scripts/pull/47
[7] https://www.thedroneely.com/posts/guix-in-a-linux-container/
[8]
https://github.com/vpsfreecz/vpsadminos/blob/14ac41e78566cdddc28fa40e2d7975…
[9]
https://github.com/vpsfreecz/vpsadminos/blob/14ac41e78566cdddc28fa40e2d7975…
[10] https://kb.vpsfree.org/manuals/vps/start_menu
Jakub
Ahoj,
(English below)
Pravidelně se stává, že někomu ve VPS dojde místo na disku. vpsAdmin
sice posílá upozornění od 90 % zaplnění, ani to ale ve všech případech
nepomůže tomu předejít. S plným diskem přestávají fungovat vaše
aplikace, které s diskem pracují, a také to může znemožnit login do VPS
a uvolnění místa.
Každou jednotlivou VPS řešíme i my jako administrátoři vpsFree.cz,
protože ZFS s prací nad plnými datasety (disky VPS) aspoň historicky
mívalo problémy. Souvisí to s tím, že ZFS kvůli dynamické velikosti
bloku a kompresi dopředu neví, kolik místa budou data na disku zabírat.
Aby nebyla překročena nastavená kvóta datasetu, dochází k předčasnému
uzavírání txgs -- transakční skupiny, v rámci kterých se data v
pravidelných intervalech zapisují na disk. Vyšší frekvence txgs potom
zpomaluje chod všech VPS.
Další faktor je, že jsme v těchto situacích naráželi na chyby souběhu,
které mohou vést k zastavení IO na nodu a nutnosti resetu. Naše ZFS je
upravené tak, aby se txgs neuzavíraly předčasně a naopak umožňujeme v
jedné txg nastavenou kvótu překročit. I tak ale nechceme riskovat
výpadek a při zaplnění datasetu VPS nám monitoring posílá SMS. Když se
takových VPS najde víc a členové nereagují, je to pro nás dost
vyčerpávající.
vpsAdmin proto nyní bude automaticky zvětšovat datasety ve VPS, kde
dochází místo. Ke zvětšení dojde, když bude zbývat méně než 512 MiB,
popř. méně než 1 % celkové kapacity. Disk navyšujeme o 20 GiB nebo o 10
% kapacity podle toho, co je větší. K rozšíření může dojít až 3x a k
řešení máte 30 dní od prvního rozšíření. Po uplynutí této doby se bude
VPS vypínat, dokud se využití datasetu nevrátí do mezí původní
velikosti, nebo se nedomluvíme na trvalém rozšíření kapacity.
Ke zmenšení na původní velikost dojde automaticky, když bude k dispozici
alespoň 1 GiB a 5 % volného místa. Velikost můžete taky upravit kdykoli
ve vpsAdminu v detailu VPS.
ENGLISH:
It happens fairy regularly that VPS run out of disk space. vpsAdmin is
sending notifications when disk usage is 90 % or more, but that still
won't prevent it. When the disk is full, your applications are likely to
stop working and it may not be possible to login to the VPS and free
some space.
We as vpsFree.cz administrators are also involved with every VPS which
completely runs out of disk space. It is because ZFS at least
historically wasn't so good at operating on datasets (VPS disks) nearing
or at their quota. Due to dynamic block size and compression, ZFS does
not know how much space on disk the data will actually take. In order to
not exceed the dataset's quota, it tends to prematurely close txgs --
transaction groups in which data is written to disk in regular
intervals. Higher txgs frequency is then negatively impacting IO
performance of all VPS.
Another factor is that on multiple occasions, we've encountered rare
race conditions which led to ZFS deadlock, i.e. no writes were being
made at all and we've had to reset the node. While our ZFS is patched to
allow datasets exceeding their quota within one txg, we don't want to
risk an unnecessary outage because of this, so our monitoring system is
sending us SMS. When it happens often and members are not responding to
us, it's rather tiring for us.
From now on, vpsAdmin will automatically expand VPS datasets which are
nearing their quota. Datasets are expanded when there's less than 512
MiB or 1 % of free space. We add either 20 GiB or 10 % of original size,
whichever is higher. Datasets can be expanded three times and you'll
have 30 days since the first expansion to resolve the issue. After that,
the VPS will be stopped until the used space will fit within the
original quota or the dataset is expanded permanently.
Expanded datasets are shrunk back when there is at least 1 GiB and 5 %
of free space with respect to the original size. You can also change the
dataset size in VPS details in vpsAdmin at any time.
Jakub
Ahoj,
(English below)
# Otisky SSH klíčů
V detailu VPS ve vpsAdminu nově najdete otisky SSH host klíčů
(fingerprints). Při prvním přihlášení přes SSH tak můžete zkontrolovat
identitu serveru. Otisky klíčů se vyčítají ze souborů
/etc/ssh/ssh_host_*.pub ve VPS. Klíče se čtou po každém startu VPS a pak
jednou za hodinu.
# Úpravy VPS adminy vpsFree
Šablony distribucí, ze kterých se vytváří nové VPS, mohou mít nastavení
specifické pro naše prostředí. Může se stát, že bug nebo nová vlastnost
aplikací či našeho prostředí bude vyžadovat změnu konfigurace systému.
Týká se to prakticky jen základního systému, tj. nastavení, které jsou
součástí šablon. Ve vpsAdminu máte možnost si nastavit, jestli o takové
úpravy máte zájem. Ve výchozím stavu je to povoleno. Pokud bychom ve VPS
něco měnili, budeme o tom informovat emailem.
Pro představu, nedávno jsme z kernelu odstranili cglimit cgroupu -- náš
vlastní controller, který se ukázal jako zbytečný. Distribuce se systemd
si s tím poradily samy, ale třeba Alpine/Devuan/Void mají seznam cgroups
zapsaný v init skriptu, takže jsme jej v existujících VPS museli upravit.
# cgroups v2
Tento rok bychom rádi započali přechod na cgroups v2. cgroups v Linuxu
se používají na účtování a limitaci skupin procesů. V našem prostředí je
to jeden ze základních prostředků pro izolaci VPS, používáme to primárně
na nastavení limitu paměti a času CPU. Na cgroups samozřejmě staví
všechny kontejnerové řešení jako docker, apod.
V současné době používáme cgroups v1 v hybridní hierarchii a právě
protože VPS jsou kontejnery, verze cgroups je daná hostitelem. systemd v
roce 2024 nejspíše přestane cgroups v1 podporovat, takže na to chceme
být připraveni. Aktuální distribuce už v2 podporují, ty starší jako
CentOS 7 budeme nadále provozovat na nodech s v1.
Ve vpsAdminu lze u VPS nastavit, jakou verzi cgroups VPS vyžaduje. Ve
výchozím stavu se to řídí šablonou distribuce. Pokud mají aplikace ve
VPS speciální požadavky, můžete si vynutit cgroups v1 a zabránit tak
budoucí migraci na v2. Naším cílem bude přesunout všechno co jde na
cgroups v2. Více info a seznam distribucí podporujících cgroups v2
najdete v KB:
https://kb.vpsfree.cz/navody/vps/cgroups
Žádnou akci z vaší strany to nevyžaduje, o případném přesunu VPS na
cgroups v2 budeme informovat individuálně v následujících měsících.
ENGLISH:
# SSH host key fingerprints
You can now see SSH host key fingerprints in VPS details in vpsAdmin.
You can check that the fingerprints match on your first SSH login,
making sure that you're connecting to your server. Key fingerprints are
read from /etc/ssh/ssh_host_*.pub files found inside the VPS. The files
are read on every VPS start and then once an hour.
# VPS modifications by vpsFree admins
New VPS are created from distribution templates and those can have
settings specific for our environment. It can happen that a bug or a new
feature in applications or our platform will require or benefit from
configuration change. You can configure whether you wish to have your
VPS updated by vpsFree admins should the need arise in VPS details in
vpsAdmin. It is enabled by default. We modify only the base system
configuration files and we will notify you by email when any changes are
made.
For example, we have recently removed the cglimit cgroup controller from
our kernel. It was our own creation and we've discovered it was only a
source of bugs. VPS using systemd handled this removal without any
problem, but distributions such as Alpine/Devuan/Void have the list of
cgroup controllers hardcoded in their init script. We've thus updated
the init script to not emit warning about cglimit mount failure on boot.
# cgroups v2
This year, we would like to begin transition to cgroups v2. cgroups in
Linux are used to account and limit groups of processes. On vpsAdminOS,
it is a fundamental component used to create a VPS. We use it primarily
to limit memory and CPU usage. cgroups are of course used by all other
container systems, such as docker, etc.
At this time, we're using cgroups v1 in a hybrid layout. Since VPS are
containers, the cgroup version is determined by the host. As systemd
will possibly remove support for cgroups v1 in 2024, we'd like to be
ready. Current distributions already support cgroups v2, the older ones
like CentOS 7 will be kept on nodes with cgroups v1.
Our goal will be to move as many VPS as possible to cgroups v2 nodes. By
default, we look at the distribution used inside the VPS to see if it
supports cgroups v2. If you wish, you can configure your cgroups version
preference in VPS details in vpsAdmin and pin it to cgroups v1 to
prevent future migration. More information about cgroups v2 and a list
of supported distributions can be found in KB:
https://kb.vpsfree.org/manuals/vps/cgroups
No action from you is needed at this time. We'll keep you updated about
the upcoming migration in the months to follow.
Jakub