J'essaie de fonctionner zerofree
sur Ubuntu 11.04 pour pouvoir compacter l'image vdi de VirtualBox à l'aide de:
VBoxManage modifyhd Ubuntu.vdi --compact
Pour pouvoir exécuter zerofree
l’image disque, celle-ci doit être montée en lecture seule. Je suis ces instructions qui dit d’utiliser ceci pour remonter en lecture seule à partir du mode de récupération (invite du shell root):
mount -n -o remount,ro -t ext2 /dev/sda1 /
Mais quand je fais cela, j'obtiens l'erreur:
mount: / is busy
auriez vous des idées pour faire ça?
Suivi : Après la réponse de Jari et ce message en exécutant ces commandes, le problème est résolu.
service rsyslog stop
service network-manager stop
killall dhclient
ubuntu
mount
virtualbox
Crabe ondulé
la source
la source
telinit 1
et cela a résolu le problème pour moi.Réponses:
Certains processus gardent les fichiers ouverts pour l'écriture. Celles - ci pourraient être, par exemple, les programmes que les journaux d'écriture, comme des
rsyslogd
outils de réseautage, commedhclient
ou autre chose. Les fermer un à un et essayer de remonter pourrait fonctionner.Vous pouvez trouver des processus qui utilisent certains fichiers en utilisant le programme
fuser
. Par exemple,fuser -v -m /
retournera une liste de processus. Cependant, je ne sais pas si c’est l’une de ces solutions qui occupe le système de fichiers.la source
F
dans les indicateurs d'accès de lafuser
sortie.Vous pouvez remonter le système de fichiers en lecture seule uniquement si aucun processus n’a un fichier ouvert en écriture. Exécuter
lsof /
pour voir quels processus ont des fichiers ouverts sur le système de fichiers racine. Les dossiers ouverts en écriture seront indiqués dans laFD
colonne. Vous pouvez les filtrer avecPour filtrer automatiquement les identifiants de processus, analysez les résultats de
lsof -F pa
:la source
u
) et qui dit toujours occupé.Améliorer la réponse de Pierre:
Je ne pouvais pas tuer les processus qui utilisent mon point de montage. Alors j'ai fait ça:
/etc/fstab
to commence en lecture seule au prochain démarrage. Ex:/dev/sda1 / ext2 ro 0 1
Pour "récupérer" votre système:
$ mount -o remount,rw /dev/sda1
/etc/fstab
nouveau, en restaurant votre valeur d'origineExtra: si nécessaire, ouvrez le mode de récupération à n’importe quelle étape:
la source
/dev/sda1 / ext2 ro 0 1
entrée était en haut de la liste. Quand je l'ai mis pour la première fois en tant que dernière entrée, j'avais toujours l'erreur du point de montage occupé.Il y a parfois tellement de processus qui maintiennent le montage occupé qu'il peut être plus facile de simplement redémarrer avec le montage en lecture seule.
Modifiez l'entrée du système de fichiers racine dans
/etc/fstab
, par exemple:devient:
Au redémarrage, le système de fichiers sera monté en lecture seule, vous pourrez donc l'exécuter
zerofree
.Lorsque vous avez terminé, remontez le système de fichiers en lecture / écriture à nouveau (
mount -o remount,rw /
) et annulez vos modifications/etc/fstab
.Inspiré par https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root
la source
/dev/sda1 / ext2 ro 0 1
et j’ai pu démarrer en mode lecture seule.Si vous ne pouvez toujours pas démonter ou remonter votre périphérique après avoir arrêté tous les services et processus contenant des fichiers ouverts, il est possible qu'un fichier d'échange ou une partition d'échange maintienne votre périphérique occupé. Cela ne se présentera pas avec
fuser
oulsof
. Désactiver l'échange avec:Vous pouvez vérifier au préalable et afficher un résumé de toutes les partitions ou fichiers d'échange avec:
ou:
Au lieu d'utiliser la commande
sudo swapoff -a
, vous pouvez également désactiver le swap en arrêtant un service ou une unité systemd . Par exemple:ou:
Dans mon cas, il était nécessaire de désactiver le swap, en plus d'arrêter tous les services et processus dont les fichiers étaient ouverts à l'écriture, afin que je puisse remonter ma partition racine en lecture seule afin de l'exécuter
fsck
sur ma partition racine sans redémarrer. Cela était nécessaire sur un Raspberry Pi exécutant Jessie Raspbian.la source
Si vous utilisez systemd, les écritures sur disque sont arrêtées en arrêtant systemd-journald.
la source
Ok, il y a ce que j'ai fait
Premièrement, mon objectif était de réduire ma partition
/
(ROOT
) afin d’en ajouter une autre sur mon disque.À partir de la session en cours une fois que tout est nettoyé et sauvegardé:
Mon bureau disparaît et je suis maintenant sur la console Linux ...
Maintenant, essayez de monter
/
en mode lecture seule :Ok, à partir de maintenant, je suis théoriquement en mode mono-utilisateur , mais
ps ax
montre beaucoup d'autres processus !!Les tuer tous n'est pas vraiment possible ni dangereux ... (
kill 1
c'est interdit ... je n'ai pas le temps de jouer à psdoom :-)La seule chose que je puisse faire est un
System Request
, pour cela, je connais deux façons: (voir leDocumentation/sysrq.txt
fichier dans la documentation du noyau):d'abord en utilisant le
magic SysRq key
clavier piège:Emergency sync
demande au noyau etUmount all
demande, cela remontera tous les systèmes de fichiers montés en lecture seule,Ou par ligne de commande:
Alors maintenant, je pourrais
....
...
la source
fsck
était réussi, j'ai démarré un Live USB afin de pouvoir le lancerresize2fs
... Cette fonctionnalité n'est pas encore implémentée ...fsck
ne sait pas-f
; que ferait-il, zéro bloc non référencé?ext2
lefsck
commutateur:-f
force la vérification même si le système de fichiers semble propre.Pour tous ceux qui recherchent une solution rapide à coller dans votre terminal ...
(Avant de suivre les commandes ci-dessous, assurez-vous d'avoir effectué les autres étapes, comme
telinit 1
.)Trouvé ceci :
Les commandes peuvent tuer votre session, mais après votre retour, votre partition est prête à être remontée.
la source
Associez le fichier vdi en tant que volume supplémentaire et non système à un autre VirtualBox. Là, vous pouvez le (re) monter à votre guise et effectuer le zerofree.
Supposons que vous souhaitiez compacter le disque VDI de VM1 (machine virtuelle 1). Ensuite, vous avez besoin d'un deuxième VM2 . C'est, :
De VirtualBox Manager:
"Paramètres" -> "Stockage" -> "Ajouter un disque dur": ,
sélectionnez le fichier vdi de VM1 que vous souhaitez compacter. Astuce: Assurez-vous que le disque dur que vous venez d'ajouter à VM2 passe en deuxième position dans l'ordre de démarrage après le disque d'origine de VM2.
mount -l
pour voir quel est le_Device_
dans la commandesudo mount -o remount,ro _Device_
. Dans mon cas, c'était / dev / sdb1 . Donc, la commande était (1)sudo mount -o ro,remount /dev/sdb1
et ensuite (2)sudo zerofree /dev/sdb1
.Au lieu de VM2, vous devriez pouvoir démarrer à partir d’un disque d’installation tel que et .iso et obtenir le même résultat MAIS je ne l’ai pas essayé.
la source
Je suppose que vous essayez d'exécuter la
mount
commande dans la machine virtuelle. Quoi qu'il en soit, vous avez probablement une partition racine différente de celle de l'auteur du message du forum.Essayer:
Ce qui ne dépend pas de l'option fs ou mount. Si cela ne fonctionne pas, vous pouvez également essayer de déterminer votre fs racine avec
grep " / " /proc/mounts
oucat /proc/cmdline
. Si votre système de fichiers racine est par exemple / dev / mapper / system-rootfs, vous pouvez utiliser:la source
J'ai eu ce problème qui m'a empêché de mettre ma machine en mode lecture seule. Résoudre le problème m'a pris plus de temps que je ne l’avais voulu admettre ... Je pense que mon problème était que je laissais Apache-Zeppelin courir et que je l’oublie. Assurez-vous que vous ne faites pas la même chose avec un autre service de type d'hébergement. Pour résoudre le problème, j’avais l'habitude
fuser -kill /
de mettre fin à tous les processus pouvant être à l'origine du problème et cela m'a permis de revenir en mode ro.la source
La solution pour moi était de redémarrer le système d'exploitation et de choisir "mode de récupération" dans le menu de démarrage de GRUB. Depuis le "mode de récupération", il y a moins de processus en cours d'exécution, et le remontage en lecture seule fonctionne correctement.
Si le système contient un fichier d'échange sur le système de fichiers racine (plutôt qu'une partition d'échange), il est également nécessaire de désactiver temporairement le fichier d'échange avec
swapoff -a
.la source