linux-system-roles.storage
Rola Przechowywania w Linuxie
Ta rola pozwala użytkownikom konfigurować lokalne przechowywanie z minimalnym wkładem.
Na chwilę obecną rola wspiera zarządzanie systemami plików i wpisami montowania na
- dyskach
- grupach woluminów LVM
- pulach Stratis
Wsparcie dla szyfrowania (używając LUKS) i RAID (używając MD) również jest dostępne. Wsparcie dla zarządzania już istniejącymi urządzeniami jest ograniczone, ale nowe woluminy LVM i systemy plików Stratis mogą być dodawane do istniejących ustawień i punktów montowania, a niektóre inne funkcje mogą być dodawane do (lub usuwane z) istniejących urządzeń.
Wymagania
Zobacz poniżej
Wymagania dotyczące kolekcji
Rola wymaga zewnętrznych kolekcji. Użyj następującego polecenia, aby je zainstalować:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Zmienne roli
UWAGA: Zaczynając od wersji 1.3.0, nieokreślone parametry są interpretowane
inaczej dla istniejących i nieistniejących pul/voluminów. Dla nowych/nieistniejących
pól i woluminów, wszelkie pominięte parametry będą używać wartości domyślnych, jak
opisano w defaults/main.yml
. Dla istniejących pól i woluminów, pominięte
parametry dziedziczą ustawienie, które już ma dane pole lub wolumin.
Oznacza to, że aby zmienić/nadpisać domyślne wartości roli w istniejącym polu lub woluminie,
musisz wyraźnie określić nowe wartości/ustawienia w zmiennych roli.
storage_pools
Zmienna storage_pools
to lista pul do zarządzania. Każda pula zawiera
zagnieżdżoną listę słowników volume
, jak opisano poniżej, a także następujące
klucze:
name
- Określa nazwę puli do zarządzania/tworzenia jako string. (Jednym przykładem puli jest grupa woluminów LVM.)type
- Określa typ puli do zarządzania. Ważne wartości dlatype
:lvm
,stratis
.state
- Ważne wartości topresent
(domyślne działanie) lubabsent
. Puli oznaczone jakoabsent
zostaną usunięte przez rolę. Puli oznaczone jakopresent
będą tworzone (jeśli pula o określonej nazwie już nie istnieje) lub zachowane.grow_to_fill
- Gdy jest ustawione, Woluminy Fizyczne puli zostaną przeskalowane, aby odpowiadały rozmiarom swoich odpowiednich urządzeń. (np. po zwiększeniu rozmiaru dysku maszyny wirtualnej)Domyślnie:
false
UWAGA: Ten argument jest ważny tylko dla pul LVM.
shared
- Jeśli ustawione natrue
, rola tworzy lub zarządza grupą woluminów do współdzielenia. Wymaga skonfigurowanych i działających usług lvmlockd i dlm.Domyślnie:
false
OSTRZEŻENIE: Zmiana wartości
shared
w istniejącej puli to operacja destrukcyjna. Pula sama zostanie usunięta w ramach tego procesu. UWAGA: Ten argument jest ważny tylko dla pul LVM.disks
- Lista określająca zestaw dysków, które mają być używane jako zaplecze dla puli. Obsługiwane identyfikatory to: węzeł urządzenia (jak/dev/sda
lub/dev/mapper/mpathb
), nazwa bazowa węzła urządzenia (jaksda
lubmpathb
), symlink /dev/disk (jak/dev/disk/by-id/wwn-0x5000c5005bc37f3f
).Dla pul LVM można również użyć tego do dodawania i usuwania dysków do/z istniejącej puli. Dyski na liście, które nie są używane przez pulę, zostaną dodane do puli. Dyski, które są obecnie używane przez pulę, ale nie znajdują się na liście, zostaną usunięte z puli tylko, jeśli
storage_safe_mode
jest ustawione nafalse
.raid_level
- Gdy używane ztype: lvm
, zarządza grupą woluminów z arraym mdraid o danym poziomie na niej. Wprowadzonedisks
są w tym przypadku używane jako członkowie RAID. Przyjmowane wartości to:linear
,raid0
,raid1
,raid4
,raid5
,raid6
,raid10
.volumes
- Lista woluminów przynależących do bieżącej puli. Śledzi ten sam wzór co zmiennastorage_volumes
, opisana poniżej.encryption
- Określa, czy pula będzie szyfrowana przy użyciu LUKS. OSTRZEŻENIE: Zmienianie szyfrowania dla puli to operacja destrukcyjna, co oznacza, że pula zostanie usunięta jako część procesu dodawania/usuwania warstwy szyfrowania.encryption_password
- Ta stringa określa hasło lub frazę, która jest używana do odblokowania/otwierania wolumenu LUKS.encryption_key
- Ta stringa określa pełną ścieżkę do pliku klucza na zarządzanych nodach, używanego do odblokowania wolumenu LUKS. To jest odpowiedzialność użytkownika tej roli, aby bezpiecznie skopiować ten plik na zarządzane węzły lub w inny sposób upewnić się, że plik jest na zarządzanych węzłach.encryption_cipher
- Ta stringa określa nie-domyślny szyfr do użycia przez LUKS.encryption_key_size
- Ta liczba całkowita określa rozmiar klucza LUKS (w bajtach).encryption_luks_version
- Ta liczba całkowita określa wersję LUKS, która ma być używana.encryption_clevis_pin
- Dla pul Stratis metoda clevis, która powinna być użyta do szyfrowania utworzonej puli. Akceptowane wartości to:tang
itpm2
.encryption_tang_url
- Podczas tworzenia puli Stratis zaszyfrowanej za pomocą NBDE przy użyciu serwera tang, określa URL serwera.encryption_tang_thumbprint
- Podczas tworzenia puli Stratis zaszyfrowanej za pomocą NBDE przy użyciu serwera tang, określa odcisk palca serwera.
storage_volumes
Zmienna storage_volumes
to lista woluminów do zarządzania. Każdy wolumin ma następujące
zmienne:
name
- Określa nazwę woluminu.type
- Określa typ woluminu, na którym będzie znajdował się system plików. Ważne wartości dlatype
:lvm
,disk
,partition
lubraid
. Domyślnie jest ustalana zgodnie z systemem operacyjnym i wersją (obecnielvm
).UWAGA: Wsparcie dla zarządzania woluminami partycji jest obecnie bardzo ograniczone, rola pozwala na utworzenie tylko pojedynczej partycji obejmującej cały dysk.
state
- Ważne wartości topresent
(domyślne działanie) lubabsent
. Woluminy oznaczone jakoabsent
zostaną usunięte przez rolę. Woluminy oznaczone jakopresent
będą tworzone (jeśli wolumin o podanej nazwie nie istnieje) lub zachowane i możliwie zmienione, aby pasowały do innych wartości (na przykład, jeśli wolumin o podanej nazwie istnieje, ale nie ma wymaganego rozmiaru, zostanie zmieniony, jeśli to możliwe).disks
- Określa zestaw dysków, które mają być używane jako zaplecze dla systemu plików. To jest obecnie istotne tylko dla woluminów typudisk
, gdzie lista musi zawierać tylko jeden element.size
- Określa rozmiar systemu plików. Format jest przeznaczony do ludzkiego czytania, np.: "10g", "50 GiB". Rozmiar woluminów LVM może być określany jako procent rozmiaru puli/VG, np.: "50%" od wersji 1.4.2.Przy używaniu
compression
lubdeduplication
,size
można ustawić na więcej niż rzeczywista dostępna przestrzeń, np.: 3 razy rozmiar woluminu, na podstawie duplikacji i/lub kompresji przechowywanych danych.UWAGA: Żądany rozmiar woluminu może być zmniejszony w razie potrzeby, aby wolumin mógł zmieścić się w dostępnej przestrzeni puli, ale tylko wtedy, gdy wymagane zmniejszenie nie jest większe niż 2% żądanego rozmiaru woluminu.
fs_type
- Określa pożądany typ systemu plików do użycia, np.: "xfs", "ext4", "swap". Domyślnie określane jest zgodnie z systemem operacyjnym i wersją (obecniexfs
dla wszystkich wspieranych systemów). Użyj "unformatted", jeśli nie chcesz, aby system plików był obecny. OSTRZEŻENIE: Użycie "unformatted" typu systemu plików na istniejącym systemie plików to operacja destrukcyjna, która zniszczy wszystkie dane na woluminie.fs_label
- Łańcuch używany jako etykieta systemu plików.fs_create_options
- Określa niestandardowe argumenty domkfs
jako łańcuch.mount_point
- Określa katalog, w którym system plików będzie montowany.mount_options
- Określa niestandardowe opcje montażu jako łańcuch, np.: 'ro'.mount_user
- Określa pożądane właściciela katalogu montażowego.mount_group
- Określa pożądaną grupę katalogu montażowego.mount_mode
- Określa pożądane uprawnienia katalogu montażowego.raid_level
- Określa poziom RAID. RAID LVM można również tworzyć. "Regularny" wolumin RAID wymaga, aby typ byłraid
. RAID LVM potrzebuje, aby wolumin miał rodzica w postacistorage_pools
z typemlvm
,raid_disks
muszą być również określone. Przyjmowane wartości to:- dla woluminu RAID LVM:
raid0
,raid1
,raid4
,raid5
,raid6
,raid10
,striped
,mirror
- dla woluminu RAID:
linear
,raid0
,raid1
,raid4
,raid5
,raid6
,raid10
OSTRZEŻENIE: Zmiana
raid_level
dla woluminu to operacja destrukcyjna, co oznacza, że wszystkie dane na tym woluminie zostaną utracone w ramach procesu usunięcia starego i dodania nowego RAID. Zmiana kształtu RAID jest obecnie nieobsługiwana.- dla woluminu RAID LVM:
raid_device_count
- Gdy typ toraid
, określa liczbę aktywnych urządzeń RAID.raid_spare_count
- Gdy typ toraid
, określa liczbę zapasowych urządzeń RAID.raid_metadata_version
- Gdy typ toraid
, określa wersję metadanych RAID jako łańcuch, np.: '1.0'.raid_chunk_size
- Gdy typ toraid
, określa rozmiar kawałka RAID jako łańcuch, np.: '512 KiB'. Rozmiar kawałka musi być wielokrotnością 4 KiB.raid_stripe_size
- Gdy typ tolvm
, określa rozmiar paska RAID LVM jako łańcuch, np.: '512 KiB'.raid_disks
- Określa, które dyski powinny być używane dla woluminu RAID LVM.raid_level
musi być określony, a wolumin musi mieć rodzica w postacistorage_pools
z typemlvm
. Akceptuje podlistędisks
rodzicastorage_pools
. W przypadku wielu woluminów RAID LVM w tej samej puli, ten sam dysk może być używany w wieluraid_disks
.encryption
- Określa, czy wolumin będzie szyfrowany przy użyciu LUKS. OSTRZEŻENIE: Zmiana szyfrowania dla woluminu to operacja destrukcyjna, co oznacza, że wszystkie dane na tym woluminie zostaną usunięte jako część procesu dodawania/usuwania warstwy szyfrowania.encryption_password
- Ta stringa określa hasło lub frazę, która jest używana do odblokowania/otwierania wolumenu LUKS.encryption_key
- Ta stringa określa pełną ścieżkę do pliku klucza na zarządzanych nodach, używanego do odblokowania wolumenów LUKS. To jest odpowiedzialność użytkownika tej roli, aby bezpiecznie skopiować ten plik na zarządzane węzły, lub w inny sposób upewnić się, że plik jest na zarządzanych węzłach.encryption_cipher
- Ta stringa określa nie-domyślny szyfr do użycia przez LUKS.encryption_key_size
- Ta liczba całkowita określa rozmiar klucza LUKS (w bitach).encryption_luks_version
- Ta liczba całkowita określa wersję LUKS, która ma być używana.deduplication
- Określa, czy będzie używany Virtual Data Optimizer (VDO). Po ustawieniu, zduplikowane dane przechowywane na woluminie zostaną zduplikowane, co skutkuje większą pojemnością magazynu. Może być używane razem zcompression
ivdo_pool_size
. Wolumin musi być częścią puli LVMstorage_pool
. Ograniczenie to jedno VDOstorage_volume
nastorage_pool
. Podstawowy wolumin musi mieć co najmniej 9 GB (minimum to około 5 GiB).compression
- Określa, czy będzie używany Virtual Data Optimizer (VDO). Po ustawieniu, dane przechowywane na woluminie będą kompresowane, co skutkuje większą pojemnością magazynu. Wolumin musi być częścią puli LVMstorage_pool
. Może być używane razem zdeduplication
ivdo_pool_size
. Ograniczenie to jedno VDOstorage_volume
nastorage_pool
.vdo_pool_size
- Gdy używany jest Virtual Data Optimizer (VDO), to określa rzeczywisty rozmiar, który wolumin zajmie na urządzeniu. Wirtualny rozmiar woluminu VDO ustalany jest przez parametrsize
. Formatvdo_pool_size
jest przeznaczony do ludzkiego czytania, np.: "30g", "50GiB". Wartość domyślna równa się rozmiarowi woluminu.cached
- Określa, czy wolumin powinien być buforowany, czy nie. To obecnie jest wspierane tylko dla woluminów LVM, gdzie używane jest dm-cache.cache_size
- Rozmiar pamięci podręcznej. Formatcache_size
jest przeznaczony do ludzkiego czytania, np.: "30g", "50GiB".cache_mode
- Tryb dla pamięci podręcznej. Wspierane wartości towritethrough
(domyślne) iwriteback
.cache_devices
- Lista urządzeń, które będą używane jako pamięć podręczna. Powinny to być albo wolumeny fizyczne, albo drivery, na których te wolumeny fizyczne są alokowane. Zazwyczaj chcesz wybierać szybkie urządzenia, takie jak dyski SSD lub NVMe do pamięci podręcznej.thin
- Określa, czy wolumin powinien być thinly provisioned, czy nie. To jest wspierane tylko dla woluminów LVM.thin_pool_name
- Dla woluminówthin
, można użyć tego do określenia nazwy puli cieni LVM, która będzie używana dla woluminu. Jeśli pula o podanej nazwie już istnieje, wolumin zostanie dodany do tej puli. Jeśli nie istnieje, zostanie utworzona nowa pula o nazwiethin_pool_name
. Jeśli nie zostanie określona:- jeśli nie ma istniejących pul cieni, nowa pula cieni zostanie utworzona z automatycznie wygenerowaną nazwą,
- jeśli istnieje dokładnie jedna istniejąca pula cieni, wolumin cieni zostanie do niej dodany, a
- jeśli istnieje wiele pul cieni, zostanie zgłoszony wyjątek.
thin_pool_size
- Rozmiar dla puli cieni. Formatthin_pool_size
jest przeznaczony do ludzkiego czytania, np.: "30g", "50GiB".
storage_safe_mode
Gdy prawdziwe (domyślnie), wystąpi błąd zamiast automatycznego usunięcia istniejących urządzeń i/lub formatowania.
storage_udevadm_trigger
Gdy prawdziwe (domyślnie to false), rola użyje udevadm trigger, aby zmiany udev zaczęły działać natychmiast. Może to pomóc na niektórych platformach z "błędnym" udev.
Przykład Playbooka
- name: Zarządzaj magazynem
hosts: all
roles:
- name: linux-system-roles.storage
storage_pools:
- name: app
disks:
- sdb
- sdc
volumes:
- name: shared
size: "100 GiB"
mount_point: "/mnt/app/shared"
#fs_type: xfs
state: present
- name: users
size: "400g"
fs_type: ext4
mount_point: "/mnt/app/users"
storage_volumes:
- name: images
type: disk
disks: ["mpathc"]
mount_point: /opt/images
fs_label: images
rpm-ostree
Zobacz README-ostree.md
Licencja
MIT