Mám fyzický svazek na oddílu, který se táhne přes celý disk, řekněme /dev/sda1 pomocí 100% /dev/sda. Nyní jej musím zmenšit, aby vytvořil /dev/sda2. Logický svazek ve skutečnosti využívá ~50 % PV, takže teoreticky je k dispozici spousta místa, ale vše je alokováno v rámci jednoho PV. Existuje bezpečný způsob, jak zmenšit fyzický svazek (a základní diskový oddíl), aby se vytvořilo místo navíc pro druhý oddíl? Bohužel moje konfigurace vylučuje možnost dočasně přesunout fyzický svazek na jiné zařízení.
Samozřejmě vím, že to mohu udělat na úrovni souborů (jako je záloha obsahu, přerozdělení disku a opětovné vytvoření konfigurace LVM), ale raději bych tuto práci provedl bez nutnosti konfigurovat LV od začátku.
Předem děkuji.
Přijatá odpověď:
Pokud potřebujete pouze jiný samostatný souborový systém, nemusíte vytvářet nový oddíl:můžete vytvořit další logický svazek LVM v rámci stávající skupiny svazků pomocí nepřiděleného místa v PV. Pokud ale konkrétně potřebujete nový oddíl , pak musíte udělat, jak jste původně plánovali.
GParted je nástroj GUI, který za vás může provést celou operaci změny velikosti PV + oddílu. S největší pravděpodobností jej najdete ve sbírce balíčků vaší distribuce.
Ale pokud jej z nějakého důvodu nemůžete nebo nechcete použít, čtěte dále...
Zmenšení fyzického svazku LVM, který má v sobě nepřidělené místo, je docela jednoduché. Chcete-li například snížit velikost /dev/sda1 na 40 GiB:
# pvresize --setphysicalvolumesize 40G /dev/sda1
Tento příkaz je bezpečný, protože odmítne provést cokoli, pokud část PV, kterou by odřízl, obsahuje přidělené oblasti.
Ale to je jen první krok. Druhým krokem bude zmenšení velikosti samotného oddílu.
Pro jistotu se doporučuje zpočátku zmenšit PV o něco více, než plánujete skutečně zmenšit oddíl, takže po zmenšení oddílu můžete explicitně rozšířit PV tak, aby pokryl celou velikost oddílu. Pokud se operace rozšíření nezdaří, budete okamžitě vědět, že se něco pokazilo při změně velikosti oddílu, a nezanecháte skryté chyby, které by vás nebo někoho jiného v budoucnu uvěznily.
Oddíl můžete zmenšit pomocí obyčejného linuxového fdisk
příkaz, ale musíte mít na paměti několik věcí:
- Při použití
fdisk
Chcete-li změnit velikost oddílu, nastavte jej tak, aby zobrazoval všechny velikosti oddílů a počáteční umístění v sektorech za prvé. Během historie Linuxufdisk
, jeho chování se zde liší:moderní verze to dělají ve výchozím nastavení, starší verze mohou potřebovat-u
nebo-u=sectors
možnost to udělat. - Při změně velikosti existujícího oddílu nemůžete přesunout počáteční bod oddílu. (Pokud přesunete počáteční bod, nebude to již jednoduchá operace změny velikosti, ale složitější operace přesunutí oddílu.)
Při použití fdisk
, veškeré změny se zapisují na disk pouze při použití w
příkaz. Navrhoval bych tedy postupovat takto:
- použijte
sfdisk -d /dev/sda > /safe/location/partition_table_backup.dump
k zálohování stávající tabulky oddílů. - spusťte
fdisk /dev/sda
v interaktivním režimu - použijte
p
k zobrazení aktuální tabulky oddílů a ověření, že hodnoty „start“ a „end“ jsou zobrazeny jako sektory. Poznamenejte si „počáteční“ hodnotu. - použijte
d
příkaz k odstranění aktuální položky oddílu prosda1
. - použijte
n
příkaz k opětovnému vytvoření položky primárního oddílu 1 prosda1
v požadované velikosti, přičemž dávejte pozor, abyste specifikovali umístění prvního sektoru přesně tak, jak bylo (tj. stejné číslo, jaké bylo zobrazeno v „počáteční“ hodnotěp
příkaz). - použijte
t
příkaz k nastavení typu oddílu 1 na „Linux LVM“. - překontrolujte svou práci
- použijte
w
příkaz k zápisu aktualizované tabulky oddílů a ukončenífdisk
.
Věnujte pozornost zprávě zobrazené fdisk
na konci. Pokud to říká „Jádro stále používá starou tabulku“, něco blokuje online aktualizaci tabulky oddílů. Můžete zkusit partprobe /dev/sda
říct jádru, aby znovu přečetlo tabulku oddílů (s použitím novějšího rozhraní než některé starší verze fdisk
použít, takže by to mohlo pomoci a určitě neuškodí) a pak se podívejte na cat /proc/partitions
abyste zjistili, zda je oddíl nyní jádrem rozpoznán v očekávané velikosti.
Pokud je změna velikosti oddílu úspěšná, můžete nyní spustit pvresize /dev/sda1
. Pokud jste se řídili mými radami a původně jste změnili velikost PV o něco menší, než je požadovaná nová velikost oddílu, mělo by to nyní úspěšně o něco rozšířit PV, aby automaticky plně pokrylo změněnou velikost. Pokud tento příkaz hlásí chybu, pravděpodobně jste udělali chybu při zadávání nové velikosti a měli byste použít sfdisk /dev/sda < /safe/location/partition_table_backup.dump
obnovte tabulku oddílů do původního stavu a poté to zkuste znovu.
(Na velmi starých systémech možná budete muset deaktivovat VG před spuštěním partprobe
nebo dokonce restartujte, aby systém mohl znovu přečíst aktualizovanou tabulku oddílů.)
Jakmile je operace změny velikosti dokončena, můžete nyní použít fdisk
znovu pro vytvoření druhého oddílu, který potřebujete. Ano, můžete to také udělat společně při změně velikosti oddílu, ale dělat pouze jednu věc najednou je bezpečnější a zajistí, že v případě potřeby budete moci snadno vrátit změny.