Saya mencoba untuk menjalankan zerofree
di Ubuntu 11.04 sehingga saya dapat memadatkan gambar VirtualBox vdi menggunakan:
VBoxManage modifyhd Ubuntu.vdi --compact
Untuk menjalankan zerofree
image disk telah dipasang sebagai read-only. Saya mengikuti petunjuk ini yang mengatakan untuk menggunakan ini untuk mengirim ulang sebagai hanya-baca dari mode pemulihan (Drop to root shell prompt):
mount -n -o remount,ro -t ext2 /dev/sda1 /
Tetapi ketika saya melakukan ini saya mendapatkan kesalahan:
mount: / is busy
Ada ide tentang bagaimana melakukan ini?
Tindak lanjut : Mengikuti jawaban Jari dan pos ini dengan menjalankan perintah ini menyelesaikan masalah.
service rsyslog stop
service network-manager stop
killall dhclient
ubuntu
mount
virtualbox
Kepiting bergelombang
sumber
sumber
telinit 1
dan menyelesaikan masalah untuk saya.Jawaban:
Beberapa proses membuat file tetap terbuka untuk ditulis. Ini bisa berupa, misalnya, program yang menulis log, seperti
rsyslogd
, alat jaringan, sukadhclient
atau sesuatu yang lain. Mematikan ini satu per satu dan mencoba remount mungkin berhasil.Anda dapat menemukan proses yang menggunakan file tertentu dengan menggunakan program ini
fuser
. Misalnya,fuser -v -m /
akan mengembalikan daftar proses. Namun, saya tidak yakin apakah ini salah satu yang membuat sistem file sibuk.sumber
F
dalam bendera akses difuser
output.Anda hanya dapat me-remount sistem file read-only jika tidak ada proses yang memiliki file terbuka untuk ditulis. Jalankan
lsof /
untuk melihat proses apa yang membuka file pada sistem file root. File yang terbuka untuk ditulis akan ditunjukkan dalamFD
kolom. Anda dapat memfilter ini denganUntuk memfilter ID proses secara otomatis, parsing output dari
lsof -F pa
:sumber
u
) dan masih mengatakan sibuk.Memperbaiki jawaban Peter:
Saya tidak bisa membunuh proses yang menggunakan mount point saya. Jadi saya melakukan ini:
/etc/fstab
untuk mulai dalam read-only di boot berikutnya. Ex:/dev/sda1 / ext2 ro 0 1
Untuk "memulihkan" sistem Anda:
$ mount -o remount,rw /dev/sda1
/etc/fstab
lagi, pulihkan nilai asli AndaEkstra: jika perlu buka mode pemulihan dalam langkah apa pun:
sumber
/dev/sda1 / ext2 ro 0 1
entri berada di bagian atas daftar. Ketika saya pertama kali menempatkannya sebagai entri terakhir, saya masih memiliki kesalahan sibuk titik mount.Kadang-kadang ada begitu banyak proses yang membuat mount tetap sibuk, sehingga mungkin lebih mudah untuk hanya me-reboot dengan mount read-only.
Ubah entri untuk sistem file root
/etc/fstab
, misalnya:menjadi:
Saat reboot, sistem file akan di-mount hanya-baca, sehingga Anda dapat menjalankannya
zerofree
.Setelah selesai, remount sistem file baca / tulis lagi (
mount -o remount,rw /
) dan batalkan perubahan Anda ke/etc/fstab
.Terinspirasi oleh https://wiki.debian.org/ReadonlyRoot#Enable_readonly_root
sumber
/dev/sda1 / ext2 ro 0 1
dan saya bisa boot dalam mode readonly.Jika Anda masih tidak dapat melepas atau memasang kembali perangkat Anda setelah menghentikan semua layanan dan proses dengan file terbuka, maka mungkin ada file swap atau partisi swap yang membuat perangkat Anda sibuk. Ini tidak akan muncul dengan
fuser
ataulsof
. Matikan swapping dengan:Anda dapat memeriksa sebelumnya dan menunjukkan ringkasan partisi swap atau menukar file dengan:
atau:
Sebagai alternatif untuk menggunakan perintah
sudo swapoff -a
, Anda mungkin juga dapat menonaktifkan swap dengan menghentikan unit layanan atau sistem . Sebagai contoh:atau:
Dalam kasus saya, mematikan swap diperlukan, selain menghentikan semua layanan dan proses dengan file yang terbuka untuk ditulis, sehingga saya dapat me-remount partisi root saya sebagai hanya baca untuk berjalan
fsck
di partisi root saya tanpa me-reboot. Ini diperlukan pada Raspberry Pi yang menjalankan Raspbian Jessie.sumber
Jika Anda menggunakan systemd maka penulisan disk dihentikan dengan menghentikan systemd-journald.
sumber
Ok, ada yang sudah saya lakukan
Pertama, tujuan saya adalah mengurangi partisi
/
(ROOT
) saya untuk menambahkan yang lain pada disk saya.Dari menjalankan sesi setelah semuanya dibersihkan dan dicadangkan:
Desktop saya hilang dan saya sekarang di konsol Linux ...
Sekarang, mencoba memasang
/
dalam mode read-only :Ok, mulai sekarang, saya dalam mode teoretis single-user , tetapi
ps ax
menunjukkan banyak proses lainnya !!Membunuh mereka semua ini tidak mungkin, atau berbahaya ... (
kill 1
dilarang ... saya tidak punya waktu untuk bermain psdoom :-)Satu-satunya hal yang dapat saya lakukan adalah
System Request
, untuk ini, saya tahu dua cara: (lihatDocumentation/sysrq.txt
file dalam kernel docs):pertama kali menggunakan
magic SysRq key
perangkap kernel keyboard:Emergency sync
permintaan ke kernel danUmount all
permintaan, ini akan mengount ulang semua sistem file yang terpasang hanya baca,Atau dengan baris perintah:
Maka sekarang, saya bisa
....
...
sumber
fsck
berhasil dilakukan, saya sudah boot Live USB agar dapat menjalankanresize2fs
... Fitur ini belum diimplementasikan ...fsck
tidak tahu-f
; apa yang akan dilakukan, nol blok tanpa referensi?ext2
'sfsck
switch:-f
Memaksa memeriksa bahkan jika sistem file tampak bersih.Untuk orang lain yang hanya mencari perbaikan cepat untuk menempel ke terminal Anda ...
(Sebelum mengikuti perintah di bawah ini, pastikan Anda telah menyelesaikan langkah-langkah lain seperti
telinit 1
.)Menemukan ini :
Perintah dapat membunuh sesi Anda, tetapi setelah Anda kembali, partisi Anda siap untuk di-remount.
sumber
Lampirkan file vdi sebagai volume tambahan dan non-sistem ke VirtualBox lain. Di sana Anda dapat (kembali) memasangnya sesuai kebutuhan dan melakukan zerofree.
Katakanlah Anda ingin memadatkan disk VDI VM1 (Virtual Machine 1). Maka Anda membutuhkan VM2 kedua . Itu adalah, :
Dari VirtualBox Manager:
"Pengaturan" -> "Penyimpanan" -> "Add Hard Disk": ,
pilih file vdi dari VM1, yang ingin Anda kompak. Petunjuk: Pastikan hard disk yang baru saja ditambahkan ke VM2 berada di urutan kedua dalam urutan boot setelah disk asli VM2.
mount -l
untuk melihat_Device_
perintah mana yang adasudo mount -o remount,ro _Device_
. Dalam kasus saya ini adalah / dev / sdb1 . Jadi perintahnya adalah (1)sudo mount -o ro,remount /dev/sdb1
dan kemudian (2)sudo zerofree /dev/sdb1
.Alih-alih VM2 orang harus dapat boot dari dan menginstal disk seperti dan gambar .iso dan mencapai NAMUN yang sama saya belum mencobanya.
sumber
Saya berasumsi Anda mencoba menjalankan
mount
perintah di VM. Pokoknya Anda mungkin memiliki partisi root yang berbeda dari penulis posting forum.Mencoba:
Yang tidak tergantung pada opsi fs atau mount. Jika ini tidak berhasil, Anda juga dapat mencoba menentukan root fs Anda
grep " / " /proc/mounts
ataucat /proc/cmdline
. Jika sistem file root Anda misalnya / dev / mapper / system-rootfs Anda dapat menggunakan:sumber
Saya memiliki masalah ini yang membuat saya tidak dapat menempatkan mesin saya dalam mode hanya baca. Memecahkan masalah butuh waktu lebih lama daripada yang ingin saya akui ... Saya percaya masalah saya adalah bahwa saya membiarkan Apache-Zeppelin berjalan dan melupakannya. Pastikan Anda tidak melakukan hal yang sama dengan layanan jenis hosting lain. Untuk mengatasi masalah, saya biasa
fuser -kill /
menghentikan semua proses yang dapat menyebabkan masalah dan memungkinkan saya untuk kembali ke mode ro.sumber
Solusi bagi saya adalah me-reboot OS dan memilih "recovery mode" dari menu boot GRUB. Dari "mode pemulihan", ada lebih sedikit proses yang berjalan, dan remounting read-only berfungsi dengan baik.
Jika sistem memiliki file swap pada sistem file root (bukan partisi swap), Anda juga perlu menonaktifkan sementara file swap dengan
swapoff -a
.sumber