it-swarm-eu.dev

Řekněte fs, aby uvolnil místo z odstraněných souborů TEĎ

Existuje způsob, jak říct jádru, aby nyní uvolnilo volné místo na disku? Jako zápis do něčeho v/proc /? Používání Ubuntu 11.10 s ext4.

Toto je pravděpodobně staré a velmi opakované téma. Poté, co jsem si všiml 0 místa, které jsem si všiml, když můj editor nemohl uložit soubory zdrojového kódu, které jsem otevřel, které nyní mají ve svém hororu v seznamu složek 0 bajtů, pokračoval jsem v mazání.

Odstranil jsem 100 MB velkých souborů od uživatele i od kořenového adresáře a také jsem provedl nějaké hardlinking.

Těsně předtím, než jsem udělal apt-get clean v/var/cache/apt/archive bylo více než 900 MB, nyní je zde pouze 108 kB:

# du
108 /var/cache/apt/archives

O hodinu později ještě žádné volné místo a nemůžu uložit své cenné soubory otevřené v editoru, ale všimněte si níže uvedených rozdílů:

# sync; df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda4             13915072  13304004         0 100% /

Nějaké návrhy? Vypnul jsem některé služby/procesy, ale nejsem si jistý, jak zkontrolovat, kdo by mohl aktivně jíst místo na disku.

Více informací

# dumpe2fs  /dev/sda4
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              884736
Block count:              3534300
Reserved block count:     176715
Free blocks:              422679
Free inodes:              520239
First block:              0
Block size:               4096
Fragment size:            4096
74
Marcos

Zkontrolujte pomocí lsof, zda nejsou soubory otevřené. Místo bude uvolněno, dokud nebudou uzavřeny.

Sudo /usr/sbin/lsof | grep deleted

vám řekne, které smazané soubory jsou stále otevřeny.

119

Pomocí lsof vyhledejte odstraněný, ale otevřený soubor, který stále vyžaduje místo:

lsof | grep deleted | grep etilqs_1IlrBRwsveCCxId
chrome     3446       user  128u      REG              253,2              16400       2364626 /var/tmp/etilqs_1IlrBRwsveCCxId (deleted)  

Vyhledejte položku v /proc/<pid>/fd/, Která odpovídá na filehandle:

ls -l /proc/3446/fd/etilqs_1IlrBRwsveCCxId
lrwx------. 1 user unix 64 Feb 11 15:31 128 -> /var/tmp/etilqs_1IlrBRwsveCCxId (deleted)

Nyní jen cat /dev/null Do fd:

cat /dev/null > /proc/3446/fd/128

Všimněte si, že inode je stále otevřený, ale nyní je to 0 délka

chrome     3446       user  128u      REG              253,2         0    2364626 /var/tmp/etilqs_1IlrBRwsveCCxId (deleted)
38
BillQ

df nezobrazí místo vyhrazené pro root (i když běží jako root):

# df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/optvol           625G  607G     0 100% /opt
...

Jak změnit "procento vyhrazeného bloku"

  1. Omezte vyhrazený prostor na 4%

    # tune2fs -m4 /dev/sda4

df -h nyní ukazovalo 45M zdarma.

  1. Rychle jsem uložil soubory
  2. Vrať to zpět na 5%

    # tune2fs -m5 /dev/sda4

13
Marcos

Pokud jste v Ubuntu odstranili soubory pomocí koše, vaše soubory byly více než pravděpodobné, že nebudou zcela odstraněny.

I po vyprázdnění koše zůstanou vaše soubory v ~/.local/share/Trash/expunged až po restartu a možná i déle.

Nenašel jsem pro to dobrý důvod, ale pokud mi dojde nedostatek místa, vždy ručně rm odstraněné soubory koše.

8
kwarrick
Sudo lsof | grep "(deleted)$" | sed -re 's/^\S+\s+(\S+)\s+\S+\s+([0-9]+).*/\1\/fd\/\2/' | while read file; do Sudo bash -c ": > /proc/$file"; done

Vysvětlení:
Grep lsof výstup extrahovat pouze smazané soubory. Sed extrahovat ID procesu a ID filesescriptor z každého řádku a vytvořit řetězec ve formátu {pid}/fd/{fid}. Zatímco smyčka a výstup nic do každého souboru, jejich nastavení na prázdné.

6
Sepero

Zajímalo by mě, jestli sync je zde nějaká pomoc - ale nemělo by to být, protože ve většině ("mnoho"?) Systémů IIRC se synchronizuje souborové systémy každých 30 s.

Zkontroloval jsem protokol jádra (takže dmesg), abych zjistil, zda se děje něco ošklivého, a spustím lsof, abych zjistil, zda je stále otevřený nějaký velký, smazaný soubor (vlastně myslím smazané soubory budou označeny jako výstup ve výstupu lsof).

Dva důvody (jeden z nich poukázal na otázku, kterou odkazujete), které mohou způsobit, že odstraněné soubory uvolní místo, nejsou

  • soubory, které nebyly skutečně smazány: smazali jste soubor, který je pevně propojen někde jinde (přesněji jste unlink() ed soubor s více než jedním odkazem)
  • soubory, které jsou stále otevřené: otevřené soubory jsou bookkept používající, dobře, soubory, inodes samotné, ne položky adresáře, pokud odstraníte položku, zůstane tam inode, dokud je stále otevřený.

Ale nevím o konkrétním důvodu, proč by se to mohlo stát s tolika soubory ...

5
njsg

CentOS 6.3 také dělá věc, která není ve skutečnosti vyprazdňována, může-li-vyprázdnit-koš. Nemohl jsem najít způsob, jak získat zpět prostor, dokud jsem neběžel rm -rf ~/.local/share/Trash/expunged/. Způsobil hodně poškrábání hlavy.

1
Biggles