Zamjena neuspjelog diska u ZFS korijenu | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Zamjena neuspjelog diska u ZFS korijenu

Ovaj vodič objašnjava kako zamijeniti neispravan disk u ZFS mirror poolu na Linuxu. Postupak obuhvaća stavljanje diska izvan mreže, kopiranje particijske tablice na zamjenski disk, ponovno dodavanje diska u pool i instalaciju bootloadera nakon završetka resilveringa.

Preduvjeti

Potrebne su root ovlasti. U primjerima u nastavku pretpostavlja se da poslužitelj ima dva diska: /dev/sda (ispravan) i /dev/sdb (neispravan). Prilagodite nazive uređaja svojoj konfiguraciji.

Warning

Prije nastavka napravite sigurnosnu kopiju svih važnih podataka. Zamjena root diska operacija je visokog rizika. Pogreška u bilo kojem koraku može dovesti do gubitka podataka ili onemogućiti pokretanje sustava. Izbjegavajte korištenje naziva uređaja kao što je /dev/sdX u ZFS naredbama. Nazivi uređaja mogu se promijeniti nakon ponovnog pokretanja. Umjesto toga koristite stabilne identifikatore kao što je /dev/disk/by-id/. Primjeri u nastavku koriste /dev/sdX radi jednostavnosti pri radu s alatima za particioniranje. ZFS naredbe uvijek moraju koristiti /dev/disk/by-id/.

1. korak: Provjerite stanje poola

Prije bilo kakvih promjena provjerite trenutno stanje poola:

zpool status -v

Izlaz će prikazati koji je disk neispravan i njegov identifikator u poolu.

2. korak: Stavite neispravan disk izvan mreže

Ako je disk ONLINE, ali pokazuje znakove kvara, stavite ga izvan mreže prije fizičke zamjene:

zpool offline rpool <failed-device>

ZFS će prestati pokušavati koristiti neispravan disk prije njegove fizičke zamjene. Zamijenite <failed-device> identifikatorom prikazanim naredbom zpool status -v. Ako je disk već u stanju FAULTED ili REMOVED, preskočite ovaj korak i prijeđite izravno na 3. korak.

3. korak: Fizički zamijenite disk

Ako vaš poslužitelj podržava hot swap, disk možete zamijeniti bez isključivanja sustava.

U suprotnom isključite sustav:

poweroff

Nakon ugradnje zamjenskog diska pokrenite poslužitelj i provjerite je li novi disk vidljiv:

lsblk -o NAME,SIZE,MODEL ls -l /dev/disk/by-id/

U sljedećim koracima koristite by-id identifikator novog diska.

4. korak: Odredite vrstu particijske tablice

Ako gdisk još nije instaliran, instalirajte ga:

apt install gdisk -y

Provjerite vrstu particijske tablice na ispravnom disku:

gdisk -l /dev/sda

U izlazu pronađite odjeljak Partition table scan. Za MBR rezultat će prikazati MBR: MBR only i GPT: not present. Za GPT prikazat će se MBR: protective i GPT: present.

5. korak: Pripremite i kopirajte particijsku tablicu na novi disk

Većina ZFS root konfiguracija koristi GPT particioniranje. MBR metoda uključena je za starije sustave.

GPT

Prije nastavka odredite naziv /dev/sdX koji odgovara novom disku jer ga alati za particioniranje zahtijevaju:

lsblk -o NAME,SIZE,MODEL,SERIAL

Prije kopiranja particijske tablice obrišite stare potpise sa zamjenskog diska:

wipefs -a /dev/disk/by-id/<new-disk>

Warning

wipefs -a trajno uklanja sve potpise datotečnih sustava i particija s diska. Prije pokretanja ove naredbe provjerite da je naveden ispravan identifikator diska.

Sljedeća naredba kopira particijsku tablicu s /dev/sda (izvor) na /dev/sdb (odredište):

sgdisk -R /dev/sdb /dev/sda

Warning

U naredbi sgdisk -R prvi je argument odredišni disk, a drugi izvorni disk. Zamjenom redoslijeda argumenata prebrisat ćete particijsku tablicu na ispravnom disku.

Ako je zamjenski disk veći od izvornog, proširite GPT kako biste iskoristili cijeli disk:

sgdisk -e /dev/sdb

Zatim zamjenskom disku dodijelite novi jedinstveni UUID:

sgdisk -G /dev/sdb

Warning

sgdisk -G dodjeljuje nove UUID-ove svim particijama na zamjenskom disku. Ako /etc/fstab sadrži zapise temeljene na UUID-u za neku od tih particija, sustav se možda neće moći pokrenuti. Nakon završetka resilveringa provjerite koristi li /etc/fstab identifikatore /dev/disk/by-id/, a ne UUID-ove.

Ponovno učitajte particijsku tablicu kako bi kernel preuzeo novi raspored:

udevadm trigger udevadm settle

Ako je zamjenski disk prethodno korišten u drugom ZFS poolu, obrišite stare ZFS metapodatke kako biste izbjegli konflikte:

zpool labelclear /dev/disk/by-id/<new-disk-partX> 2>/dev/null || true

Zamijenite <new-disk-partX> stvarnim identifikatorom ZFS particije.

MBR

Sljedeća naredba kopira particijsku tablicu s /dev/sda (izvor) na /dev/sdb (odredište):

sfdisk -d /dev/sda | sfdisk /dev/sdb

Ako nove particije nakon kopiranja nisu vidljive u sustavu, ponovno učitajte particijsku tablicu:

udevadm trigger udevadm settle

6. korak: Dodajte disk u pool

Zamijenite neispravan disk u poolu novim diskom. Najprije provjerite točan identifikator neispravnog diska kako je prikazan u poolu:

zpool status rpool

U izlazu pronađite unos neispravnog diska na popisu uređaja poola. Bit će prikazan kao puna putanja, primjerice /dev/disk/by-id/ata-WDC_WD10_12345-part3, sa statusom FAULTED, UNAVAIL ili OFFLINE. Tu putanju koristite kao <old-device> u naredbi replace:

zpool replace rpool <old-device> /dev/disk/by-id/<new-disk-part>

Zamijenite <old-device> identifikatorom neispravnog diska iz prethodnog koraka. Zamijenite <new-disk-part> by-id identifikatorom particije zamjenskog diska i koristite isti broj particije kao na ispravnom disku (na primjer, -part3 ili -part4). Ispravan identifikator možete pronaći naredbom ls -l /dev/disk/by-id/.

Ako je stari disk potpuno nedostupan (UNAVAIL), a zpool replace vraća pogrešku, dodajte opciju -f kako biste prisilili zamjenu:

zpool replace -f rpool <old-device> /dev/disk/by-id/<new-disk-part>

Nakon pokretanja zpool replace provjerite je li resilvering započeo i prikazuje li se novi disk kao ONLINE:

zpool status

Resilvering se automatski nastavlja u pozadini.

7. korak: Pratite resilvering

Napredak resilveringa pratite naredbom:

zpool status -v

Izlaz prikazuje napredak, brzinu i procijenjeno preostalo vrijeme. Prije nastavka pričekajte da status bude state: ONLINE i da resilvering završi. Ovisno o kapacitetu diska, postupak može trajati nekoliko sati.

8. korak: Provjerite boot dataset

Prije instalacije bootloadera provjerite je li za pool konfiguriran ispravan boot dataset:

zpool get bootfs rpool

Izlaz bi trebao prikazati putanju dataseta kao što je rpool/ROOT/debian. Ako je vrijednost none ili pokazuje na pogrešan dataset, ručno je postavite:

zpool set bootfs=rpool/ROOT/debian rpool

Zamijenite rpool/ROOT/debian stvarnim nazivom root dataseta na vašem sustavu. Dostupne datasete možete prikazati naredbom zfs list.

9. korak: Instalirajte bootloader

Instalirajte bootloader na zamjenski disk nakon završetka resilveringa. Sustav tijekom resilveringa nastavlja raditi s izvornog diska, pa je ovaj korak sigurno izvršiti nakon što se pool vrati u ispravno stanje.

BIOS (Legacy)

grub-install /dev/disk/by-id/<new-whole-disk>

Na nekim sustavima grub-install možda neće prihvatiti by-id putanju. U tom slučaju zamijenite /dev/disk/by-id/<new-whole-disk> odgovarajućim nazivom uređaja, primjerice /dev/sdb.

UEFI

Montirajte EFI particiju sa zamjenskog diska u privremeni direktorij prije pokretanja grub-install. Time se izbjegava prekrivanje trenutno aktivne EFI particije:

mkdir -p /mnt/new_efi mount /dev/disk/by-id/<new-disk-part1> /mnt/new_efi

Zamijenite <new-disk-part1> stvarnim identifikatorom EFI particije (obično -part1 ili -part2; tip particije EF00). Ako niste sigurni, provjerite pomoću ls -l /dev/disk/by-id/.

Ako je EFI particija prazna, prije pokretanja grub-install kopirajte sadržaj postojeće EFI particije:

cp -r /boot/efi/* /mnt/new_efi/

Instalirajte bootloader:

apt install grub-efi-amd64 efibootmgr -y grub-install --target=x86_64-efi --efi-directory=/mnt/new_efi --bootloader-id=debian --recheck /dev/disk/by-id/<new-whole-disk> update-grub update-initramfs -u -k all

Zamijenite --bootloader-id=debian nazivom koji odgovara vašoj distribuciji (na primjer, ubuntu ili debian). Zamijenite /dev/disk/by-id/<new-whole-disk> by-id identifikatorom cijelog zamjenskog diska, a ne particije.

Pokretanje naredbe update-initramfs osigurava da početni RAM disk sadrži aktualne ZFS module i prepoznaje novi raspored poola. Bez ovog koraka sustav se nakon zamjene možda neće moći pokrenuti.

Nakon instalacije odmontirajte EFI particiju:

umount /mnt/new_efi

Provjerite EFI boot unose:

efibootmgr -v

Warning

Na sustavima sa ZFS rootom, grub-install može neuspjeti ili zahtijevati dodatne opcije, ovisno o verziji GRUB-a i konfiguraciji sustava. Na primjer, na nekim sustavima GRUB je potrebno instalirati s modulima za podršku ZFS-u ili naredbu pokrenuti iz chroot okruženja. Ako naredba vrati pogrešku, pogledajte dokumentaciju svoje distribucije za posebne upute o instalaciji GRUB-a sa ZFS podrškom.

Info

Na Proxmox VE-u grub-install je onemogućen. Umjesto njega koristite proxmox-boot-tool. U primjeru u nastavku koristi se /dev/sdb2 — zamijenite ga stvarnom EFI particijom na svom sustavu:

proxmox-boot-tool format /dev/sdb2 proxmox-boot-tool init /dev/sdb2

Zaključak

Nakon instalacije bootloadera ponovno pokrenite poslužitelj i provjerite pokreće li se sustav normalno. Pokrenite scrub kako biste provjerili postoje li pogreške pri čitanju/pisanju koje su se mogle pojaviti tijekom resilveringa:

zpool scrub rpool

Zatim provjerite stanje poola:

zpool status -v

Pool bi trebao biti online i bez pogrešaka. Ako se tijekom postupka pojave problemi, provjerite sistemske zapise pomoću journalctl -xe za dodatne informacije.

Warning

Prije nego što odložite neispravan disk koji ste uklonili u 3. koraku, ponovno pokrenite poslužitelj i provjerite da se sustav normalno pokreće sa zamjenskog diska. Neispravan disk zadržite kao rezervnu opciju dok ne potvrdite uspješno pokretanje sustava.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA