0 votes

bind mount / symlink - conserver l'"arbre" de destination lors de la suppression de la source ?

J'essaie d'accomplir quelque chose d'assez étrange, alors soyez indulgent avec moi.

J'ai ajouté une carte SD externe à mon ancien Droid Mini (à la base, c'était juste une expérience pour voir si je pouvais ou non étendre la capacité de stockage). Il tourne actuellement sous Lineage OS 13.

Le problème est que l'adaptateur SD externe est très gourmand en énergie, et que le noyau de cette version (3.4.42) ne supporte pas correctement l'autosuspend.

Je peux forcer le périphérique à passer en mode basse consommation en dissociant le périphérique SCSI du périphérique USB, mais il est évident qu'il disparaît si je fais cela.

J'ai lu que les montages de liants peut préserver la structure du dossier source même s'il est supprimé, mais je ne parviens pas à faire fonctionner ce système (voir aquí - "Il est possible de démonter /some/where, auquel cas /else/where reste monté." )

L'idée est d'attendre que le périphérique USB devienne inactif, puis de le suspendre manuellement en le déliant jusqu'à ce qu'il soit à nouveau nécessaire. Cependant, si je détache le périphérique, le fichier "stat" que j'utilise pour surveiller l'inactivité disparaît également, de sorte que je ne peux pas l'utiliser pour vérifier si une activité est demandée.

Mon idée (peut-être stupide) était donc de lier la carte externe à un périphérique USB "virtuel" qui ne disparaît pas lorsque la source est retirée, et qui la rattache lorsqu'elle est nécessaire.

Mais à petits pas, une idée sur la façon de préserver un "faux" lecteur pour que le système fonctionne ? Les bind-mounts ne semblent pas faire l'affaire. tout à fait la bonne chose à faire.

Merci, R

0voto

Guillermo Gomez Points 423

Cela semble vraiment fou...

A première vue, je pense que si vous pouvez démonter le répertoire source d'un montage bind, vous devez maintenir le dispositif sous-jacent attaché pour qu'un montage par liaison fonctionne.

J'ai confirmé mon hypothèse par des expériences sur mon OnePlus 6 (Android Linux 4.9.65) et mon Ubuntu 18.04 (real Linux 4.15.0) et le résultat est le même.

Sur Ubuntu, j'ai inséré une clé USB (système de fichiers ext4) et je l'ai montée sur /mnt/usb et je lie les montages /mnt/usb/data a /mnt/bind

  • J'ai démonté /mnt/usb tout en gardant la clé USB attachée, et je peux accéder à la clé USB. /mnt/bind sans erreur. Toutes les modifications apportées aux /mnt/bind reflété à <drive root>/data (vérifié ultérieurement).
  • J'ai ensuite détaché la clé USB et j'ai tenté d'accéder à /mnt/bind et j'ai obtenu ce message :

    ls: reading directory '/mnt/bind': Input/output error

Sur mon OnePlus 6, j'ai inséré une clé USB via OTG (système de fichiers exFAT). J'ai monté le périphérique /dev/block/vold/public:8:97 a /data/dev et bind-mounted /data/dev/Android a /data/bind .

  • J'ai démonté /data/dev tout en gardant l'adaptateur OTG connecté, et toutes les données restent dans l'ordinateur. /data/bind et est accessible sans erreur.
  • J'ai ensuite désactivé la "fonction OTG" dans l'application Paramètres, le point de montage d'Android. /mnt/media_rw/xxxx-xxxx a disparu, mais je peux toujours accéder à mon montage bind.
  • J'ai ensuite détaché le lecteur OTG et tenté d'accéder à /data/bind et j'ai obtenu ceci :

    ls: reading directory `/data/bind`: I/O error

    A noter que, contrairement à Ubuntu, l'accès à l'application /data/bind est restée disponible pendant environ une demi-minute, mais les répertoires que je n'avais pas visités auparavant n'étaient plus accessibles, seuls les répertoires que j'avais visités avant de détacher le disque étaient encore accessibles.

C'est tout. La conclusion se trouve dans le premier paragraphe.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X