Kebingungan penggunaan disk: 10G hilang pada partisi Linux di SSD

15

Linux Mint memberi tahu saya, saya hanya memiliki ruang disk bebas 622 MB tetapi harus ada beberapa gigabyte yang tersisa.

Melihat partisi saya diberitahu bahwa ada sekitar sepuluh gigabytes yang tidak digunakan. Saya googled masalah dan tidak menemukan solusi tetapi saya menemukan petunjuk bahwa saya harus memeriksa penggunaan disk df -h.

sudo df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/nvme0n1p8  189G  178G  622M 100% /home

Outputnya tidak masuk akal bagi saya: Perbedaan antara Sizedan Used11GB, tetapi hanya ditampilkan 622Msebagai Available.

SSD belum tua, jadi saya tidak akan mengharapkan perbedaan seperti itu.

Apa yang harus saya lakukan?

tobiornottobi
sumber
3
seperti yang dikomentari @Kusalananda, Anda seharusnya tidak hanya mempertanyakan mengapa Anda tidak mendapatkan 10GB itu (yang saya harap saya menjawab dengan benar dalam jawaban saya), tetapi juga mengapa Anda menggunakan sebagian besar ruang di / rumah. Jika Anda tahu mengapa (mis .: menyimpan banyak file media, dll.) Tidak masalah, jika Anda tidak melakukannya, Anda harus khawatir tentang hal itu, dengan pembersihan potensial memberikan lebih dari 10GB penghematan ruang. Jadi apa jadinya?
AB
"Melihat partisi saya diberitahu bahwa ada sekitar sepuluh gigabytes yang tidak digunakan." - Di mana Anda diberitahu ini?
ctrl-alt-delor
2
@ ctrl-alt-delor from df's output - Ukuran: 189G, Digunakan: 178G
billyjmc
@ ctrl-alt delor, saya mendapatkan angka 10GB dari gparted - dan kemudian 11G dari output df, karena billyjmc disimpulkan dengan benar.
tobiornottobi
4
Kemungkinan duplikat ext4: Bagaimana cara menjelaskan ruang sistem file?
Robert Riedl

Jawaban:

22

Jika filesystem ext4, ada blok yang disediakan, sebagian besar untuk membantu menangani dan membantu menghindari fragmentasi dan hanya tersedia untuk pengguna root. Untuk pengaturan ini, dapat diubah langsung menggunakan tune2fs (tidak semua pengaturan dapat ditangani seperti ini ketika sistem file di-mount):

-m reserved-blok-persentase

Setel persentase sistem file yang hanya dapat dialokasikan oleh proses istimewa. Pemesanan sejumlah blok sistem file untuk digunakan oleh proses istimewa dilakukan untuk menghindari fragmentasi sistem file, dan untuk memungkinkan daemon sistem, seperti syslogd (8), untuk terus berfungsi dengan benar setelah proses non-istimewa dicegah dari menulis ke sistem file. Biasanya, persentase default dari blok yang dipesan adalah 5%.

Jadi, jika Anda ingin menurunkan reservasi menjadi 1% (~ 2GB) sehingga mendapatkan akses ke ~ 8GB tidak ada lagi ruang yang dipesan, Anda dapat melakukan ini:

sudo tune2fs -m 1 /dev/nvme0n1p8

Catatan: -mopsi ini benar-benar menerima angka desimal sebagai parameter. Anda dapat menggunakan -m 0.1untuk memesan hanya sekitar ~ 200MB (dan mengakses sebagian besar dari 10GB yang sebelumnya tidak tersedia). Anda juga dapat menggunakan -ropsi sebagai gantinya untuk memesan langsung dengan blok. Mungkin tidak disarankan untuk memiliki 0 blok yang dipesan.

AB
sumber
3
Pengguna tidak "mendapatkan kembali" 8 GB. Semakin 8 GB lebih untuk dibelanjakan. Akan lebih baik untuk melacak apa yang menggunakan semua ruang disk dan kemudian mungkin melakukan pembersihan itu, jika perlu, atau memindahkannya ke tempat lain, atau menumbuhkan partisi.
Kusalananda
1
@ Kusalananda saya akan mengubah kosakata. Sedangkan untuk penggunaannya, saya membutuhkan umpan balik OP. Pertanyaan itu tidak pernah mengisyaratkan bahwa ada penggunaan tinggi yang tidak diketahui, hanya hilang 10GB.
AB
1
Jawaban yang sangat bagus dan bermanfaat, terima kasih. 5% tampaknya cocok dengan 10 gigabytes yang hilang dengan sangat jelas. Saya tidak khawatir menggunakan begitu banyak ruang disk secara keseluruhan, dan saya masih bisa menumbuhkan partisi saya. :)
tobiornottobi
4
Jawaban Anda tentu benar, tetapi mungkin perlu dicatat bahwa nilai ruang yang disediakan root dalam kasus ini tidak besar. Ini /home, dan menyimpan ruang untuk root tidak ada yang sama pentingnya dengan bagian lain dari sistem file (misalnya untuk memastikan log sistem masih dapat ditulis). Juga, karena ini adalah SSD, mencegah fragmentasi mungkin tidak memiliki prioritas seperti pada disk logam berputar.
marcelm
@marcelm Itu masuk akal bagi saya. Tetapi apakah masih berguna pada partisi / home pada SSD atau hanya buang-buang ruang? Apakah Anda merekomendasikan untuk menurunkan ruang root yang dicadangkan ke 1%?
tobiornottobi
8

File yang dihapus juga dapat berkontribusi pada "ruang yang hilang"

lsof | grep deleted | grep /home

mengembalikan hasil ini untuk saya

chrome    11181           criggie   15u      REG              254,0   
4194304  50651663 /home/criggie/.config/google-chrome/BrowserMetrics/BrowserMetrics-5D0236AF-2BAD.pma (deleted)

Yang menunjukkan bahwa Chrome yang berjalan sebagai PID 11181 membuka file BrowserMetrics lalu menghapusnya, dan filehandle-nya masih terbuka. Ini berarti file tidak terlihat dalam daftar direktori, tetapi masih mengambil ruang disk.

Mengapa program melakukan ini? Ketika biner yang berjalan berakhir, OS akan melepaskan pegangan file yang terbuka dan file pada disk akan hilang, tanpa risiko meninggalkan file temp basi sekitar.

Apa yang tidak bisa saya lihat adalah seberapa besar penggunaan disk file itu.

Criggie
sumber
2
Kebanyakan program yang ditulis dengan baik seharusnya tidak melakukan ini. Ini adalah bug, dan harus dilaporkan, hanya saja sebagian besar bug tidak jelas ini tidak benar-benar muncul sampai Anda berada dalam fase optimisasi, dan jika bug itu salah, bug itu mungkin bahkan tidak terdeteksi sama sekali selama pengujian. Perhatikan bahwa mungkin ada alasan spesifik mengapa mereka melakukan ini, mungkin ada alasan saya tidak tahu di sini untuk menjaga pegangan terbuka selama ini.
Drunken Code Monkey
4
@DrunkenCodeMonkey Bung - Chrome ... Anda benar-benar benar.
Criggie
4
@DrunkenCodeMonkey, banyak sekali program yang ditulis dengan baik melakukan hal ini. Pola buka-hapus-tutup untuk membuat file sementara di * nix hampir universal, karena menjamin file akan dihapus ketika program keluar, terlepas dari bagaimana itu keluar: penghentian normal, menabrak, terbunuh dengan kehabisan memori, terbunuh karena listrik mati, dll.
Tandai
3
@DrunkenCodeMonkey jadi, bagaimana jika program tidak pernah selesai dengan itu?
leftaroundabout
3
@DrunkenCodeMonkey: Pola ini adalah open-delete- work -close . Jika program masih melakukan sesuatu dengan isi file sementara (mis. Menggunakannya sebagai cache pada disk, atau mencatat data telemetri ke dalamnya), maka tentu saja harus tetap dibuka. (Tentu saja, itu juga mungkin bahwa ini memang merupakan file basi yang tidak tertutup yang seharusnya ditutup oleh program tetapi tidak. Tetapi mengingat bahwa hanya ada satu file seperti itu, dan bahwa tidak ada indikasi jelas lainnya dari kebocoran sumber daya, Saya akan mulai dengan asumsi bahwa file tersebut mungkin sengaja dibuka.)
Ilmari Karonen