====== OCFS2 ====== The Oracle Clustered File System is a file system which understand being mounted on, and written to by, more than one computer at the same time. It's a bit like NFS, except it's local to a machine rather than mounted over a network. I use it with [[DRBD]] to get a network-replicated file system mounted on two machines at the same time, which either can read from and write to. - install the package **ocfs2-tools** - create the cluster definition file node: ip_port = 7777 ip_address = 203.0.113.20 number = 20 name = Pinky cluster = SharedFS node: ip_port = 7777 ip_address = 203.0.113.16 number = 16 name = Perky cluster = SharedFS cluster: node_count = 2 name = SharedFS - edit the configuration file by running **dpkg-reconfigure ocfs2-tools** - check the status by running **/etc/init.d/o2cb status** This should show something like: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 "SharedFS": Online Network idle timeout: 30000 Network keepalive delay: 2000 Network reconnect delay: 2000 Heartbeat mode: Local Checking O2CB heartbeat: Not active Debug file system at /sys/kernel/debug: mounted Note that the hostnames in the configuration file (here **Pinky** and **Perky**) must match the actual hostnames of the machines. Now you can format the filesystem on one of the nodes, and DRBD will synchronise this to the other node: **mkfs.ocfs2 -N 2 -L Shared /dev/drbd0** While this is doing its job, you can see the other node replicating the data:version: 8.4.10 (api:1/proto:86-101) srcversion: D7CA86B1B124FE79CE17C50 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r----- ns:0 nr:294324 dw:294324 dr:0 al:0 bm:0 lo:1 pe:0 ua:0 ap:0 ep:1 wo:f oos:0 Note that it will take considerably longer to format the partition that it would do on a standalone machine, depending on the speed of the network connection between the two nodes. ===== Caveats ===== Be careful if you plan to use OCFS2 for a partition mounted on a virtual machine. You can't do the OCFS2 part on the virtualisation host, and then mount the resulting file system inside the guest. You need to have OCFS2 installed and configured on the guest itself. At first I tried to do: * **DRBD** on the virtualisation host * **OCFS2** on the virtualisation host * mount the resulting FS on the virtualised guest This does not work (the FS simply refuses to mount, with an error about there being no heartbeat). Therefore I see two possible alternatives: 1: * **DRBD** on the virtualisation host * **OCFS2** on the virtualised guest * mount the resulting FS on the virtualised guest 2: * **DRBD** on the virtualised guest * **OCFS2** on the virtualised guest * mount the resulting FS on the virtualised guest Of the two, I prefer the first, because it seems neater to me to have DRBD running once on the host for as many shared devices as are needed for all the VMs, instead of installing and configuring DRBD on every VM. You can't avoid having to have OCFS2 on each VM, so that to me feels like a good compromise. ---- [[.:|Go up]]\\ Return to [[:|main index]].