Commit | Line | Data |
---|---|---|
9539bec7 EP |
1 | config DST |
2 | tristate "Distributed storage" | |
e3337201 | 3 | depends on NET && CRYPTO && SYSFS && BLK_DEV |
9539bec7 | 4 | select CONNECTOR |
9539bec7 EP |
5 | ---help--- |
6 | DST is a network block device storage, which can be used to organize | |
e5f753a5 | 7 | exported storage on the remote nodes into the local block device. |
9539bec7 | 8 | |
e5f753a5 | 9 | DST works on top of any network media and protocol; it is just a matter |
9539bec7 | 10 | of configuration utility to understand the correct addresses. The most |
e5f753a5 EP |
11 | common example is TCP over IP, which allows to pass through firewalls and |
12 | create remote backup storage in a different datacenter. DST requires | |
9539bec7 EP |
13 | single port to be enabled on the exporting node and outgoing connections |
14 | on the local node. | |
15 | ||
e5f753a5 EP |
16 | DST works with in-kernel client and server, which improves performance by |
17 | eliminating unneded data copies and by not depending on the version | |
9539bec7 EP |
18 | of the external IO components. It requires userspace configuration utility |
19 | though. | |
20 | ||
21 | DST uses transaction model, when each store has to be explicitly acked | |
22 | from the remote node to be considered as successfully written. There | |
23 | may be lots of in-flight transactions. When remote host does not ack | |
24 | the transaction it will be resent predefined number of times with specified | |
25 | timeouts between them. All those parameters are configurable. Transactions | |
e5f753a5 | 26 | are marked as failed after all resends complete unsuccessfully; having |
9539bec7 EP |
27 | long enough resend timeout and/or large number of resends allows not to |
28 | return error to the higher (FS usually) layer in case of short network | |
29 | problems or remote node outages. In case of network RAID setup this means | |
30 | that storage will not degrade until transactions are marked as failed, and | |
31 | thus will not force checksum recalculation and data rebuild. In case of | |
32 | connection failure DST will try to reconnect to the remote node automatically. | |
33 | DST sends ping commands at idle time to detect if remote node is alive. | |
34 | ||
35 | Because of transactional model it is possible to use zero-copy sending | |
36 | without worry of data corruption (which in turn could be detected by the | |
37 | strong checksums though). | |
38 | ||
39 | DST may fully encrypt the data channel in case of untrusted channel and implement | |
40 | strong checksum of the transferred data. It is possible to configure algorithms | |
e5f753a5 | 41 | and crypto keys; they should match on both sides of the network channel. |
9539bec7 EP |
42 | Crypto processing does not introduce noticeble performance overhead, since DST |
43 | uses configurable pool of threads to perform crypto processing. | |
44 | ||
45 | DST utilizes memory pool model of all its transaction allocations (it is the | |
46 | only additional allocation on the client) and server allocations (bio pools, | |
47 | while pages are allocated from the slab). | |
48 | ||
49 | At startup DST performs a simple negotiation with the export node to determine | |
50 | access permissions and size of the exported storage. It can be extended if | |
51 | new parameters should be autonegotiated. | |
52 | ||
53 | DST carries block IO flags in the protocol, which allows to transparently implement | |
54 | barriers and sync/flush operations. Those flags are used in the export node where | |
55 | IO against the local storage is performed, which means that sync write will be sync | |
56 | on the remote node too, which in turn improves data integrity and improved resistance | |
57 | to errors and data corruption during power outages or storage damages. | |
58 | ||
59 | Homepage: http://www.ioremap.net/projects/dst | |
60 | Userspace configuration utility and the latest releases: http://www.ioremap.net/archive/dst/ | |
61 | ||
62 | config DST_DEBUG | |
63 | bool "DST debug" | |
64 | depends on DST | |
65 | ---help--- | |
e5f753a5 | 66 | This option will enable HEAVY debugging of the DST. |
9539bec7 | 67 | Turn it on ONLY if you have to debug some really obscure problem. |