-
Notifications
You must be signed in to change notification settings - Fork 17
WDRBD Porting Report
DRBD is a block-level disk replication software for Linux has been developed by Linbit company. This product has a high reputation in the storage replication world. Many Linux users use this product. It provides the disk mirroring as network based raid-1.
On Windows market, there is no such similar replication products with free. DRBD is open source with a GNU license. So, We have ported the DRBD for Windows version more than 2 years investing a lot of development costs. Hereafter we call this program WDRBD. WDRBD supports most of the features of the Linux DRBD and maintained compatibility. It provides a robust replication solution for Windows users . It can cooperate with various HA or cluster software on Windows. In particular, It can cooperate with MCCS (www.mantech.co.kr) which is famous HA Cluster in Asian.
WDRBD source complies with the existing open source philosophy. We will continue to develop as an open source also. DRBD 8.4.3 support only 2 Node Cluster, DRBD 9.0 support 1:N replication topology and we have ported DRBD 9.0 to WDRBD 1.0. WDRBD will give a fresh impact on Windows Replication Markets.
The main components of the WDRBD architectures consist of volume filter driver, engine and CLI. The volume filter driver is installed between Filesystem (NTFS / ReFS) and Volume Manger. This filter driver hooks the Local I/O and passes the block to the replication engine. And then engine requests this block I/O to transfer to the network or to the local disk. The CLI is communicating with the engine with Windows socket like a Linux netlink program . This architectures are equally applicable in the windows from desktop to server operation system.
We are focused on compatibility and stability than on porting all DRBD features. Therefore, the functions which importance is not high are not included in the current version . Ported Windows platforms will vary as follows: Windows 7, 8, 2008R2, 2012R2 include 32bit/64bit
Important porting issues are as follows:
- Windows upper volume filter driver
- Supports sched() primitive
- I/O requests over 1MB size
- Windows Kernel Socket
- TCP send buffering for congestion pull-ahead mode
- Netlink for Windows
our concern is read/write Block I/O for Disk. Windows Block I/O is described with IRP(I/O Request Packet), and the size of block I/O(IRP) is different with Linux BIO. actually, Linux BIO's data block size is maximum 1 MB, but Windows's Block I/O size is over 1 MB. and then we should split Windows Block I/O because a submitting BIO to DRBD engine is maximum 1MB .
A Block I/O(IRP) is dispatched to Volume Upper Filter's I/O dispatch routines. A Dispatched IRP is queued to volume's queue sequentially, dequeued it at volume thread worker, and finally delivered to DRBD engine.(DRBD engine's entry is drbd_make_request) the following picture describes a local Block I/O flow in WDRBD.
- Fast initial fullsync(excepting NTFS unused free block)
- Supports Windows HA cluster