Forum Linux.général [Manjaro] Comment exclure de l'activation au démarrage une liste de volumes spécifiques?

Posté par  . Licence CC By‑SA.
Étiquettes :
3
13
mai
2021

Bonjour.

Résumé: je souhaite laisser le système activer au démarrage tous les volumes logiques (LVM2) qu'il trouve, sauf trois d'entre eux.

J'ai conservé, avec mon install de Manjaro, un reliquat de Gentoo, que je ne désire pas supprimer pour le moment. Ce reliquat est composé de trois volumes logiques que je ne souhaite pas activer au démarrage. Y a-t-il un moyen élégant d'y arriver?

J'ai d'abord pensé à écrire un simple script shell pour désactiver ces volumes une fois que la machine a démarré mais j'ai la flemme d'écrire une unité systemd juste pour ça. J'ai aussi pensé à me servir du fichier de configuration /etc/lvm/lvm.conf mais je ne suis pas certain du résultat. Pas plus que de la façon d'y arriver, d'ailleurs.

Quelqu'un peut me mettre sur la voie?

  • # lvm.conf

    Posté par  (site web personnel) . Évalué à 2.

    J'ai joué avec ce genre de choses lorsque j'ai piloté une migration chez un client, impliquant de transformer du stockage sur LVM.

    Rapide digression, tu parles de LV, mais je vais évoquer ce que j'ai déjà fait pour des PV, histoire de démontrer ce qu'on peut faire avec ce fichier de configuration…

    Il était question de s'assurer que certains périphériques de type bloc ne s'activent pas automatiquement, ce qui fut implémenté via :

    sed "/devices {/aglobal_filter = [ \"r|/dev/mapper/loop.*|\" ]" -i.bak /etc/lvm/lvm.conf
    

    Autrement dit, dans la section ouverte par devices {, ajouter une ligne :

        global_filter = [ "r|/dev/mapper/loop.*|" ]
    

    tout en conservant le fichier original en tant que /etc/lvm/lvm.conf.

    En regardant mon /etc/lvm/lvm.conf généré automatiquement par une installation Debian en mode encrypted LVM, je note qu'il y a une section activation, avec plein de réglages possibles mentionnés en commentaires, dont volume_list, auto_activation_volume_list, read_only_volume_list. D'après une lecture rapide, pas de mécanisme d'exclusion, mais ça devrait te permettre de faire ce que tu souhaites ?

    Debian Consultant @ DEBAMAX

    • [^] # Re: lvm.conf

      Posté par  . Évalué à 2. Dernière modification le 20 mai 2021 à 21:36.

      Merci pour ces explications, c'est beaucoup plus clair que ce que j'ai pu lire de lvm.conf. Je vais essayer ça dès que possible.

      EDIT: Je crois que j'avais oublié à quoi servait le "r|", c'est pour "remove", c-à-d empêcher l'activation automatique de ces "certains" volumes, exact?

      • [^] # Re: lvm.conf

        Posté par  (site web personnel) . Évalué à 2.

        Dans le paquet source lvm2, je vois ceci :

                # Example
                # Accept every block device:
                # filter = [ "a|.*|" ]
                # Reject the cdrom drive:
                # filter = [ "r|/dev/cdrom|" ]
                # Work with just loopback devices, e.g. for testing:
                # filter = [ "a|loop|", "r|.*|" ]
                # Accept all loop devices and ide drives except hdc:
                # filter = [ "a|loop|", "r|/dev/hdc|", "a|/dev/ide|", "r|.*|" ]
                # Use anchors to be very specific:
                # filter = [ "a|^/dev/hda8$|", "r|.*|" ]
        

        Debian Consultant @ DEBAMAX

        • [^] # Re: lvm.conf

          Posté par  . Évalué à 2. Dernière modification le 20 mai 2021 à 23:46.

          [Pas "remove" mais "reject"] Extra! C'est exactement ce que je cherchais. Merci encore.

  • # Euh .... Comment dire ...

    Posté par  . Évalué à 2.

    J'ai d'abord pensé à écrire un simple script shell pour désactiver ces volumes une fois que la machine a démarré mais j'ai la flemme d'écrire une unité systemd juste pour ça.

    Tu veux qu'on le fasse à ta place ? Je peux, mais c'est pas gratuit … Comme pour les devoirs d'étudiants … :)

    J'ai aussi pensé à me servir du fichier de configuration /etc/lvm/lvm.conf mais je ne suis pas certain du résultat. Pas plus que de la façon d'y arriver, d'ailleurs.

    Ben Fais comme tout le monde : un coup de google et essai. Google m'a donné ça pour la recherche sur lvm.conf :

    https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/logical_volume_manager_administration/lvmconf_file

    Dans le fichier il y a plusieurs sections pour faire ce que tu veux :

        # Configuration option activation/volume_list.
        # Only LVs selected by this list are activated.
        # If this list is defined, an LV is only activated if it matches an
        # entry in this list. If this list is undefined, it imposes no limits
        # on LV activation (all are allowed).
        # 
        # Accepted values:
        #   vgname
        #     The VG name is matched exactly and selects all LVs in the VG.
        #   vgname/lvname
        #     The VG name and LV name are matched exactly and selects the LV.
        #   @tag
        #     Selects an LV if the specified tag matches a tag set on the LV
        #     or VG.
        #   @*
        #     Selects an LV if a tag defined on the host is also set on the LV
        #     or VG. See tags/hosttags. If any host tags exist but volume_list
        #     is not defined, a default single-entry list containing '@*'
        #     is assumed.
        # 
        # Example
        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        # 
        # This configuration option does not have a default value defined.
    
        # Configuration option activation/auto_activation_volume_list.
        # Only LVs selected by this list are auto-activated.
        # This list works like volume_list, but it is used only by
        # auto-activation commands. It does not apply to direct activation
        # commands. If this list is defined, an LV is only auto-activated
        # if it matches an entry in this list. If this list is undefined, it
        # imposes no limits on LV auto-activation (all are allowed.) If this
        # list is defined and empty, i.e. "[]", then no LVs are selected for
        # auto-activation. An LV that is selected by this list for
        # auto-activation, must also be selected by volume_list (if defined)
        # before it is activated. Auto-activation is an activation command that
        # includes the 'a' argument: --activate ay or -a ay. The 'a' (auto)
        # argument for auto-activation is meant to be used by activation
        # commands that are run automatically by the system, as opposed to LVM
        # commands run directly by a user. A user may also use the 'a' flag
        # directly to perform auto-activation. Also see pvscan(8) for more
        # information about auto-activation.
        # 
        # Accepted values:
        #   vgname
        #     The VG name is matched exactly and selects all LVs in the VG.
        #   vgname/lvname
        #     The VG name and LV name are matched exactly and selects the LV.
        #   @tag
        #     Selects an LV if the specified tag matches a tag set on the LV
        #     or VG.
        #   @*
        #     Selects an LV if a tag defined on the host is also set on the LV
        #     or VG. See tags/hosttags. If any host tags exist but volume_list
        #     is not defined, a default single-entry list containing '@*'
        #     is assumed.
        # 
        # Example
        # auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        # 
        # This configuration option does not have a default value defined.
    
        # Configuration option activation/read_only_volume_list.
        # LVs in this list are activated in read-only mode.
        # If this list is defined, each LV that is to be activated is checked
        # against this list, and if it matches, it is activated in read-only
        # mode. This overrides the permission setting stored in the metadata,
        # e.g. from --permission rw.
        # 
        # Accepted values:
        #   vgname
        #     The VG name is matched exactly and selects all LVs in the VG.
        #   vgname/lvname
        #     The VG name and LV name are matched exactly and selects the LV.
        #   @tag
        #     Selects an LV if the specified tag matches a tag set on the LV
        #     or VG.
        #   @*
        #     Selects an LV if a tag defined on the host is also set on the LV
        #     or VG. See tags/hosttags. If any host tags exist but volume_list
        #     is not defined, a default single-entry list containing '@*'
        #     is assumed.
        # 
        # Example
        # read_only_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        # 
        # This configuration option does not have a default value defined.
    

    A moon avis tu as eu juste la flemme tout court de chercher :). Mais puisque ça m'arrive aussi parfois, je t'ai répondu :)

    • [^] # Re: Euh .... Comment dire ...

      Posté par  . Évalué à 2. Dernière modification le 20 mai 2021 à 21:29.

      Ben Fais comme tout le monde : un coup de google et essai. Google m'a donné ça pour la recherche sur lvm.conf

      Ben, j'ai.

      Sauf que ça ne me permet pas de discuter avec de braves types qui pourraient me reprocher de ne pas avoir cherché…

      Spoiler alert: si j'ai posé la question ici, c'est que je ne suis pas certain d'avoir compris le fichier lvm.conf alors c'est pas la peine de me le rebalancer ici sans explication compréhensible. Mais merci quand même pour l'effort…

      • [^] # Re: Euh .... Comment dire ...

        Posté par  . Évalué à 1.

        Désolé si je t'ai blessé, Ce n'était qu'une plaisanterie, rien de méchant (je l'ai peut-être rédigée un peu trop sérieusement).

        si j'ai posé la question ici, c'est que je ne suis pas certain d'avoir compris le fichier lvm.conf

        Tu aurais peut-être du poser ta question dans ce sens là ? Ca aurait permis de te répondre de façon plus précise.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.