Subject Re: [firebird-support] Windows/Linux Cross-Platform On-Disk-Structure Question!
Author Helen Borrie
At 08:41 AM 29/01/2006, you wrote:
>Hello All -
>
>This is my first posting to firebird-support. I'm just learning about
>FB and all that is possible...and I have one very important question:
>
>"Is the ODS (on-disk-structure) of the Windows server compatible with
>the ODS used by the Linux server?"

The short answer is Yes.


>My company intends to develop a device that can plug into both Windows
>and Linux machines. This device needs to contain a powerful RDBMS
>(residing on a FAT32 filesystem) such that the info stored under one
>OS is available on the other OS. The RDBMS needs to be as
>resource-efficient as possible (which rules out a Java solution). So
>far, FB is the only option I've located. But, I'm unsure if the ODS
>is compatible between OS's.

Cross-compatibility of the ODS depends on the hardware. As long as
both servers are writing to their databases from hardware-compatible
hosts, e.g. Intel 32, AMD 32, then the ODS is compatible.

What I can't predict (though someone else will step in here to
comment) is what will happen if 64-bit chips are in the
equation. Current distros of Firebird are all 32-bit applications,
which a Windows and some Linux distros will run transparently as
32-bit. I have no idea what happens when a 64-bit OS writes to or
reads from a FAT32 filesystem.

However, I'm nervous about "residing on a FAT32 filesystem", simply
because, in my ignorance, I suspect that Linux systems accessing
local FAT32 partitions do so via the NFS. That is, although the
FAT32 partition is physically local, the OS treats it as a network partition.

If I'm right about this (and I'm ready to be wrong about it!), then
you won't be able to use the database safely from Linux. It's not a
question of the ODS, but how I/O is controlled. I believe Linux can
read and write at file-level to a non-native partition, but would
come to grief when trying to operate on block addresses within a
file, or to allocate more blocks to the file.

All that said, I've opened databases residing on flash disks from
both Classic on Linux and Superserver on Windows, albeit as a single
user, really only to the extent of proving it could be done.

Firebird also has the ability to make a database read-only - this is
a database attribute, not to be confused with the read-only attribute
of a file. A read-only database *can* safely be read from a network
partition. You need to set a parameter in firebird.conf to enable this.

And because I can't tell from your description whether the intent is
to attempt to access the same database for writes concurrently from
both Windows and Linux, I will tell you now that this is a big No-No,
even though it is possible to configure both servers to allow it.

Possibly your final answer will be found in the capability of
Firebird 2 (currently in Beta) to store and access databases on a
raw device. It would certainly be nice (from our POV) to have
someone putting this feature to a real-life test.

./heLen