Přidání systémového disku do ZFS
Ve výchozí instalaci FreeBSD, pokud jsme zvolili
souborový systém ZFS, máme jeden disk
a na něm pool zroot
. V tomto článku si ukážeme, jak přidat další disk ke
stávajícímu a vytvořit z něj mirror. Dále si ukážeme, jak přidat další
disky jako další vdev mirrory. Postupně tak můžeme navyšovat místo na zroot
poolu a vytvářet tak ekvivalent raid10.
Seriál o ZFS v FreeBSD
Tento článek je součástí krátkého seriálu o ZFS v FreeBSD
- Přidání disku (tento článek)
- Řešení vadného disku
- Zvětšení poolu
- Diskuse nad typy vdev
- Zvětšení vdevu mirror
Výchozí stav
Po instalaci máme v systému jeden disk:
[root@freebsd ~]# gpart show
=> 40 134217648 da0 GPT (64G)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 4194304 2 freebsd-swap (2.0G)
4196352 130019328 3 freebsd-zfs (62G)
134215680 2008 - free - (1.0M)
A vytvořený jeden pool:
[root@freebsd ~]# zpool status
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
da0p3 ONLINE 0 0 0
errors: No known data errors
Přidání a rozdělení dalšího disku
Přidáme další disk a vypíšeme si seznam disků:
[root@freebsd ~]# camcontrol devlist
<NECVMWar VMware IDE CDR10 1.00> at scbus1 target 0 lun 0 (cd0,pass0)
<VMware, VMware Virtual S 1.0> at scbus2 target 0 lun 0 (pass1,da0)
<VMware, VMware Virtual S 1.0> at scbus2 target 1 lun 0 (pass2,da1)
Poznámka, všechny výpisy v tomto článku jsou pořízeny na virtuálním stroji s SCSI disky. Což má vliv jen na pojmenování diskových zařízení. SCSI disky jsou pojmenovávány
da*
SATA disky potomada*
.
Nový disk je potřeba rozdělit, ideálně stejně jako ten první. K tomu slouží
příkaz
gpart
.
Kopii rozdělení disku provedene pomocí:
gpart backup da0 | gpart restore -F da1
A můžeme zkontrolovat, že oba disky jsou rozděleny skutečně stejně:
[root@freebsd ~]# gpart show
=> 40 134217648 da0 GPT (64G)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 4194304 2 freebsd-swap (2.0G)
4196352 130019328 3 freebsd-zfs (62G)
134215680 2008 - free - (1.0M)
=> 40 134217648 da1 GPT (64G)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 4194304 2 freebsd-swap (2.0G)
4196352 130019328 3 freebsd-zfs (62G)
134215680 2008 - free - (1.0M)
Boot oddíl
Z druhého disku chceme i bootovat v případě výpadku disku prvního. Oddíl na to připravený máme, stačí nainstalovat zavaděč:
[root@freebsd ~]# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
partcode written to da1p1
bootcode written to da1
Swap
Pokud používáme swap, přidáme i druhý disk. Konfigurace v /etc/fstab
:
/dev/da0p2 none swap sw 0 0
/dev/da1p2 none swap sw 0 0
Disky s 4k sektory
Pokud používáme disky s 4k sektory (což jsou už dneska prakticky všechny velké SATA disky), musíme diskové oddíly a zejména ZFS operace správně zarovnat. Před jakoukoliv prací se ZFS (přidávání disků a vdevů), je proto nutné nastavit:
sysctl vfs.zfs.min_auto_ashift=12
Pokud vytváříme nové oddíly pomocí gpart
je vhodné vždy uvádět parametr -a
4k
. K tomu se ještě dostaneme.
Přidání disku do ZFS
Aktuálně máme v ZFS pouze jeden vdev obsahující jeden disk. Tento vdev cheme přeměnit na typ mirror.
[root@freebsd ~]# zpool status
pool: zroot
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
da0p3 ONLINE 0 0 0
errors: No known data errors
Zkontrolujeme, zda máme vše nastaveno pro 4k sektory:
[root@freebsd ~]# sysctl vfs.zfs.min_auto_ashift
vfs.zfs.min_auto_ashift: 12
A můžeme přidat další disk:
zpool attach zroot da0p3 da1p3
A průběh resilveringu můžeme sledovat pomocí zpool status
:
[root@freebsd ~]# zpool status
pool: zroot
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sat May 6 10:14:47 2017
73.7M scanned out of 1.43G at 6.14M/s, 0h3m to go
73.6M resilvered, 5.03% done
config:
NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
da0p3 ONLINE 0 0 0
da1p3 ONLINE 0 0 0 (resilvering)
errors: No known data errors
Vidíme, že původní single disk se změnil na vdev mirror, který má nynní dva disky. Náš systém je tedy odolný vůči vypadku jednoho systémového disku.