This time it’s no April Fools’ joke: LINBIT is porting its flagship technology, the DRBD software, to the Microsoft Windows platforms.

Linux inside …

To achieve that while still being able to support the latest DRBD 9 features, a Linux kernel emulation layer has been designed and implemented. This layer allows us to use the original DRBD 9 sources nearly unchanged. The currently (January 2019) supported DRBD 9 version is 9.0.16 (which is the same patchlevel as the Linux version). Future versions of WinDRBD will track Linux DRBD releases with only a few days offset. Download WinDRBD. Please note that WinDRBD is currently in beta being tech reviewed and is not currently supported.

… the Windows Kernel

On the Windows side, the Windows Driver Model API (WDM) is used. This allows us to support older Windows versions, like Windows 7 Service Pack 1 (in theory, even ReactOS should work one day). Of course this is upward compatible, so, yes this also works with Windows 10, Windows Server 2016 and other releases of Windows Desktop or Server operating systems. Unlike Microsoft’s Storage Spaces Direct which is tied to the Server edition only.

Obtaining WinDRBD

We are proud to announce that WinDRBD is available as part of a public beta program and can be downloaded from our Website. An graphical inno-setup based installer helps getting started with WinDRBD. Also available for download, the WinDRBD tech guide describes how to create a 2-node replicated block device setup with WinDRBD. Exactly as with the Linux version, you will have to edit some configuration files (the drbd.conf) to define your DRBD resources and their parameters. With exception of the drive letter syntax (which obviously doesn’t exist on Linux), the configuration file format is exactly the same as in the Linux version of DRBD, so if you know DRBD for Linux, you will promptly feel at home.

Current Status as of January 2019

As of January 2019, most core features of WinDRBD work just the same way as they do with the Linux version. This includes:

  • Online data replication
  • Resync
  • Connect to Windows or Linux DRBD
  • Separate block device for WinDRBD and backing storage
  • Diskless operation
  • Proper handling of I/O and network failures
  • NTFS file system on top of WinDRBD device (others will follow)
  • Driver can be loaded and unloaded without reboot
  • (Almost) complete support of all drbdadm, drbdsetup and drbdmeta
    commands
  • Internal metadata
  • User mode helpers (via cmd.exe, bash or PowerShell)
  • Windows UI compliant installer (inno-setup based)

We are working currently to complete porting the features still missing:

  • 3 (and more) node setups (coming soon)
  • Using System volume (C:) as WinDRBD device (for a diskless client booted via iPXE)
  • File systems other than NTFS
  • Cosmetic changes to installer (currently C:\windrbd is hardcoded for the configuration files, also installer requires a reboot on upgrade or uninstall)
  • drbdadm wait-for family of commands (though drbdsetup events2 works)
  • Online verify
  • Auto promote
  • TRIM/discard requests
  • Online resize
  • LINSTOR integration
  • and some others like debugfs or network and disk statistics

In addition we are working on integration with various cluster managers (like Microsoft cluster manager that comes with the Server operating systems)

We expect a 1.0 release later this year. You can help developing WinDRBD by using and testing it or simply let us know which features are most important to you.

All fine. But what can I do with WinDRBD?

DRBD and hence also WinDRBD is a block device level replication level that sits under the file system layer. It mirrors data:

  • Transparently: Applications (and also the file system) do not have to be modified to support the replication.
  • On line: Data is replicated in real time while data is written by the application.
  • Should one node be offline, it will be synchronized by DRBD automatically once it comes up again.


So it suits perfect for everything that requires high availability (HA) services, including:

  • A Windows based file server for small or medium sized businesses:  Keep your mission critical files redundant and highly available. Should one server fail due to a hardware or software fault, data is still available from the mirror server. This happens transparently to the application.
  • A Windows based database server: Some database technologies still run better on Windows than on Linux (such as Microsoft SQL server): your applications can access data of the database server that is protected against a hardware or software failure of one node.
  • Add high availability to your legacy applications: Since WinDRBD is transparent to the application you can, if you still need those, add high availability to your (for example) Access database based application with WinDRBD.
  • In addition, WinDRBD might be suited for virtualization (Hyper-V) on Windows as DRBD is suited for virtualization on Linux with KVM and XEN. It is too early for us to tell for sure. In case it works it would bring transparent HA to the the virtual storage devices for virtual machines, including support for live migration.


Last but not least, in the near future, you can use WinDRBD on your clients for a diskless client setup. You can boot your Windows clients via iPXE, including the WinDRBD driver and WinDRBD provides the system volume (C: in most cases) from remote DRBD servers (this may also be a Linux based DRBD, since WinDRBD is wire compatible with its Linux cousin).

Conclusion

With WinDRBD, LINBIT brings the advantages of a seasoned software defined storage solution to the Microsoft Windows platform. Both DRBD and WinDRBD are Open Source licensed under the GNU General Public License (GPL). With wide support for Microsoft Windows platforms, a multitude of applications can be built around WinDRBD. Future developments, like LINSTOR and Microsoft cluster manager integration as well as diskless client support will widen the possible areas of application and thanks to LINSTOR, administration of WinDRBD resources will be just as easy as with the Linux version of DRBD.

 

Johannes Thoma
Software developer
Johannes Thoma is a freelance software developer with 20+ years of experience in the industry. He specializes on systems programming, including but not limited to Linux Kernel programming. Past projects include a real-time capable image chain for a medical X-Ray device as well as an early version of DRBD proxy. Johannes also plays Jazz Piano on a professional level and can be heard on Jam Sessions all over the world, including the Smalls in New York or the B flat in Berlin.