J'ai un appareil installé avec Ubuntu 14.04.5 qui a un seul disque dur avec un système de fichiers ext4.
En lisant le document Système de fichiers Ext4 j'ai appris que le mode de données par défaut est ordered
qui ne protège que les métadonnées. Dans mon projet, nous voulons le changer en journal
pour protéger également les données des fichiers car la sécurité des données est de plus grande valeur.
La première chose que j'ai essayée a été de modifier le /etc/fstab
fichier. J'ai essayé de changer
UUID=<UUID> / ext4 errors=remount-ro 0 1
à
UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1
en ajoutant data=journal
au champ d'option.
Cependant, lorsque je redémarre l'appareil, je me retrouve avec un message d'erreur disant cannot change data mode on remount
. J'ai vérifié le dmesg
et j'ai vu un message précédent sur le montage du lecteur avec le mode de données ordered
.
Pendant une longue période embarrassante, j'ai pensé /etc/fstab
est utilisé pour remplacer les options de montage par défaut afin que les disques ne soient montés qu'une seule fois. Mais maintenant, cela semble faux: le lecteur est monté en utilisant ses options de montage par défaut, puis /etc/fstab
est récupéré pour le remonter.
Mes questions sont :
Fstab
wiki mais n'a pas vu qu'il mentionne la chose "mount-remount"./etc/fstab
est vraiment utilisé pour le remontage, à quelle étape du processus de démarrage le lecteur est-il monté pour la première fois? Est-il implémenté dans /etc/init.d
? J'ai vu des scripts dans /etc/init.d
appelé umountfs
et umountroot
, mais, en survolant leur contenu, ils ne semblent pas pertinents.De man ext4
:
data = {journal | ordonné | écriture différée} Spécifie le mode de journalisation des données de fichier. Les métadonnées sont toujours Journalisées. Pour utiliser des modes autres que ceux ordonnés sur le système de fichiers racine - , Passez le mode au noyau comme paramètre de démarrage, par ex. root - flags = data = journal.
Retirer data=ordered
à partir de votre ligne fstab et modifiez /etc/default/grub
au lieu. Dans /etc/default/grub
changer de ligne
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
à
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root‐flags=data=journal"
courir Sudo update-grub
et redémarrez.
Si vous exécutez Sudo strace -e open,openat mount -o remount,rw /
, Vous verrez que la commande ouvre en fait /etc/fstab
. Il s'agit de la commande la plus courante que vous verrez, souvent référencée dans des articles sur le travail à partir du shell de récupération.
Pour citer également la réponse de sourcejedi (qui vient du manuel mount(8)
):
mount -o remount, rw/dir
Après cet appel, mount lit fstab et fusionne ces options avec les options de la ligne de commande (-o) . Si aucun point de montage n'est trouvé dans fstab, un remontage avec une source non spécifiée est autorisé.
Cependant, cela ne signifie pas que /etc/fstab
Est toujours utilisé. En particulier, lorsque vous spécifiez également le fichier de périphérique; référence au mount(8)
manuel :
La fonctionnalité de remontage suit la manière standard dont la commande mount fonctionne avec les options de fstab. Cela signifie que la commande mount ne lit pas fstab (ou mtab) uniquement lorsqu'un périphérique et dir sont entièrement spécifiés.
mount -o remount, rw/dev/foo/dir
Après cet appel, toutes les anciennes options de montage sont remplacées et les éléments arbitraires de fstab sont ignorés , à l'exception de l'option loop = qui est générée en interne et maintenue par la commande mount .
Cela a du sens, car /dir
Pourrait être arbitraire - remonter un périphérique sur un point de montage différent.
/etc/fstab
N'est pas non plus référencé lors du montage du système de fichiers /
Au moment du démarrage, le noyau ne sait rien de /etc/fstab
. Pour citer réponse de psusi :
Finalement, les chargeurs de démarrage sont arrivés et pouvaient passer une ligne de commande au noyau. Si l'argument root = a été passé, cela a indiqué au noyau où se trouvait la racine fs au lieu de la valeur intégrée. Les pilotes nécessaires à l'accès devaient encore être intégrés au noyau
...
Enfin, aujourd'hui, nous avons les initramfs. Ceci est similaire à l'initrd, mais au lieu d'être une image de système de fichiers compressée qui est chargée dans un disque virtuel, c'est une archive cpio compressée. Un tmpfs est monté en tant que racine et l'archive y est extraite. Au lieu d'utiliser pivot_root, qui était considéré comme un hack sale, les scripts de démarrage initramfs montent la vraie racine dans/root, suppriment tous les fichiers dans la racine tmpfs, puis chrootent dans/root et exec/sbin/init
Notez également que le noyau Linux a autres systèmes de fichiers qui résident en mémoire - ceux-ci ne sont pas disponibles normalement pour les utilisateurs, dont certains n'ont pas du tout de point de montage, tandis que certains sont exposés aux utilisateurs. Le noyau n'a pas à faire référence à /etc/fstab
Pour ceux-ci. Un exemple de cela est /proc
- c'est un système de fichiers virtuel qui expose principalement des informations sur les processus, et certaines choses sur le matériel et le système qui devraient vraiment être dans /sys
- un autre système de fichiers virtuel.