The Reliance Family of file systems is made up of exclusively transactional based file systems.
| Reliance | Reliance Nitro | |
| Allocation Scheme |
Linear | Tree-based |
| Disk Space Allocation |
Block Based |
Extent Based |
| Dynamic Transaction Point Technology |
√ | √ + Delta Transactions |
| Character Support |
UNICODE | UTF-8 |
| OEM Defined Attributes |
√ |
Q: What is a transactional file system?
A: A transactional file system is one that is architected similarly to the
concept of a database. Databases conduct events known as transactions. At predetermined
intervals, all changes prior to the previous intervals are committed to disk.
These intervals are called as transaction points.
A Transaction Point may be atomic or not. Reliance Transaction Points are
atomic, whereas Win/CE TFAT transaction points are NOT atomic.
Q: How is a transactional file system different from a journaling file system?
A: Journaling file systems maintain metadata (and sometimes user data) by recording events in a log. In journaling file systems, an event is any single file operation. If power fails, the log is re-read and validated for errors. A transactional file system uses completely different architecture than a journaling file system. The transactional file system works from two meta-roots; the known good state and the working state. In a transactional file system, a “transaction point” is the atomic event where the working state is committed to the disk and becomes the known good state.
Q: How does a transactional file system compare to journaling file systems in performance and reliability?
A: Journaling file systems attempt to
provide reliability by keeping track of changes in log or journal. If the
system is interrupted a review of the journal is required upon restart to
attempt to align requested changes with the data actually written on the media.
This time consuming process slows mount times, often dramatically. A
transactional file system records changes to the media in an atomic fashion:
changes are either all completed or never happen at all. This provides an
always consistent disk state and allows virtually instantaneous mount times.
Reliance also has the advantage of protecting both file metadata and user data
from data corruption due to power loss, making it a more reliable option than a
journaling file system.
Q: What is a transaction point?
A transaction point in a Reliance Family file system is the point at which the working state is committed to the disk, becoming the “known good state.” This is an atomic event –it is either fully completed or the disk will remain in the prior known good state.
Q: What are Delta Transactions?
A: To mitigate the performance penalty of a transaction point, Reliance Nitro introduces a special data structure known as the Delta-Block. Delta-Block transaction (also referred to as Delta transaction) allows a transaction to occur by only writing a single metadata block that encompasses all the metadata changes since the last transaction. The Delta-Block contains all the updates to the already transacted state of the media. So in essence, the Delta-Block records the difference between committed state and the working state.
Q: What is Dynamic Transaction Point technology?
A: Dynamic Transaction Point technology is the ability of Reliance to control
when and under what circumstances transaction points occur. It is dynamic in
that it responds to system conditions and is not fixed to only a time or event.
Datalight coined the term to describe the way Reliance allows developers to
write their applications such that they are assured that critical data is
committed to the disk (flushed from all caches and non-volatile storage media)
at a precise moment.
An important aspect of DTP is that it allows transaction modes to be changed
while the device is running, without requiring recompiling or reformatting.
Q: What are the available Dynamic Transaction Point technology settings?
A: Transaction points may be set to event based, timed or application controlled transactions. Event based transactions would be used in a use case where it is appropriate to transact on an event, such as file close. Timed transactions trigger a transaction after a pre-determined amount of time has passed. Application controlled settings can be enabled to override event based or timed transactions.
Q: Can you run multiple transaction point methods
simultaneously? What’s the value in doing that?
A: Yes. Customers can run a device in all three DTP modes simultaneously. This
is helpful where a device has multiple applications, each having different
needs, for example a handheld scanner that has both a scanning application and
a logging application. The scanning application needs automatic transactions
while the logging one needs timed.
Q: What is a "discard interface" and how does it enable
faster writes?
A: Reliance Nitro tells FlashFX Tera when it no longer needs data from areas of
the FlashFX Tera "disk" (for example, when a file is deleted). We
call this "discarding" data. This makes FlashFX Tera more efficient
in that data that is not in use does not need to be copied.
The performance advantage is that sustained write performance with Reliance
Nitro will be much better than other file systems which do not have a discard
interface. For example, the ext3 file system has no concept of discarding data,
so after the entire disk has been written once, FlashFX Tera thinks everything
is of equal importance. This makes it much less efficient when it comes time perform
a write.
Discard interface only matter when using resident flash and FlashFX Family
flash managers. It is of limited use on hard drives, DoC, SD, etc.
Q: What is the
overhead of your "metaroots"?
A: Metaroots are one logical block in size. A new one is written for each
transaction. The metaroot is what allows a new transaction state to be
recognized, and could be considered an extra write beyond what a conventional
file system would perform.
Q: How does Reliance
Nitro’s tree-based architecture improve performance?
A: The most common metadata architecture is linear allocation. In this method,
the file system uses a linear array to store metadata information. This makes
the file system simple and works fairly well for a system with a small number
of files. The limitations of linear allocation start to show significant impact
as the number of files in a system grows. Accessing large number of files
through linear traversal of a folder takes a long time, leading to a serious
degradation in performance.
Tree-based allocations are a faster way to organize and find files, based on
grouping information into addressable chunks, and assigning keys that direct
the system where to find them
this needs to be better formatted:
Tree Depth 512 1024 2048
Level 1 15 31 63
Level 2 615 2,604 10,647
Level 3 25,215 218,736 1,799,343
Level 4 1,033,815 18,373,824 304,088,967
For 512 bytes block size:
* On a linear file system (like TFAT), nodes traversed to
access file #25,215 = 25,215/8 = 3,151
* On a tree-based file system like Reliance Nitro, nodes
traversed to access file #25,215 = 3
* For cases where there are more than 17 files on the
device, a tree-based file system will perform better than a linear one (assumes
a 512 byte sector).
For more information see Achieving
Breakthrough Performance with Tree-based File Systems
Q: What are extent-based
file systems? How do they compare to block-based ones?
A: Block-based file systems allocate space in blocks which correspond directly
to the block architecture provided by the underlying block device driver.
Extent-based file systems allocate a set of blocks (called an extent) when
writing to a particular file. An extent consists of a data pair: a starting
location and the extent length.
Extent based file systems have 2 primary advantages:
1. Sequential I/O is improved because files are allocated
contiguously
2. Fragmentation is slower
Q: How does
Reliance enable fast boot times
A: Reliance has a unique transactional architecture that maintains two file
system metaroots (unlike most other file systems which just have one). One
metaroot points the known good state of the disk while the other points to the working
state. When mounting a Reliance partition, the OS only has to verify which
metaroot is pointing to the known good state and load that state. Because of
this patented architecture, mounting a Reliance partition is much faster than
other file systems.
Mount times significantly affect boot times, even more so if the boot image is
stored on the file system itself. Due to fast mount times, Reliance-based
devices boot faster than devices using other file systems.
Q: What do you mean by file system mount?
A: Mounting a file system consists of several tasks: accessing a raw storage
device, reading the superblock and other file system metadata, and then
preparing the file system for access to a volume. A part of this preparation is
verifying that the file system is valid. An alternate term for a valid file
system is a "clean" or "consistent" file system, meaning
that the metadata and the user data are consistent with each other. Full
verification of a file system can take a long time, especially if the
superblock indicates that the volume is "dirty” -- usually the result of
an unexpected power loss.
Un-mounting of a file system involves flushing all in-memory states associated
with the volume out to disk. Once all the in-memory data (data in RAM or other
non-volatile memory) is written to the volume, the volume is said to be
"clean." The last operation of un-mounting is marking the superblock
to indicate that a normal shutdown occurred.
Q: How does the Reliance
Family of file systems protect against data corruption?
A: Reliance Family file systems have a unique transactional architecture where
two file system metaroots are maintained (unlike most other file systems which
just have one). One metaroot points the known good state of the disk while the
other points to the working state. Reliance Family file systems never overwrite
live data; they always use free space for disk operations between transaction
points. As a result, one state of the disk (known good state) is always
reliable, no matter when power failure occurs. Because of this patented design,
Reliance family file systems will not allow the typical data corruption caused
by software issues on power loss.
Note: Reliance Family file systems do not protect against hardware failures.
Q: How do Reliance
Family file systems ensure that live data is never overwritten?
Reliance does not overwrite existing data blocks, allowing the previous state
of the file system to remain intact on the storage media during the current
write operation.
For example, when Reliance Family file systems overwrite only 3 bytes in 1 block,
the file system will reallocate the whole block.
Q: How many power cycle tests have you run on
Reliance? (MORE)
A: Our power cycle tests have been running for
months without causing any data corruption. As of September 2011, Reliance Nitro has been interupted over 20,000 times with zero data coruption.
Q: In
the event of a power failure, do blocks that were written to the media between
transaction points appear as used blocks to the file system, or will Reliance
Family file systems attempt to use them in future operations by treating them
as free blocks?
A: If the data is written to the file system between transaction points, and
power is lost (and there is no transaction point to commit the data that was
written), these areas of the disk will be considered "free" by
Reliance Family file systems as well, and they will eventually write to that
area of the disk.
Q: If there is
an area in which data is not fully written, is the area reused when creating a
new file, or is the area not reused until after it's been reformatted?
A: It is reused, because it is not part of the committed state on the disk,
therefore it isn't considered valid data by the file system.
Q: Do Reliance Family file
systems work media other than resident flash?
A: Yes. Reliance Family file systems are designed to be "media agnostic."
They work with any device that presents a block device interface and doesn’t make
assumptions about what file system is being used.
Q: Do Reliance
Family file systems work on SD/MMC, Disk-on-Chip, Hard Drives, Solid State
Drives?
A: Yes, Reliance Family file systems will work with any block device.
Q: Do Reliance and FlashFX
Family products require a 32-bit processor/RTOS, or can 16-bit work?
A: Our software can be ported to any 32-bit RTOS, and it can be ported to work
with 16-bit processor as well. Datalight products do require that the toolset
you use for building our code support 32-bit types, and 32-bit math. This requirement
applies even if you are porting them to work with 16-bit processors.
Q: Can a device use Reliance Family file systems along
with other file systems (like FAT)?
A: Yes; however the embedded operating system needs to provide support for FAT.
Reliance Family file systems do not provide FAT support.
Q:
Can I exchange data between a Reliance-formatted device and a PC?
A: Reliance Family file systems come with a Windows Driver (Reliance Windows
Driver, or RWD and Reliance Nitro Windows Driver, or RNWD) that allows full
exchangeability with Microsoft Windows 2000, Windows XP, Windows Vista, and
Windows 7 (32-bit) operating systems.
Exchangeability can also be enabled via the device OS, where the data between
the device and the PC is transferred over a file-system agnostic protocol (MTP,
for example). This allows Reliance Family file systems to be exchangeable with
any desktop OS (Mac, Linux, etc).
Q: What is the footprint of Reliance Family file
systems?
A: The memory footprint varies depending on the way Reliance Family file
systems are built and which components of the file system are enabled. The code
size will also vary depending on the target CPU. The best way for you to know
the memory footprint is to contact Datalight Sales and ask for an evaluation
copy of Reliance Family products.
Q: How large of a volume can
I support with Reliance Nitro? What is the max file size?
A: The following chart shows the maximum volume size for Reliance Nitro for
various block sizes.
Nitro Block Size Max Volume Size:
512 bytes 2 TB
1k 4 TB
2k 8TB
4k 16 TB
8k 32TB
Maximum file size is equal to the total amount of free space in the volume.
Q: What is the maximum path
length supported by Reliance Family file systems?
A: 1024
Q:
Can I use Reliance Nitro as root file system on Linux?
Absolutely! While the Reliance
file system was not capable of this, Reliance Nitro added system attributes to
enable this feature.
See our whitepaper on this topic: Bootstrapping Linux from NAND Flash
Q: How do I boot using Reliance Family file systems?
A: Included in the Reliance Family SDK’s is a utility called Datalight Loader which can be used with your bootloader to load boot images stored on any Reliance Family file system partition.
Q: What does the product cost? Is it available without royalties?
A: Datalight offers a variety of pricing models to fit within our customers’
preferred purchasing methods. Royalty-free, per unit, and annual lease options
are available. Please contact your Datalight representative for a specific
price quote for your project.
Q: Is Datalight
ISO 9001:2000 certified?
A: Datalight products undergo rigorous engineering unit testing and independent
quality assurance in accordance to our documented software development life
cycle process and procedures. While we are confident that our methodology and
results reflect best practices of our industry, Datalight has decided to invest
in further enhancement of our products rather than the infrastructure required
to obtain and maintain ISO certification. If ISO 9001:2000 certification became
a requirement for a critical mass of customers in the future, Datalight is
confident that certification can be achieved.
Reliance Nitro Datasheet