OCFS2 failisüsteemi kasutamine Debianiga

Allikas: Kuutõrvaja

Sissejuhatus

OCFS2 failisüsteem on Oracle poolt arendatud ühiskasutuses plokkseadme failisüsteem (ingl. k. shared disk file system), mis tähendab, et üks ja sama plokkseade on ühendatud samaaegselt mitme arvuti külge (tavaliselt mitte juurfailisüseemina, vaid nt andmete jaoks) ning sellele plokkseadmele tekitatud OCFS2 failisüsteem ja arvutites töötavad OCFS2 infrastruktuuri komponendid (lock manager jt) hoolitsevad selle eest, et sellisel kasutausel ei tekiks konflikte; et ühe arvuti poolt failisüsteemis tehtud muudatused hakkaksid paistma teistes arvutites mõistliku aja jooksul. Sellisest süsteemi nimetatakse OCFS2 klustriks ja osalevaid arvuteid klustri komponentideks (ingl. k. cluster nodes).

Aadressil http://oss.oracle.com/projects/ocfs2/ märgitakse OCFS2 omadustena

  • POSIX-compliant shared-disk cluster file system for Linux capable of providing both high performance and high availability
  • Variable Block sizes
  • Flexible Allocations (extents, sparse, unwritten extents with the ability to punch holes)
  • Journaling (ordered and writeback data journaling modes)
  • Endian and Architecture Neutral (x86, x86_64, ia64 and ppc64)
  • In-built Clusterstack with a Distributed Lock Manager
  • Support for Buffered, Direct, Asynchronous, Splice and Memory Mapped I/Os
  • Comprehensive Tools support

Ühiskasutuses plokkseadme kasutamine

Ühiskasutuses plokkseadme (ingl. k. shared disk system) kasutamiseks samaaegselt mitmes arvutis on nt sellised võimalused

  • Xen vahendid - mitmele domU guestile ühendatakse külge sama plokkseade nö 'w!' parameetriga; sellisel kasutusel on piiranguks, et sündmused arenevad samas füüsilises arvutis
  • iSCSI - süsteemi saab tekitada nö käepärastest vahenditest, puuduseks on, et etherneti võrk saab tubli koormuse, lisaks plokkseadmega suhtlemisele toimub üle etherneti OCFS2 klustri komponentide vaheline suhtlemine
  • FC - süsteemi tekitamiseks on tarvis spetsiaalset riistvara ja oskusi seda kasutada, aga töötab see-eest väga efektiivselt
  • AOE (ATA over Ethernet) - tundub olevat suhteliselt nö ad-hoc tehnika ja tõenäoliselt sobib pigem katsetamiseks kui nö päris kasutuseks, kasutaja peab ise otsustama

Xen

Ühiskasutuses plokkseadme kasutamist mitmes Xen domU operatsioonisüsteemi eksemplaris illustreerib selline skeem

    node0            node1             node2
     ___              ___               ___
    |   |            |   |             |   |
    |___|            |___|             |___|
      |   /dev/xvda2   |   /dev/xvda2    |   /dev/xvda2 - Xen domU guestid
      |                |                 |
    --|----------------|-----------------|--------|-----
                                                  |
                                                 _|_
                                                |   |  Xen dom0
                                                |___|  /dev/data/ocfs2-storage

http://kuutorvaja.eenet.ee/wiki/Virtualiseerimine_tarkvaraga_Xen#.C3.9Chiskasutuses_plokkseadme_kasutamine

Käesolevas pala tekitamisel on tuginetud Xen domU arvutite külge Xeni vahenditega ühendatud plokkseadme kasutamisele.

iSCSI

Ühiskasutuses plokkseadme kasutamist iSCSI abil mitmes arvutis illustreerib selline skeem

    node0            node1             node2
     ___              ___               ___
    |   |            |   |             |   |
    |___|            |___|             |___|
      |   /dev/sda     |   /dev/sda      |   /dev/sda  - iSCSI initiatorid (kliendid)
      |                |                 |
    --|----------------|-----------------|--------|-----
                                                  |
                                                 _|_
                                                |   |  iSCSI target (server)
                                                |___|  /dev/data/ocfs2-storage

http://kuutorvaja.eenet.ee/wiki/ISCSI_kasutamine

FC

FC ja DM-Multipath kasutamist on käsitletud palas http://kuutorvaja.eenet.ee/wiki/DM-Multipath

AOE

ATA over Ethernet kasutamist on käsitletud palas http://kuutorvaja.eenet.ee/wiki/ATA_over_Ethernet_kasutamine_Debianiga

OCFS2 tööpõhimõte

Kõik OCFS2 klustris osalevad arvutid vahetavad omavahel andmeid toimuvate muudatuste kohta kasutades vaikimisi 7777/tcp porti

               node2
                ___
               |   |
           /   |___|  \   7777/tcp
         /              \
       /                  \
 
    node0                 node1
     ___                   ___ 
    |   |   -----------   |   |
    |___|                 |___|

OCFS2 andmevahetus toimub üle kahe erineva kanali

  • klustri komponendile külge ühendatud plokkseadmega suhtlemine, nt üle fc (FC), etherneti (iSCSI, AOE) või nö sisemiselt (Xen)
  • klustri komponentide vaheline suhtlemine, üle 7777/tcp pordi

Töötava klustri komponentides käivad seoses OCFS2 tarkvaraga muu hulgas sellised protsessid, õigemini tuuma lõimed (kuna nad esinevad ps käsu väljundis [] märkide vahel)

 # ps aux | egrep "oc|o2"
 ...
 root      2839  0.0  0.0      0     0 ?        S<   18:09   0:00 [o2net]
 root      2854  0.0  0.0      0     0 ?        S<   18:13   0:00 [o2hb-F2AF06707F]
 root      2860  0.0  0.0      0     0 ?        S<   18:13   0:00 [ocfs2_wq]
 root      2861  0.0  0.0      0     0 ?        S<   18:13   0:00 [ocfs2dc]
 root      2866  0.0  0.0      0     0 ?        S<   18:13   0:00 [ocfs2cmt]

Ettevalmistuste tegemine

OCFS2 klustri moodustamiseks tuleb kõigile klustri komponentidele ühendada külge rw režiimis ühiskasutatav plokkseade, nt valides eelmises punktis esitatud võimaluste seast sobiva.

OCFS2 tarkvara koosneb mitmest osast

  • tuuma moodulid - sisalduvad paketihalduse Debian Lenny tuuma koosseisus
  • haldusprogrammid - pakett ocfs2-tools

Pakett ocfs2-tools paigaldamiseks tuleb öelda

 # apt-get install ocfs2-tools

Debian Lenny sisaldab OCFS2 versiooni 1.4

 # dpkg -l ocfs2-tools
 ..
 ii  ocfs2-tools                   1.4.1-1                       tools for managing OCFS2 cluster filesystems

Klustri seadistamine

Kluster seadistatakse moodustades kõigis klustri komponentides samasuguse sisuga kaks seadistusfaili

# cat /etc/ocfs2/cluster.conf
node:
      ip_port = 7777
      ip_address = 192.168.10.51
      number = 0
      name = node0
      cluster = kluster

node:
      ip_port = 7777
      ip_address = 192.168.10.52
      number = 1
      name = node1
      cluster = kluster

node:
      ip_port = 7777
      ip_address = 192.168.10.53
      number = 2
      name = node2
      cluster = kluster
 
cluster:
      node_count = 3
      name = kluster

ja /etc/default/o2cb sisu võiks olla nt selline

# cat /etc/default/o2cb 
O2CB_ENABLED=true 
O2CB_BOOTCLUSTER=kluster
O2CB_HEARTBEAT_THRESHOLD=31
O2CB_IDLE_TIMEOUT_MS=30000
O2CB_KEEPALIVE_DELAY_MS=2000
O2CB_RECONNECT_DELAY_MS=2000

Faili seadistamiseks sobib öelda

# dpkg-reconfigure ocfs2-tools

Klustri kasutamine

Klustri käivitamiseks tuleb esmalt laadida tuuma moodulid ning ühendada külge vajalikud pseudo-failisüsteemid öeldes

 # /etc/init.d/o2cb load
 Loading filesystem "configfs": OK
 Mounting configfs filesystem at /sys/kernel/config: OK
 Loading stack plugin "o2cb": OK
 Loading filesystem "ocfs2_dlmfs": OK
 Mounting ocfs2_dlmfs filesystem at /dlm: OK

Seejärel käivitad kluster

 # /etc/init.d/o2cb online kluster
 Setting cluster stack "o2cb": OK
 Starting O2CB cluster kluster: OK

Ainult ühes klustri komponendis tuleb moodustada OCFS2 failisüsteem öeldes nt, '-N 3' tähistab asjaolu, et klustris osaleb kolm komponenti

 # mkfs.ocfs2 -N 3 /dev/xvda3 
 mkfs.ocfs2 1.4.1
 Cluster stack: classic o2cb
 Filesystem label=
 Block size=4096 (bits=12)
 Cluster size=4096 (bits=12)
 Volume size=4294967296 (1048576 clusters) (1048576 blocks)
 33 cluster groups (tail covers 16384 clusters, rest cover 32256 clusters)
 Journal size=67108864
 Initial number of node slots: 3
 Creating bitmaps: done
 Initializing superblock: done
 Writing system files: done
 Writing superblock: done
 Writing backup superblock: 1 block(s)
 Formatting Journals: done
 Formatting slot map: done
 Writing lost+found: done
 mkfs.ocfs2 successful

Ning lõpuks ühendada külge failisüsteem öeldes

 # mount /dev/xvda3 /srv/data

Seejärel tuleb ka ülejäänud klustri komponentides öelda

 # /etc/init.d/o2cb load
 # /etc/init.d/o2cb online kluster
 # mount /dev/xvda3 /srv/data

OCFS2 klustri komponendi seiskamiseks tuleb öelda

 # umount /srv/data
 # /etc/init.d/o2cb offline kluster
 # /etc/init.d/o2cb unload

Klustri komponendi oleku küsimuseks tuleb öelda, nt töötaval juhtumil vastatakse

 # /etc/init.d/o2cb status kluster
 Driver for "configfs": Loaded
 Filesystem "configfs": Mounted
 Stack glue driver: Loaded
 Stack plugin "o2cb": Loaded
 Driver for "ocfs2_dlmfs": Loaded
 Filesystem "ocfs2_dlmfs": Mounted
 Checking O2CB cluster kluster: Online
 Heartbeat dead threshold = 31
   Network idle timeout: 30000
   Network keepalive delay: 2000
   Network reconnect delay: 2000
 Checking O2CB heartbeat: Active

OCFS2 süsteemi kasutamise tulemusena on ühe klustri komponendi failisüsteemi tehtud muudatused nähtavad ka teistes klustri komponentides.

Logi

Viimase komponendi käivitumisel tekib node0:/var/log/kern.log'i nt selline sissekanne

 Jun 13 18:28:47 node0 kernel: o2net: accepted connection from node node2 (num 2) at 192.168.10.53:7777
 Jun 13 18:28:51 node0 kernel: ocfs2_dlm: Node 2 joins domain F2AF06707F454C79BBE68B0D2F3BC05E
 Jun 13 18:28:51 node0 kernel: ocfs2_dlm: Nodes in domain ("F2AF06707F454C79BBE68B0D2F3BC05E"): 0 1 2

OCFS2 ja NFS võrdlus

TODO

Märkused

  • Klustri mõõduka kasutamise korras toimub üle 7777/tcp pordi märkimisväärne andmevahetus, ca 500 kBait/s.
  • Paketina ocfs2console jagatakse graafilist seadistus ja haldusprogrammi OCFS2 klustri jaoks, kasutaja peab ise otsustama, kas tema jaoks on oluline seda kasutada.
  • Tundub, et OCFS2 ei sisalda iseenesest mingit klustri komponentide omavahelist autentimist, aga samas saab probleemi leevendada nt iptabels kasutamisega.

Kasulikud lisamaterjalid