l drbd: use drbd9
This commit is contained in:
parent
b726b7588d
commit
32b23666d1
@ -64,13 +64,42 @@ in {
|
||||
services.udev.packages = [ pkgs.drbd ];
|
||||
boot.kernelModules = [ "drbd" ];
|
||||
|
||||
environment.systemPackages = [ pkgs.drbd ];
|
||||
environment.systemPackages = [
|
||||
pkgs.drbd
|
||||
(pkgs.writers.writeDashBin "drbd-change-nodeid" ''
|
||||
# https://linbit.com/drbd-user-guide/drbd-guide-9_0-en/#s-using-truck-based-replication
|
||||
set -efux
|
||||
|
||||
if [ "$#" -ne 2 ]; then
|
||||
echo '$1 needs to be drbd volume name'
|
||||
echo '$2 needs to be new node id'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf $TMPDIR' EXIT
|
||||
|
||||
V=$1
|
||||
NODE_TO=$2
|
||||
META_DATA_LOCATION=internal
|
||||
|
||||
${pkgs.drbd}/bin/drbdadm -- --force dump-md $V > "$TMPDIR"/md_orig.txt
|
||||
NODE_FROM=$(cat "$TMPDIR"/md_orig.txt | ${pkgs.gnused}/bin/sed -n 's/^node-id \(.*\);$/\1/p')
|
||||
${pkgs.gnused}/bin/sed -e "s/node-id $NODE_FROM/node-id $NODE_TO/" \
|
||||
-e "s/^peer.$NODE_FROM. /peer-NEW /" \
|
||||
-e "s/^peer.$NODE_TO. /peer[$NODE_FROM] /" \
|
||||
-e "s/^peer-NEW /peer[$NODE_TO] /" \
|
||||
< "$TMPDIR"/md_orig.txt > "$TMPDIR"/md.txt
|
||||
|
||||
drbdmeta --force $(drbdadm sh-minor $V) v09 $(drbdadm sh-md-dev $V) $META_DATA_LOCATION restore-md "$TMPDIR"/md.txt
|
||||
'')
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = map (device: device.port) (lib.attrValues cfg);
|
||||
systemd.services = lib.mapAttrs' (_: device:
|
||||
lib.nameValuePair "drbd-${device.name}" {
|
||||
after = [ "systemd-udev.settle.service" "network.target" ];
|
||||
after = [ "systemd-udev.settle.service" "network.target" "retiolum.service" ];
|
||||
wants = [ "systemd-udev.settle.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
@ -88,7 +117,7 @@ in {
|
||||
''}
|
||||
if ! ${pkgs.drbd}/bin/drbdadm adjust ${device.name}; then
|
||||
${pkgs.drbd}/bin/drbdadm down ${device.name}
|
||||
${pkgs.drbd}/bin/drbdadm create-md ${device.name}
|
||||
${pkgs.drbd}/bin/drbdadm create-md ${device.name}/0 --max-peers 31
|
||||
${pkgs.drbd}/bin/drbdadm up ${device.name}
|
||||
fi
|
||||
'';
|
||||
|
35
lass/5pkgs/drbd9/default.nix
Normal file
35
lass/5pkgs/drbd9/default.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ lib, stdenv, git, fetchzip, fetchFromGitHub, kernel }: let
|
||||
|
||||
version = "9.1.7";
|
||||
|
||||
in stdenv.mkDerivation {
|
||||
pname = "drbd";
|
||||
version = "${kernel.version}-${version}";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://pkg.linbit.com//downloads/drbd/9/drbd-9.1.7.tar.gz";
|
||||
sha256 = "sha256-JsbtOrqhZkG7tFEc6tDmj3RlxZggl0HOKfCI8lYtQok=";
|
||||
};
|
||||
# src = fetchFromGitHub {
|
||||
# owner = "LINBIT";
|
||||
# repo = "drbd";
|
||||
# rev = "drbd-${version}";
|
||||
# sha256 = "sha256-8HAt+k0yi6XsZZ9mkVCQkv2pn65o3Zsa0KwTSBJh0yY=";
|
||||
# leaveDotGit = true;
|
||||
# };
|
||||
|
||||
nativeBuildInputs = [ git ] ++ kernel.moduleBuildDependencies;
|
||||
|
||||
# hardeningDisable = [ "pic" ];
|
||||
|
||||
makeFlags = kernel.makeFlags ++ [
|
||||
"KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
install -D drbd/drbd.ko -t "$out/lib/modules/${kernel.modDirVersion}/updates/"
|
||||
install -D drbd/drbd_transport_tcp.ko -t "$out/lib/modules/${kernel.modDirVersion}/updates/"
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
}
|
Loading…
Reference in New Issue
Block a user