Upgrading a Samba AD DC

From SambaWiki
Revision as of 05:52, 12 September 2019 by Timbeale (talk | contribs) (Update to not recommend DC rejoins as an upgrade strategy (after feedback from Samba team))

Run the following steps when you are updating a Samba Active Directory (AD) domain controller (DC).

Before you upgrade

  • Read the release notes of skipped versions. They contain important information, such as new features, changed parameter, and bug fixes. In case you switch to new major release, read the release notes of the initial version (x.y.0) and the ones from minor versions up to the new version you will update to. For example, if you update from 4.4.4 to 4.6.2, read the 4.5.0, 4.6.0, 4.6.1, and 4.6.2 release notes.
  • Get the latest version of Samba:
    • If you compile Samba from the sources, use the same configure options as used for your previous version. For more information, see Build Samba From the Sources.
    • If you update using packages, read the distribution documentation for information how to update.
  • Avoid making changes to the AD directory during the upgrade. Administrators should refrain from adding users or changing group memberships while the upgrade is taking place. While it's difficult to prevent users from changing their passwords, you can schedule the Samba upgrade for a low-use time of day.

Upgrading in-place

Run the following steps:

  • Stop all Samba services.
  • Install the latest packages over your existing ones.
  • Start the samba daemon.
  • Check your Samba log files for errors.
  • Test the Samba services work on your updated installation, e.g. verify users can login successfully via the upgraded DC.

This approach works best for moving between minor Samba releases (e.g. from v4.10.5 to v4.10.6).

Updating Multiple Samba Domain Controllers

If you are updating multiple Samba AD DCs, it's recommended to mitigate the risk of data loss by following this process:

  • Start Samba on the updated DC.
  • Verify that the directory replication between all DCs is working correctly using: samba-tool drs showrepl
  • Test the installation to ensure that the new version works correctly.
  • Upgrade all other Samba DCs one at a time, with those holding FSMO roles last, and always verify that the replication is working correctly.

This method ensures that if any of the DCs have issues with the new version, you can find out with a joined DC rather than the master. If the issue can't be fixed easily, you can return to an earlier version on the joined DC without network downtime or risk of data loss.

Rejoining the upgraded DC

Rejoining the upgraded DC has some benefits for your AD database over in-place upgrades. This approach requires having at least two active DCs in your domain (which is also recommended for redundancy, in case of failure). This is the most reliable approach for AD database compatibility. The steps are similar to upgrading in place, with a few extra steps to rejoin the DC. The process is:

  • Check the outbound replication on the DC is up-to-date. You can either verify the replication status or force a replication to the peer DC using the 'samba-tool drs replicate' command.
  • Stop all Samba services.
  • Install the latest packages over your existing ones.
  • Run the samba-tool domain join <realm> dc command to rejoin the upgraded DC to the domain. This uses DRS replication to completely rebuild the DC's local database.
    • Try to use the same command options as you did when you originally joined the DC.
  • Start the samba daemon.
  • Check your Samba log files for errors.
  • Test your updated installation, e.g. verify users can login successfully.


If you need to downgrade between major Samba releases (e.g. v4.11 to v4.10) please read Downgrading an Active Directory DC carefully.

Samba AD DC Database Check

The samba-tool dbcheck utility enables you to detect and fix problems in the Samba AD database. It's worth running dbcheck on each DC after you have upgraded the Samba packages and restarted the samba executable. Use the --cross-ncs option to make sure you check each partition in the database.

For example, a previous Samba version may have stored an attribute incorrectly and the updated version fixes the problem. However, you must run dbcheck manually on each DC in order to find and fix any such problems.

For more details on running the tool, refer to the dbcheck page.