====== 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]].