nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ pkgs, ... }:
2
3let
4 master =
5 { pkgs, ... }:
6 {
7 # data base is stored in memory
8 # server crashes with default memory size
9 virtualisation.memorySize = 1024;
10
11 services.moosefs.master = {
12 enable = true;
13 openFirewall = true;
14 autoInit = true;
15 exports = [
16 "* / rw,alldirs,admin,maproot=0:0"
17 "* . rw"
18 ];
19 };
20 };
21
22 chunkserver =
23 { pkgs, ... }:
24 {
25 virtualisation.emptyDiskImages = [ 4096 ];
26 boot.initrd.postDeviceCommands = ''
27 ${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb
28 '';
29
30 fileSystems = pkgs.lib.mkVMOverride {
31 "/data" = {
32 device = "/dev/disk/by-label/data";
33 fsType = "ext4";
34 };
35 };
36
37 services.moosefs = {
38 masterHost = "master";
39 chunkserver = {
40 openFirewall = true;
41 enable = true;
42 hdds = [ "~/data" ];
43 };
44 };
45 };
46
47 metalogger =
48 { pkgs, ... }:
49 {
50 services.moosefs = {
51 masterHost = "master";
52 metalogger.enable = true;
53 };
54 };
55
56 client =
57 { pkgs, ... }:
58 {
59 services.moosefs.client.enable = true;
60 };
61
62in
63{
64 name = "moosefs";
65
66 nodes = {
67 inherit master;
68 inherit metalogger;
69 chunkserver1 = chunkserver;
70 chunkserver2 = chunkserver;
71 client1 = client;
72 client2 = client;
73 };
74
75 testScript = ''
76 # prepare master server
77 master.start()
78 master.wait_for_unit("multi-user.target")
79 master.wait_for_unit("mfs-master.service")
80
81 metalogger.wait_for_unit("mfs-metalogger.service")
82
83 for chunkserver in [chunkserver1, chunkserver2]:
84 chunkserver.wait_for_unit("multi-user.target")
85 chunkserver.succeed("chown moosefs:moosefs /data")
86 chunkserver.succeed("systemctl restart mfs-chunkserver")
87 chunkserver.wait_for_unit("mfs-chunkserver.service")
88
89 for client in [client1, client2]:
90 client.wait_for_unit("multi-user.target")
91 client.succeed("mkdir /moosefs")
92 client.succeed("mount -t moosefs master:/ /moosefs")
93
94 client1.succeed("echo test > /moosefs/file")
95 client2.succeed("grep test /moosefs/file")
96 '';
97}