OmniOS - Root mirror

Tworzymy macierz RAID-1 dla dysku systemowego

Pierwszym ważnym elementem mającym na celu podniesienie bezpieczeństwa systemu plików jest zbudowanie macierzy lustrzanej dla dysków systemowych. Niektóre systemy operacyjne pozwalają stworzyć mirror z dysków, na których je instalujemy, już z poziomu kreatora instalacji. Instalator OmniOS nie posiada takiej funkcjonalności, niemniej jednak operacja jest prosta i bezpieczna do wykonania już na działającym systemie i w dowolnej chwili.

Zaczynamy od identyfikacji nazw napędów dyskowych w systemie, w tym celu wywołujemy polecenie format

root@test-builder:~# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c3t0d0
          /pci@0,0/pci1462,7616@1f,2/disk@0,0
       1. c3t1d0
          /pci@0,0/pci1462,7616@1f,2/disk@1,0
       2. c3t2d0
          /pci@0,0/pci1462,7616@1f,2/disk@2,0
       3. c3t3d0
          /pci@0,0/pci1462,7616@1f,2/disk@3,0
       4. c3t4d0
          /pci@0,0/pci1462,7616@1f,2/disk@4,0
       5. c3t5d0
          /pci@0,0/pci1462,7616@1f,2/disk@5,0
Specify disk (enter its number): _

System został zainstalowany na pierwszym dysku, RAID-1 stworzymy z dysku pierwszego i drugiego. Oba dyski muszą pozwolić na uruchomienie systemu, więc na drugim dysku należy utworzyć strukturę partycji rozpoznawalną przez MBR. Partycja reprezentująca cały dysk w systemie nosi nazwę "p0":

root@test-builder:~# fdisk -B c3t1d0p0
root@test-builder:~# _

Następnie kopiujemy strukturę partycji z dysku pierwszego na drugi

root@test-builder:~# prtvtoc /dev/rdsk/c3t0d0s2 | fmthard -s - /dev/rdsk/c3t1d0s2
fmthard: Partition 2 specifies the full disk and is not equal
full size of disk. The full disk capacity is 117162045 sectors.
fmthard: Partition 2 specified as 117194175 sectors starting at 0
        does not fit. The full disk contains 117162045 sectors.
fmthard: New volume table of contents now in place.
root@test-builder:~# _

Dodajemy nowy - pusty dysk ... i tu słowo wyjaśnienia: w systemie OpenSolaris oraz jego pochodnych, które oparte są na systemie plików ZFS, główny system plików utworzony jest zawsze w puli o nazwie rpool. Strukturę obecnie stworzonego systemu plików możemy obejrzeć poniżej:

root@test-builder:~# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
rpool                 7,72G  46,9G    35K  /rpool
rpool/ROOT            1,66G  46,9G    31K  legacy
rpool/ROOT/omnios     1,66G  46,9G  1,40G  /
rpool/ROOT/omniosvar    31K  46,9G    31K  legacy
rpool/dump            4,00G  46,9G  4,00G  -
rpool/export            76K  46,9G    32K  /export
rpool/export/home       44K  46,9G    44K  /export/home
rpool/swap            2,06G  49,0G  2,31M  -
root@test-builder:~# _
root@test-builder:~# zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
rpool  55,5G  5,66G  49,8G         -    10%  1.00x  ONLINE  -
root@test-builder:~# _ 
root@test-builder:~# zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c3t0d0s0  ONLINE       0     0     0

errors: No known data errors
root@test-builder:~# _

Jak więc widać powyżej mamy pulę o nazwie rpool, w skład której wchodzi jeden dysk c3t0d0s0. Naszym zadaniem jest dodanie do tej puli drugiego, wcześniej przygotowanego dysku:

root@test-builder:~# zpool attach -f rpool c3t0d0s0 c3t1d0s0
Make sure to wait until resilver is done before rebooting.
root@test-builder:~# _

Wykonanie tej komendy trwa kilka sekund. Gdy odzyskamy wiersz poleceń zobaczmy co dzieje się w systemie:

root@test-builder:~# zpool status
  pool: rpool
 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 Sun Mar  1 19:02:48 2015
    497M scanned out of 5,66G at 29,3M/s, 0h3m to go
    493M resilvered, 8,57% done
config:

        NAME          STATE     READ WRITE CKSUM
        rpool         ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c3t0d0s0  ONLINE       0     0     0
            c3t1d0s0  ONLINE       0     0     0  (resilvering)

errors: No known data errors
root@test-builder:~# _ 

Po odczekaniu kolejnych 3 minut status wygląda następująco:

root@test-builder:~# zpool status
  pool: rpool
 state: ONLINE
  scan: resilvered 5,66G in 0h3m with 0 errors on Sun Mar  1 19:06:10 2015
config:

        NAME          STATE     READ WRITE CKSUM
        rpool         ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            c3t0d0s0  ONLINE       0     0     0
            c3t1d0s0  ONLINE       0     0     0

errors: No known data errors
root@test-builder:~# _

Proszę zauważyć, że oba dyski obecnie znajdują się w kontenerze o nazwie mirror-0 i faktycznie pracują jako RAID-1. Osiągnęliśmy stan założony na początku tego rozdziału.

Ostatnią operacją jaka została do wykonania, jest instalacja MBR na dysku dodanym do systemu jako drugi (synchronizacja danych przeprowadzana jest jedynie w obrębie partycji czy raczej plastrów/kawałków <ang. slices> dodanych do macierzy):

root@test-builder:~# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c3t1d0s0
stage2 written to partition 0, 283 sectors starting at 50 (abs 16115)
stage1 written to partition 0 sector 0 (abs 16065)
root@test-builder:~# _

Od tego momentu system może zostać załadowany z dowolnego z dwóch dysków systemowych.


Skomentuj ten artykuł
 Odśiweż, jeśli nie widzisz poprawnie kodu
wpisz kod weryfikacyjny(pola wymagane)

{cbcookies/messageBy using this site you accept the use of cookies for analysis, customized content and advertising. Korzystając z tej strony, musisz zaakceptować korzystanie z plików cookie do analizy, dostosowanych treści i reklam.}  Accept  More information