Ce comportement étrange commence il y a quelques jours. C'est df de tout système de fichiers
michele@OptiPlex-360:~$ df
File system 1K-blocchi Usati Disponib. Uso% Montato su
udev 1974808 8 1974800 1% /dev
tmpfs 397120 1340 395780 1% /run
/dev/sda1 45225008 14448892 28455736 34% /
none 4 0 4 0% /sys/fs/cgroup
none 5120 4 5116 1% /run/lock
none 1985596 80 1985516 1% /run/shm
none 102400 68 102332 1% /run/user
/dev/sda6 190822060 65912468 115193268 37% /media/volume1
Maintenant, je demande sda1 et cela me donne une mauvaise réponse
michele@OptiPlex-360:~$ df /dev/sda1
File system 1K-blocchi Usati Disponib. Uso% Montato su
udev 1974808 8 1974800 1% /dev
au lieu sda6 fonctionne
michele@OptiPlex-360:~$ df /dev/sda6
File system 1K-blocchi Usati Disponib. Uso% Montato su
/dev/sda6 190822060 65912468 115193268 37% /media/volume1
Eh bien, qu'est-ce qui ne va pas?
Ah, même problème que j'ai sur mon autre PC avec Ubuntu même installé.
Sortie supplémentaire demandée par le muru:
michele@OptiPlex-360:~$ mount | grep /dev/sda1
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
michele@OptiPlex-360:~$ df /
File system 1K-blocchi Usati Disponib. Uso% Montato su
/dev/disk/by-uuid/2438603c-1bfd-4e79-9f6c-ad6575988aee 45225008 14448908 28455720 34% /
Mon explication personnelle à cet effet est la suivante: df
lit le fichier /proc/self/mountinfo
mais ne trouve pas /dev/sda1
ici.
Je sais qu'il se lit /proc/self/mountinfo
parce que quand je le fais strace df /dev/sda1
je reçois la ligne suivante dans la sortie
open("/proc/self/mountinfo", O_RDONLY) = 3
Maintenant, si nous examinons ce fichier, /dev/sda
n'est pas là, mais il y trouve /dev/sdb
, ce qui explique les rapports corrects pour ces partitions.
================
xieerqi:
$ grep 'sda' /proc/self/mountinfo
================
xieerqi:
$ grep 'sdb' /proc/self/mountinfo
43 22 8:18 / /media/WINDOWS rw,nosuid,nodev,noatime - fuseblk /dev/sdb2 rw,user_id=0,group_id=0,allow_other,blksize=4096
49 22 8:21 / /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625 rw,nosuid,nodev,relatime - ext4 /dev/sdb5 rw,data=ordered
Pourquoi ce n'est pas là? Je ne sais pas. Je ne peux fournir que ce que j'ai trouvé.
Mais pourquoi indique-t-il udev
dans la sortie? df
examine les systèmes de fichiers et /dev/sda1
se trouve dans le dossier /dev
, qui est l'emplacement où udev
système de fichiers virtuel est monté. C'est le même comportement si nous appelons df FILE
, comme df /home
ou df /media/MYWINDOWSPARTITION/RANDOMFILE.txt
Je suggère de le signaler comme un bogue ou au moins de demander aux développeurs GNU à propos de ce comportement (copié à partir de la page de manuel).
REPORTING BUGS
Report df bugs to [email protected]
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report df translation bugs to <http://translationproject.org/team/>
Éditer
De plus, le comportement df /
est à nouveau expliqué par le fichier /proc/self/mountinfo
ayant l'entrée suivante
22 0 8:1 / / rw,noatime,nodiratime - ext4 /dev/disk/by-uuid/86df21bf-d95f-435c-9
292-273bdbcba056 rw,errors=remount-ro,data=ordered
Le système de fichiers racine lui-même est monté en tant que /dev/dis/by-uuid/ACTUAL-UUID-NUMBER.
Mais je n’ai pas d’explication pour df
sans aucun argument indiquant /dev/sda1
plutôt que le chemin d’accès au disque par uuid. La raison en est probablement parce que /dev/dis/by-uuid/ACTUAL-UUID-NUMBER
lui-même est un lien symbolique vers /dev/sda1
, de sorte qu'il le résout entièrement sans arguments, mais avec les arguments nécessaires pour effectuer une recherche dans le fichier /proc/self/mountinfo
C'est normal (pour la deuxième sortie) car les partitions sont montées par leur uuid, sans utiliser les noms de périphérique (c'est l'ancien style). Certaines distributions Linux utilisent l'ancien style et certaines utilisent les nouveaux. Voici une note pour mieux expliquer le problème monter des partitions par uuid
Ce mécanisme vous protège contre le changement d’ordre des unités de disque. Vous devez permuter les disques dans votre matériel. Si vous le souhaitez, vous pouvez facilement changer cela en spécifiant le nom du périphérique dans/etc/fstab.