Podział dysków na partycje

Obecnie w instalowanym serwerze są co najmniej dwa dyski, które można wykorzystać jako mirror (zazwyczaj z wykorzystaniem gmirror). Historycznie mirror był budowany z całych dysków. Obecnie dzieli się każdy z dysków na identyczne partycje i wykonuje gmirror dla poszczegónych partycji.

Można skorzystać również z zfsroot, dzięki czemu zyskujemy wiele, wiele możliwości działania. Przykładowe linki:

Fizyczny podział

Pierwsza rzecz, to należy zidentyfikować dyski twarde w systemie. FreeBSD 9.x przyjęło zasadę, aby dyski nazywać ada0, ada1 itd. Tak więc podziału można dokonać za pomocą shella i dzięki temu wykonać tę operację szybko. Dokładny przepis instalacji jest podany tutaj (chodzi o kolejność przechodzenia przez menu instalatora).

Ważne: od jakiegoś casu dyski wspierają bloki 4kb, zamiast 512b. Warto o tym pamiętać (odpowiednie parametry dla poleceń tworzących partycje oraz same systemu plików) przy podziale dysków.

Skrypty

Dzięki możliwości dzielenia na partycje za pomocą Shell w menu instalacyjnym możemy zrobić następujące rzeczy:

### stary spos/ob; obecnie backup/ restore wymaga, aby dysk ada1 by/l pusty
###
###for i in 0 1; do gpart create -s gpt ada$i; gpart add -a 4k -t freebsd-boot -s 64k -l boot$i ada$i; gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada$i; done
###

# utworzenie sposobu partycjonowania
gpart create -s gpt ada0

# utworzenie poartycji boot oraz wgranie kodu do bootowania
gpart add -a 4k -t freebsd-boot -s 64k -l boot0 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

# pokazanie listy partycji
gpart show ada0

# dodanie partycji boot dla zfs
gpart add -a 4k -b 34 -s 128k -t freebsd-boot ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

Oraz podział na dalsze partycje (swap, ufs, zfs, etc)

Komentarz 1:

gpart add -a 4k -t freebsd-ufs -s 1G -l root0 ada0
gpart add -a 4k -t freebsd-swap -s <_POL_ILOSC_RAM_> -l swap0 ada0
gpart add -a 4k -t freebsd-ufs -s 512M -l tmp0 ada0
gpart add -a 4k -t freebsd-ufs -s 8G -l usr0 ada0
gpart add -a 4k -t freebsd-ufs -s 8G -l var0 ada0

Wykonanie partycji ZFS

# wykonanie partycji an potrzeby zlog oraz zacache
gpart add -a 4k -t freebsd-zfs -s <_POL_ILOSC_RAM_> -l zlog0 ada0
gpart add -a 4k -t freebsd-zfs -s <_1%_ILOSC_ZFS_STORAGE_> -l zcache0 ada0

# pozostała część dysku na partycję ZFS
gpart add -a 4k -t freebsd-zfs -l zfs0 ada0

Tworzenie systemów plików UFS

Dalsza część instalacji: zdublowanie partycji na kolejny dysk, wykonanie partycji ufs, etc.:

# wykonanie konfiguracji na dysku lustrzanym
#
gpart backup ada0 | sed -E 's/([a-z])0/\11/' | gpart restore -l ada1

# w przypadku większej liczny dysków
#
for i in 1 2 3; do gpart backup ada0 | sed -E "([a-z])0/\1$i/" | gpart restore -l ada$i; done

# konieczne wykonanie bootcode: gpart restore tego nie robi
#
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

# wgranie modu/l/ow potrzebnych do zbudowania mirrorow, stripes, etc.
#
kldload geom_mirror
kldload geom_stripe
kldload opensolaris
kldload zfs

# wykonanie mirror-ów
for d in root usr var tmp; do gmirror label $d /dev/gpt/${d}0 /dev/gpt/${d}1 ; done

# jeżeli nadal chcemy, aby tmp był w stripe. Chociaż w przypadku padu dysku, są problemy, bo w /tmp nie można nic utworzyć.
#
gstripe label tmp /dev/gpt/tmp0 /dev/gpt/tmp1

# wykonanie systemu plik/ow
newfs -L root -S 4k /dev/mirror/root
newfs -L usr -U -S 4k /dev/mirror/usr
newfs -L var -U -S 4k /dev/mirror/var
newfs -L tmp -U -S 4k /dev/stripe/tmp

# tuning
tunefs -l enable -a enable /dev/mirror/root
tunefs -l enable -a enable /dev/mirror/usr
tunefs -l enable -a enable /dev/mirror/var
tunefs -l enable -a enable /dev/stripe/tmp

# montowanie
mount /dev/mirror/root /mnt

mkdir -p /mnt/opt /mnt/usr /mnt/tmp /mnt/var

mount /dev/stripe/tmp /mnt/tmp
mount /dev/mirror/usr /mnt/usr
mount /dev/mirror/var /mnt/var

Można zamontować za pomocą jednolinijkowca:

for d in tmp usr var; do mkdir -p /mnt/$d ; done
for d in tmp usr var; do mount /dev/mirror/$d /mnt/$d ; done

Wykonanie puli ZFS

Bez oddzielnych partycji zlog/zcache

# zak/ladaj/ac, /ze ostatnia partycja jest ju/z ZFSowa
gnop create -S 4096 /dev/ada0p7
gnop create -S 4096 /dev/ada1p7

# dla większej liczby dysków
#
for i in 0 1 2 3; do gnop create -S 4096 /dev/ada${i}p7; done

zpool create -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache -O mountpoint=/opt -O atime=off -O setuid=off  tank mirror /dev/ada0p7.nop /dev/ada1p7.nop

Z oddzielnymi partycjami zlog/zcache

# trzeba przejść na sh z tcsh
for n in 0 1; do for i in 7 8 9; do gnop create -S 4096 /dev/ada${n}p$i; done ; done

zpool create -o altroot=/mnt -O mountpoint=/opt -O atime=off -O setuid=off -O exec=off tank mirror /dev/ada0p9.nop /dev/ada1p9.nop log mirror /dev/ada0p7.nop /dev/ada1p7.nop cache /dev/ada0p8.nop /dev/ada1p8.nop

Końcowe porządki tworzenia ZFS pool

zpool export tank
gnop destroy /dev/ada*.nop
zpool import -d /dev/gpt -o altroot=/mnt -o cachefile=/var/tmp/zpool.cache tank

Komentarz 2:

Wykonanie potrzebnych katalog/ow w ZFS

Komentarz 3 - włącz komentarze przed podziałem na partycje:

# Jeżeli partycje tworzone po pierwszym uruchomieniu po instalacji, to:
#
rmdir /usr/local /usr/obj /usr/src /usr/home /usr/ports

# --- dla partycji /usr -----------------------------------------------
#
zfs create -o canmount=off -o exec=on -o setuid=on tank/u
zfs create -o mountpoint=/usr/home  tank/u/home
zfs create -o mountpoint=/usr/local tank/u/local
zfs create -o compress=lz4 -o mountpoint=/usr/obj tank/u/obj
zfs create -o compress=lz4 -o exec=off -o setuid=off -o mountpoint=/usr/ports tank/u/ports
zfs create -o mountpoint=/usr/ports/distfiles tank/u/ports/distfiles
zfs create -o mountpoint=/usr/ports/packages tank/u/ports/packages
zfs create -o compress=lz4 -o exec=off -o setuid=off -o mountpoint=/usr/src tank/u/src

# Jeżeli partycje tworzone po pierwszym uruchomieniu po instalacji, to:
#
rmdir /var/empty /var/backups /var/db/pkg /var/mail /var/tmp/vi.recover /var/tmp

# zmiana nazwy wybranych katalogów
for d in audit crash db spool run log; do mv /var/$d /var/${d}.old ; done

# --- dla partycji /var -----------------------------------------------
#
zfs create -o canmount=off -o compress=lz4 -o exec=off tank/v
zfs create -o mountpoint=/var/audit tank/v/audit
zfs create -o mountpoint=/var/backups tank/v/backups
zfs create -o mountpoint=/var/crash tank/v/crash
zfs create -o mountpoint=/var/db tank/v/db
zfs create -o mountpoint=/var/empty tank/v/empty
zfs create -o mountpoint=/var/log  tank/v/log
zfs create -o mountpoint=/var/mail  tank/v/mail
zfs create -o mountpoint=/var/run  tank/v/run
zfs create -o mountpoint=/var/spool tank/v/spool
zfs create -o mountpoint=/var/www tank/v/www

# albo puścić wszystko w pętli
#
for d in audit backups crash db empty log mail run spool www; do zfs create -o mountpoint=/var/$d tank/v/$d; done

# wykonanie katalogów na potrzeby backupów
#
zfs create -o mountpoint=/opt/backups tank/b
zfs create tank/b/bsdbackup
zfs create tank/b/dumps

# wykonanie katalogów na potrzeby SQUIDa (opcjonalnie)
#
zfs create -o mountpoint=/opt/squid tank/s
zfs create tank/s/cache
zfs create tank/s/logs
zfs create -o mountpoint=/var/squid tank/v/squid

### Ustawienie exec wymagane przez domy/sln/a konfiguracj/e portupgrade
### Ew. zmieni/c ustawienia TMPDIR w pkgtools.conf
###
zfs create -o exec=on -o mountpoint=/var/tmp tank/v/tmp

# przypadku migrowania katalogów - ich wcześniejszego usuwania:
#
mkdir -p /var/tmp/vi.recover/
chmod -R 1777 /var/tmp

for d in audit crash db spool run log; do cp -pR /var/${d}.old/ /var/$d/ ; done

Kroki do wykonania po instalacji

Działania poinstalacyjne


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

PodzialNaPartycje (ostatnio edytowane 2015-06-25 14:03:00 przez wtps0n)