pátek 12. ledna 2018

Synology NAS - výměna disku za větší bez ztráty dat (klonováním disku)

Došlo místo a tak jsem potřeboval vyměnit disk ve svém Synology za větší. Vzhledem k tomu, že na stávajícím disku bylo skoro 3.5 TB dat, řešil jsem jak to udělat efektivně - tj. s co nejmenším počtem kopírování dat.
Pozor: než nakoupíte disk(y), doporučuji ověřte si kompatibilitu na stránkách výrobce. Já to neudělal a řešil jsem (naštěstí jenom) problém s uchycením disku v rámečku a NASu. To vyřešila vrtačka a frézka. Ale zejména u starších zařízení se vám může stát, že NAS nebude umět velké disky.

Návod předpokládá, že máte jeden disk, který je součástí jedné diskové skupiny a na kterém je jeden svazek jako JBOD:
Disk -> Disková Skupina -> Svazek -> Sdílená složka

Postup funguje pokud je disk rozdělen v GPT. Pokud je menší než 1 TB, bude s největší pravděpodobností používat MBR, který neumí disky větší než 2 TB.

Pro úsporu času jsem zvolil postup s naklonováním menšího disku na větší. V tomto případě bude probíhat přesun dat jen jednou. Použil jsem distribuci CloneZilla na USB klíčence a starší desktop s nativním SATA2 řadičem. Dejte si pozor který disk je který, ať si nepřepíšete data!

Až bude disk na klonován (4 TB mi trvalo cca 8 hodin), můžete ho vložit do Synology místo starého. Pokud klonování proběhlo bez chyb, Synology by mělo bez problémů nastartovat a fungovat. Jenže si bude myslet, že tam je stále ten původní - menší - disk a podle toho bude zobrazovat původní kapacitu.

A proto nyní přichází největší pakárna z celého postupu. Donutit Synology načíst info o větším disku. Synology používá Linux RAID a LVM, takže to není tak jednoduché.

Příprava

Na zařízení je nutné povolit připojení přes SSH a rovnou se můžete připojit např. pomocí PuTTY (oficiální návod ve znalostní bázi Synology).
Všechny zde uvedené příkazy je nutné zadávat jako root, takže jako admin zadejte sudo -i a heslo uživatele admin.
Pro snažší práci uvedeme Synology do "nouzového" módu syno_poweroff_task -d. Příkaz zastaví všechny služby kromě SSH.
A teď je potřeba zjistit si označení:
  • fyzického disku (/dev/sdX)
  • RAID zařízení (/dev/mdY)
  • LVM volume groupy (/dev/vgZ/volume_Z)
Tyto údaje závisí na konfiguraci vašeho Synology a tak zde budu používat velká písmena X, Y a Z.

Rozšíření oddílu na naklonovaném disku

Toto je nejjednodušší krok: prázdné místo je na konci disku, takže k tomu stačí pár příkazů v utilitě parted (je potřeba editovat přímo fyzický disk!):
parted /dev/sdX

Přepnutí jednotek na sektory:
(parted) unit s

Zobrazení volného místa:
(parted) print free
print free
Model: WDC WD80EFZX-68UW8N0 (scsi)
Disk /dev/sdc: 15628053168s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start         End           Size          File system     Name  Flags
        34s           255s          222s          Free Space
 1      256s          4980735s      4980480s      ext4                  raid
 2      4980736s      9175039s      4194304s      linux-swap(v1)        raid
        9175040s      9437183s      262144s       Free Space
 3      9437184s      15628052992s  15618615808s                        raid
        15628052992s  15628053134s                Free Space

Zde je potřeba zkontrolovat, zda je tabulka oddílů ve formátu GPT a zapsat si číslo rozšiřovaného oddílu a celkový počet sektorů - zvýrazněno tučně.

Nyní přistoupíme k rozšíření oddílu až na konec:
(parted) resizepart A B

Kde A je číslo rozšiřovaného oddílu a B koncový počet sektorů. Podle příkladu nahoře to tedy bude:
(parted) resizepart 3 15628053134


Zvětšení disku v RAID a LVM

Normálně by mělo stačit zvětšit RAID příkazem mdadm --grow /dev/mdY --size max.
Ale to by bylo moc jednoduché :) Musíme rozložit a znovu složit softwarové RAID pole.

Takže nejdříve je nutné deaktivovat LVM (volume groups):
vgchange -a n

Pak můžeme rozložit RAID pole:
mdadm -S /dev/mdY

Které následně složíme a vynutíme znovunačtení kapacity disku:
mdadm -A /dev/mdY -U devicesize /dev/sdX

Nyní konečně lze rozšířit RAID pole, v tomto případě na maximální velikost:
mdadm --grow /dev/mdY --size max

A nakonec ověříme, že se to povedlo:
mdadm --detail /dev/mdY

Nyní se můžeme vrhnout na LVM.

Rozšíříme fyzický svazek:
pvresize /dev/mdY

Rozšíříme logický svazek:
lvextend /dev/vgZ/volume_Z /dev/mdX

A ověříme, že dopadlo i toto:
vgdisplay -v


Rozšíření filesystemu

Než budeme moci přistupovat k datům, je potřeba aktivovat volume groups:
vgchange -a y

Před rozšířením je dobré zkontrolovat filesystem, jestli neobsahuje chyby:
e2fsck -f /dev/vgY/volume_Z

A konečně rozšíříme filesystem na celý disk:
resize2fs /dev/vgY/volume_Z

Poslední dva kroky budou trvat hodně dlouho v závislosti na nové velikosti disku.

Restart Synology

Nakonec stačí restartovat Synology příkazem:
reboot

Závěr

Při tomto postupu, jsem vycházel článku How I upgraded my Synology NAS to a bigger disk, nicméně jsem ho musel modifikovat tak, aby fungoval na aktuální verzi Synology DSM 6.1.
Postup je sice docela krkolomný a zdlouhavý, ale výhodou je, že budete disk kopírovat pouze jednou a neztratíte žádná data. Nemusíte tak znovu konfigurovat sdílené složky, oprávnění k nim a další nastavení.
Na celé operaci zabere nejvíce času klonování disku (na starém Dell Optiplex 380 byla rychlost cca 500 GB/hod) a poté kontrola a rozšíření souborového systému. Změna oddílů na disku, rozložení a složení pole je v porovnání s tím velmi rychlé a zabere jen pár minut.

Výše popsaný postup se nehodí, pokud na Synology máte složité konfigurace RAID nebo nemáte disk zcela zaplněný - CloneZilla kopíruje disk po sektorech a nerozlišuje obsazené a volné místo.


2 komentáře:

  1. Mám dotaz, mně se konkrétně týká ta problematika výměny menšího disku za větší a právě nový větší disk si myslí, že je stejně velký jak ten malý. Na mně je právě teď ta pakárna. Jenže, v Synology manager nevidím nikde tu utilitu "parted" resp. nějaký příkazový řádek. Stejně tak nevím, proč u správce úložiště v menu svazek > upravit není možno svazek zvětšit na max (není vysvíceno černě, jen šedě a tudíž nedostupné). Kontaktoval jsem podporu Synology, uvidím, zda se ozvou.

    OdpovědětVymazat
    Odpovědi
    1. Přímo v DSM není možnost příkazového řádku.

      Je potřeba v DSM povolit SSH (Secure Shell) a následně se můžete připojit např. s PuTTY - v článku odkazuji na oficiální návod na znalostní bázi Synology (odstavec Příprava hned první věta).

      Vymazat