e333720166
On Mon, Jan 19, 2009 at 10:12:24AM -0800, Randy Dunlap (randy.dunlap@oracle.com) wrote: > > DST build fails when CONFIG_BLOCK=n: DST should depend on block and block device, in the original patch its kconfig entry was in the BLK_DEV menu, so this dependency was satisfied automatically. Should attached patch be pushed into drivers/staging? Reported-by: Randy Dunlap <randy.dunlap@oracle.com> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
68 lines
3.4 KiB
Plaintext
68 lines
3.4 KiB
Plaintext
config DST
|
|
tristate "Distributed storage"
|
|
depends on NET && CRYPTO && SYSFS && BLK_DEV
|
|
select CONNECTOR
|
|
---help---
|
|
DST is a network block device storage, which can be used to organize
|
|
exported storage on the remote nodes into the local block device.
|
|
|
|
DST works on top of any network media and protocol; it is just a matter
|
|
of configuration utility to understand the correct addresses. The most
|
|
common example is TCP over IP, which allows to pass through firewalls and
|
|
create remote backup storage in a different datacenter. DST requires
|
|
single port to be enabled on the exporting node and outgoing connections
|
|
on the local node.
|
|
|
|
DST works with in-kernel client and server, which improves performance by
|
|
eliminating unneded data copies and by not depending on the version
|
|
of the external IO components. It requires userspace configuration utility
|
|
though.
|
|
|
|
DST uses transaction model, when each store has to be explicitly acked
|
|
from the remote node to be considered as successfully written. There
|
|
may be lots of in-flight transactions. When remote host does not ack
|
|
the transaction it will be resent predefined number of times with specified
|
|
timeouts between them. All those parameters are configurable. Transactions
|
|
are marked as failed after all resends complete unsuccessfully; having
|
|
long enough resend timeout and/or large number of resends allows not to
|
|
return error to the higher (FS usually) layer in case of short network
|
|
problems or remote node outages. In case of network RAID setup this means
|
|
that storage will not degrade until transactions are marked as failed, and
|
|
thus will not force checksum recalculation and data rebuild. In case of
|
|
connection failure DST will try to reconnect to the remote node automatically.
|
|
DST sends ping commands at idle time to detect if remote node is alive.
|
|
|
|
Because of transactional model it is possible to use zero-copy sending
|
|
without worry of data corruption (which in turn could be detected by the
|
|
strong checksums though).
|
|
|
|
DST may fully encrypt the data channel in case of untrusted channel and implement
|
|
strong checksum of the transferred data. It is possible to configure algorithms
|
|
and crypto keys; they should match on both sides of the network channel.
|
|
Crypto processing does not introduce noticeble performance overhead, since DST
|
|
uses configurable pool of threads to perform crypto processing.
|
|
|
|
DST utilizes memory pool model of all its transaction allocations (it is the
|
|
only additional allocation on the client) and server allocations (bio pools,
|
|
while pages are allocated from the slab).
|
|
|
|
At startup DST performs a simple negotiation with the export node to determine
|
|
access permissions and size of the exported storage. It can be extended if
|
|
new parameters should be autonegotiated.
|
|
|
|
DST carries block IO flags in the protocol, which allows to transparently implement
|
|
barriers and sync/flush operations. Those flags are used in the export node where
|
|
IO against the local storage is performed, which means that sync write will be sync
|
|
on the remote node too, which in turn improves data integrity and improved resistance
|
|
to errors and data corruption during power outages or storage damages.
|
|
|
|
Homepage: http://www.ioremap.net/projects/dst
|
|
Userspace configuration utility and the latest releases: http://www.ioremap.net/archive/dst/
|
|
|
|
config DST_DEBUG
|
|
bool "DST debug"
|
|
depends on DST
|
|
---help---
|
|
This option will enable HEAVY debugging of the DST.
|
|
Turn it on ONLY if you have to debug some really obscure problem.
|