mdadm: cannot be set as devname. Reason: Not POSIX compatible

If you are also affected by this warning from the MD subsystem, then take a look at this example to see how you can permanently disable this warning.

With Debian 13, mdadm now enforces POSIX-compliant device names for RAID arrays. Many older RAID arrays (metadata version 1.x) store their name internally in the form hostname:array (for example nas:md0). While Linux filesystems allow colons in filenames, POSIX standards do not. Debian 13 therefore refuses to use such names when creating block device nodes.

When this happens:

  • mdadm ignores the stored array name
  • the RAID is still assembled correctly using its UUID
  • a warning is printed to explain why the name was skipped

This is an intentional change aimed at improving portability, scripting safety, and long-term compatibility. The RAID itself is not damaged or misconfigured; only the legacy naming scheme is affected.

The following example shows how a RAID5 based on 3 drives is modified.

root@omv8box:/# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid4] [raid5] [raid6] [raid10]
md127 : active (auto-read-only) raid5 vdd[2] vdb[0] vdc[1]
      2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>

root@omv8box:/# mdadm --detail --scan
mdadm: Value "omv8box:0" cannot be set as devname. Reason: Not POSIX compatible. Value ignored.
ARRAY /dev/md/omv8box:0 metadata=1.2 UUID=6b4e1273:61deb387:90439348:6acaeae0

root@omv8box:/# mdadm --stop /dev/md127
mdadm: Value "omv8box:0" cannot be set as devname. Reason: Not POSIX compatible. Value ignored.
mdadm: stopped /dev/md127

root@omv8box:/# mdadm --assemble --update=name --name=md0 /dev/md0 /dev/vdb /dev/vdc /dev/vdd
mdadm: Value "omv8box:0" cannot be set as devname. Reason: Not POSIX compatible. Value ignored.
mdadm: /dev/md0 has been started with 3 drives.

root@omv8box:/# mdadm --detail --scan
mdadm: Value "omv8box:0" cannot be set as devname. Reason: Not POSIX compatible. Value ignored.
ARRAY /dev/md0 metadata=1.2 UUID=6b4e1273:61deb387:90439348:6acaeae0

root@omv8box:/# omv-salt deploy run mdadm

root@omv8box:/# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 UUID=6b4e1273:61deb387:90439348:6acaeae0

OMV8 (Synchrony) released

Since no critical errors were reported during the RC phase, it is now time to release the final version (8.0.1) of OMV8 (Synchrony). Due to technical reasons, only AMD64 and ARM64 architectures will be supported from this version onwards. Since this circumstance had been known for some time, many features planned for OMV8 were already implemented in OMV7 so that the discontinued architectures could also benefit from them. That’s why the list of new features in OMV8 is quite concise. Nevertheless, switching to Debian 13 offers newer software, bug fixes, and improvements.

The CHANGELOG will list all improvements in this version alongside the following:

  • Upgrade to Debian 13 (Trixie).
  • Replace cpufrequtils with linux-cpupower.
  • Improve several user and group related RPCs. Developers should note that the RPCs UserMgmt::enumerateSystemUsers, UserMgmt::enumerateUsers, UserMgmt::enumerateAllUsers and UserMgmt::getUserList now return only basic user information. Set the parameter detail to full to get more detailed user information. This API change was done to improve the RPC response times dramatically.
  • Display updated modules in notification after configuration changes have been applied.
  • Display old versions of upgradable packages on the update page.
  • Use pool instead of server directive in chrony configuration by default. This can be customized via the OMV_CHRONY_SERVER_POOL_DIRECTIVE environment variable.
  • Many other improvements.
  • Issue #1737 and #1866: Add support for WPA3 (SAE) authentication for wireless connections.
  • Issue #2066: Prevent scripts/tools from getting stuck when calling mail/sendmail if email notifications are disabled.
  • Issue #1555: Add ability to SMB shares to limit the reported disk size for Time Machine.

You can download the ISO image for AMD64 based systems here. Please upgrade the system via omv-upgrade after the installation to get the latest package versions. Additionally to the ISO installation you can install OMV on a Debian 13 based system according to the documentation. OMV7 based systems can be upgraded via the omv-release-upgrade command line tool.

If you find any bugs, please report them here. Issues related to omv-extras.org plugins should be reported here.

New updates available

openmediavault-clamav 7.0.3

  • Issue #1961: Fix logrotate configuration issue.

openmediavault-k8s 7.4.7

  • Add button to display the recipe README.

owntone and paperless-ngx are available as openmediavault-k8s recipe

Two new recipes for the owntone and paperless-ngx apps have been released to the openmediavault-k8s-recipes GitHub repository. You can get them after updating the recipes list in your openmediavault-k8s plugin.

The following list of applications is now available:

  • filebrowser
  • immich
  • jellyfin
  • minio
  • owntone
  • paperless-ngx
  • photoprism
  • plex-media-server
  • wetty

Contributions from the community are welcome to increase the number of recipes.

Make use of the DSL in the openmediavault-k8s plugin

The recipe editor of the openmediavault-k8s has a DSL (Domain Specific Language) that supports the user in getting specific information from their openmediavault host system in Kubernetes manifests.

The following functions are currently available:

  • hostname() – Get the hostname of the host.
  • domain() – Get the domain name of the host.
  • fqdn() – Get the FQDN of the host.
  • ipaddr(name=NULL) – Get the IPv4 address of the specified network interface. If not set, the IPv4 address of the interface of the first default route is used.
  • ipaddr6(name=NULL) – Get the IPv6 address of the specified network interface. If not set, the IPv6 address of the interface of the first default route is used.
  • uid(name) – Get the UID of the specified user.
  • gid(name) – Get the GID of the specified group.
  • sharedfolder_path(name) – Get the full path of the specified shared folder.
  • conf_get(id, uuid=NULL) – Get the specified database configuration object.
  • tz() – Get the time zone of the host.

The following filters are currently available:

  • get(key, default=NULL) – Get the specified key, e.g. foo.bar.baz from a dictionary.

For the built-in features of the used template engine please have a look here:

Here are several examples that make use of the DSL:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/instance: wetty
    app.kubernetes.io/name: wetty
  name: wetty
  namespace: wetty-app
spec:
  ...
  template:
    ...
    spec:
      containers:
        - image: docker.io/wettyoss/wetty:latest
          imagePullPolicy: IfNotPresent
          name: wetty
          ports:
            - containerPort: 3000
          securityContext:
            runAsNonRoot: true
            runAsUser: {{ uid('nobody') }}
            runAsGroup: {{ gid('nogroup') }}
          args:
            - "--port=3000"
            - "--base=/"
            - "--force-ssh"
            - "--ssh-port={{ conf_get('conf.service.ssh') | get('port') }}"
            - "--ssh-host={{ hostname() }}"
      restartPolicy: Always
...
persistence:
    import:
        enabled: true
        type: hostPath
        readOnly: true
        mountPath: /srv/import
        hostPath: {{ sharedfolder_path('images') }}
        hostPathType: Directory
apiVersion: v1
kind: PersistentVolume
metadata:
  name: config-dir
  labels:
    app.kubernetes.io/instance: plex-media-server
    app.kubernetes.io/name: plex-media-server
spec:
  storageClassName: shared-folder
  capacity:
    storage: 2Gi
  hostPath:
    path: {{ sharedfolder_path('media') }}
    type: Directory
  accessModes:
    - ReadWriteMany
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: immich-websecure
  namespace: immich-app
  ...
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`immich.{{ ipaddr() }}.sslip.io`)
      kind: Rule
      services:
        - name: immich-server
          port: 3001