OCFS2 failisüsteemi kasutamine Debianiga
Sisukord
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
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.