Saya telnetting ke kotak Solaris 5.9 yang seharusnya menyimpan database oracle kami. Saya menghapus versi lama dari database, mencoba untuk pindah ke versi baru (seluruh database 90GB) tetapi saya terus mendapatkan kesalahan "disk penuh". Saya berlari
df -hk
dan menemukan bahwa partisi (disebut "/ d02") saya mencoba untuk memindahkan file ke total 135GB, 123GB digunakan, dan 10GB tersedia. Namun, saat saya berlari
ls -lah /d02
Saya mendapatkan 4 direktori: 3 diantaranya adalah 512B dan 1 adalah 8KB.
Ketika saya menghapus database oracle lama, apakah ruang entah bagaimana tidak dibebaskan? Bagaimana saya bisa membebaskan ruang, atau setidaknya melihat bagaimana ruang saya diambil?
Terima kasih atas waktunya.
Ya, Anda menemukan akar masalahnya. Pada unix, menghapus file menghapus tautan dari daftar akses di direktori. Namun, itu mungkin tidak menghapus konten sampai pegangan file ditutup, yang terkait dengan file. Ini adalah masalah yang agak umum, yang sulit dilacak, setelah fakta.
Setelah pegangan file ditutup, tautan data kemudian dapat dirilis ke daftar gratis, seperti yang Anda ketahui. Kemungkinan besar, file log masih terbuka. Anda mungkin telah menemukan beberapa perilaku aneh setelah basis data dimulai kembali, karena lokasi lognya tidak ada, dan mulai masuk ke konsol atau tempat-tempat aneh lainnya seperti / tmp.
sumber
+1 untuk @UnixGeek jawaban: menghapus file tidak membebaskan ruang disk sampai proses dengan file terbuka hilang.
Alat "standar" untuk membuat daftar file terbuka adalah
lsof
- Saya masih berpikir itu tidak termasuk dengan Solaris (sudah beberapa tahun sejak saya menjadi admin Solaris, atau bahkan menggunakannya), tetapi tersedia dari sunfreeware.Google cepat menemukan utilitas Solaris
pfiles
dapat melakukan hal serupa (tapi saya belum menggunakannya).Juga,
fuser
pada nama file, tetapi Anda harus memeriksanya sebelum Anda menghapus file.fuser
juga berguna untuk menemukan apa yang memiliki port terbuka, ketika suatu proses memberitahu Anda itu sudah digunakan.Saya akan menyambungkan Unixersal Translator A Sysadmin (ROSETTA STONE) , panduan yang sangat berguna bagi siapa saja yang menggunakan beberapa Unices dan menerjemahkannya.
Trik bonus untuk memulihkan file yang dihapus dalam
/proc
sistem berbasis yang masih terbuka oleh suatu proses:Saya telah menggunakan ini di Linux, di mana
ls -l /proc/<pid>/fd
menunjukkan nama file awal (dan [dihapus]) di output.sumber