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)

Cookies allow us to offer our services. By using our services, you accept our use of cookies.  Accept  More information