Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-27818

Disk plugin does not show zpool mounted devices

Details

    Description

      The plugin code wrongly filter devices not starting with a /. A much better solution would be filtering the mount point to enable pool devices to be reported /proc /dev /sys /run /etc can be removed as a monitoring solution should focus only on data & log & tmp directories that would not be mounted in such POSIX listed directory

      Attachments

        Activity

          danblack Daniel Black added a comment - - edited

          zulip example

          data/db1.bench.vol.cloud18 /docker-entrypoint-initdb.d zfs rw,relatime,xattr,noacl 0 0
          data/db1.bench.vol.cloud18 /etc/mysql zfs rw,relatime,xattr,noacl 0 0
          data/db1.bench.vol.cloud18 /run/mysqld zfs rw,relatime,xattr,noacl 0 0
          /dev/md127 /usr/share/zoneinfo/Etc/UTC ext4 ro,relatime 0 0
          /dev/zd0 /etc/resolv.conf ext4 rw,relatime,stripe=2 0 0
          /dev/zd0 /etc/hostname ext4 rw,relatime,stripe=2 0 0
          /dev/zd0 /etc/hosts ext4 rw,relatime,stripe=2 0 0
          data/db1.bench.vol.cloud18/data /var/lib/mysql zfs rw,relatime,xattr,noacl 0 0
          data/db1.bench.vol.cloud18/tmp /var/lib/mysql/.system/tmp zfs rw,relatime,xattr,noacl 0 0
          data/db1.bench.vol.cloud18/binlog /var/lib/mysql/.system/repl zfs rw,relatime,xattr,noacl 0 0
          data/db1.bench.vol.cloud18/redo /var/lib/mysql/.system/innodb/redo zfs rw,relatime,xattr,noacl 0 0
          

          $ podman run --rm mariadb mount
          fuse-overlayfs on / type fuse.fuse-overlayfs (rw,noatime,user_id=0,group_id=0,default_permissions,allow_other)
          sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime,seclabel)
          tmpfs on /dev type tmpfs (rw,nosuid,context="system_u:object_r:container_file_t:s0:c336,c955",size=65536k,mode=755,uid=1000,gid=1000,inode64)
          proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
          tmpfs on /etc/hostname type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64)
          mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime,seclabel)
          shm on /dev/shm type tmpfs (rw,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=64000k,uid=1000,gid=1000,inode64)
          devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",gid=100004,mode=620,ptmxmode=666)
          tmpfs on /run/.containerenv type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64)
          tmpfs on /run/secrets type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64)
          tmpfs on /etc/resolv.conf type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64)
          tmpfs on /etc/hosts type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64)
          cgroup2 on /sys/fs/cgroup type cgroup2 (ro,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot)
          /dev/mapper/fedora_localhost--live-home on /var/lib/mysql type ext4 (rw,nosuid,nodev,relatime,seclabel)
          devtmpfs on /dev/null type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /dev/zero type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /dev/full type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /dev/tty type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /dev/random type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /dev/urandom type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          tmpfs on /proc/acpi type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64)
          devtmpfs on /proc/kcore type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /proc/keys type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /proc/latency_stats type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          devtmpfs on /proc/timer_list type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64)
          tmpfs on /proc/scsi type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64)
          tmpfs on /sys/firmware type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64)
          tmpfs on /sys/fs/selinux type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64)
          tmpfs on /sys/dev/block type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64)
          proc on /proc/asound type proc (ro,relatime)
          proc on /proc/bus type proc (ro,relatime)
          proc on /proc/fs type proc (ro,relatime)
          proc on /proc/irq type proc (ro,relatime)
          proc on /proc/sys type proc (ro,relatime)
          proc on /proc/sysrq-trigger type proc (ro,relatime)
          

          The df mechanism ref, df's filtering mechanism seems a little too elaborate.

          So if instead of ^/ inclusive filtering, if start by excluding:

          • ro mounts
          • mount points that aren't a directory (i.e. files and devices)
          • /proc and /sys

          Anything else?

          danblack Daniel Black added a comment - - edited zulip example data/db1.bench.vol.cloud18 /docker-entrypoint-initdb.d zfs rw,relatime,xattr,noacl 0 0 data/db1.bench.vol.cloud18 /etc/mysql zfs rw,relatime,xattr,noacl 0 0 data/db1.bench.vol.cloud18 /run/mysqld zfs rw,relatime,xattr,noacl 0 0 /dev/md127 /usr/share/zoneinfo/Etc/UTC ext4 ro,relatime 0 0 /dev/zd0 /etc/resolv.conf ext4 rw,relatime,stripe=2 0 0 /dev/zd0 /etc/hostname ext4 rw,relatime,stripe=2 0 0 /dev/zd0 /etc/hosts ext4 rw,relatime,stripe=2 0 0 data/db1.bench.vol.cloud18/data /var/lib/mysql zfs rw,relatime,xattr,noacl 0 0 data/db1.bench.vol.cloud18/tmp /var/lib/mysql/.system/tmp zfs rw,relatime,xattr,noacl 0 0 data/db1.bench.vol.cloud18/binlog /var/lib/mysql/.system/repl zfs rw,relatime,xattr,noacl 0 0 data/db1.bench.vol.cloud18/redo /var/lib/mysql/.system/innodb/redo zfs rw,relatime,xattr,noacl 0 0 $ podman run --rm mariadb mount fuse-overlayfs on / type fuse.fuse-overlayfs (rw,noatime,user_id=0,group_id=0,default_permissions,allow_other) sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime,seclabel) tmpfs on /dev type tmpfs (rw,nosuid,context="system_u:object_r:container_file_t:s0:c336,c955",size=65536k,mode=755,uid=1000,gid=1000,inode64) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) tmpfs on /etc/hostname type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64) mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime,seclabel) shm on /dev/shm type tmpfs (rw,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=64000k,uid=1000,gid=1000,inode64) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",gid=100004,mode=620,ptmxmode=666) tmpfs on /run/.containerenv type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64) tmpfs on /run/secrets type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64) tmpfs on /etc/resolv.conf type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64) tmpfs on /etc/hosts type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=1608208k,nr_inodes=402052,mode=700,uid=1000,gid=1000,inode64) cgroup2 on /sys/fs/cgroup type cgroup2 (ro,nosuid,nodev,noexec,relatime,seclabel,nsdelegate,memory_recursiveprot) /dev/mapper/fedora_localhost--live-home on /var/lib/mysql type ext4 (rw,nosuid,nodev,relatime,seclabel) devtmpfs on /dev/null type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /dev/zero type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /dev/full type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /dev/tty type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /dev/random type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /dev/urandom type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) tmpfs on /proc/acpi type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64) devtmpfs on /proc/kcore type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /proc/keys type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /proc/latency_stats type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) devtmpfs on /proc/timer_list type devtmpfs (rw,nosuid,seclabel,size=4096k,nr_inodes=131072,mode=755,inode64) tmpfs on /proc/scsi type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64) tmpfs on /sys/firmware type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64) tmpfs on /sys/fs/selinux type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64) tmpfs on /sys/dev/block type tmpfs (ro,relatime,context="system_u:object_r:container_file_t:s0:c336,c955",size=0k,uid=1000,gid=1000,inode64) proc on /proc/asound type proc (ro,relatime) proc on /proc/bus type proc (ro,relatime) proc on /proc/fs type proc (ro,relatime) proc on /proc/irq type proc (ro,relatime) proc on /proc/sys type proc (ro,relatime) proc on /proc/sysrq-trigger type proc (ro,relatime) The df mechanism ref, df's filtering mechanism seems a little too elaborate. So if instead of ^/ inclusive filtering, if start by excluding: ro mounts mount points that aren't a directory (i.e. files and devices) /proc and /sys Anything else?

          Looks great, a comment of interest from the df code is that they classify remote FS that could never respond if down so that a timeout need to be implemented if remote FS . List of FS found in https://github.com/coreutils/coreutils/blob/00ea4bacf6063ccc125209d5186f8f2382c6f0d4/src/stat.c

          stephane@skysql.com VAROQUI Stephane added a comment - Looks great, a comment of interest from the df code is that they classify remote FS that could never respond if down so that a timeout need to be implemented if remote FS . List of FS found in https://github.com/coreutils/coreutils/blob/00ea4bacf6063ccc125209d5186f8f2382c6f0d4/src/stat.c
          danblack Daniel Black added a comment - - edited

          stephane@skysql.com, thanks for the idea. I haven't done handling NFS timeouts. Looking for feedback if its important enough.

          The getmntinfo bsd based implementations can pass a wait/nowait flag that probably handles NFS timeouts. Its unclear what else of the attributes this is caching or not. No such luck for linux getmntent interface in exposting something similar. I also don't know how killing threads would work here. If it just EINTR the syscall then that can return an error on retreival.

          Can I get a review on PR 2216 please.

          danblack Daniel Black added a comment - - edited stephane@skysql.com , thanks for the idea. I haven't done handling NFS timeouts. Looking for feedback if its important enough. The getmntinfo bsd based implementations can pass a wait/nowait flag that probably handles NFS timeouts. Its unclear what else of the attributes this is caching or not. No such luck for linux getmntent interface in exposting something similar. I also don't know how killing threads would work here. If it just EINTR the syscall then that can return an error on retreival. Can I get a review on PR 2216 please.

          People

            danblack Daniel Black
            stephane@skysql.com VAROQUI Stephane
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.