Portál AbcLinuxu, 30. dubna 2025 10:13
Při pokusu zapsat jakákoli data na ext4 hlásí svazek, že na něm již není místo. Info o svazku:
# pokus o zápis [max@server ~]$ touch /var/lib/docker/test.txt no space left # kontrola volného místa [max@server ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 3.8G 377M 3.5G 10% /run tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup /dev/mapper/vg0-root 6.9G 989M 5.6G 15% / /dev/mapper/vg0-usr 3.9G 2.6G 1.2G 70% /usr /dev/sda2 575M 315M 219M 60% /boot /dev/sda1 300M 5.9M 294M 2% /boot/efi /dev/mapper/vg0-tmp 976M 3.8M 905M 1% /tmp /dev/mapper/vg0-var 6.9G 540M 6.0G 9% /var /dev/mapper/vg1-docker 176G 116G 53G 69% /var/lib/docker tmpfs 777M 0 777M 0% /run/user/1618004160 # kontrola rezervovaných bloků [max@server ~]$ tune2fs -l /dev/mapper/vg1-docker | grep -i 'Reserv' Reserved block count: 1987014 Reserved GDT blocks: 1006 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root)
fsck svazku nic neukáže, fs je plně ok.
Předpokládám, že se s tím už každý zkušenější uživatel setkal, ale pro někoho to může být zajímavé. A nezapomeňte zmínit i řešení :).
Zdar Max
PS: znovu připomínám, že problém je dávno vyřešen, ale přišlo mi to celkem zajímavé jako kvízek (nedávno se na to chytil můj kolega)
Tiskni
Sdílej:
# default je: mkfs.ext4 -i 16384 /dev/neco # jak to vypadá: tune2fs -l /dev/neco |grep Inode Inode count: 655360 Inodes per group: 8192 Inode blocks per group: 512 Inode size: 256 # zdvojnásobíme počet inode takto mkfs.ext4 -i 8192 /dev/neco # jak to pak vypadá tune2fs -l /dev/neco |grep Inode Inode count: 1310720 Inodes per group: 16384 Inode blocks per group: 1024 Inode size: 256
S tím, že když se kontroluje volné místo, tak je třeba kontrolovat nejen pomocí "df -h", ale i "df -i", které právě ukáže zaplnění inode.
Zdar Maxrm -r
na složku, kde mi kvůli chybě vytvořil program miliony souborů po dvaceti slabikách („prázdné“ gzip soubory).
„Užitečná“ data bych asi spojil do tar archivu nebo něčeho podobného. Nebo ještě úplně na začátku v aplikaci nevytvářet příliš mnoho malých souborů.
docker system prune -a --volumes
a do cronu pravidelně
docker system prune -a -f
Hloupost, to by jsi vyřadil hafec super aplikací (dovecot, docker, elk, minio a další) a to jen kvůli prapodivnému argumentu.Kdy naposledy ti DB vyzrala inody? I minimalisticky sqlite3 te od tohohle problemu odstini, nehlede na pomalost prochazeni adresaru s mnohatisici inodami uvnitr. To je treba duvod proc si pisu sqlite3 patch pro mutt, aby misto maildiru byly maily ulozene v DB. Mailbox je krehky a snadno rozbitelny, to neni reseni.
Prune je zdokumentovaná věc a každý si tak může nastavit cykl promazávání jak chce. Nevidím v tom problém.To by si mel hlavne hlidat docker sam od sebe, primarne bordel vubec nedelat aby nebylo co mazat.
mkfs.ext4 -T largefile
, ale stejně to vypadá, jako kdyby mělo ext4 mnohem vyšší režii než konkurence. Nebo to jenom takhle reportuje, a konkurence to místo spotřebuje až během používání FS?
Pred lety sem to na jedne VPS resil takto, byly to statisice malych souboru (vsechny repozitare gentoo vcetne overlayu)
dd if=/dev/zero of=/virtualfs bs=1024 count=3307200
losetup /dev/loop0 /virtualfs
mkfs -t ext3 -b 1024 -N 1000000 /dev/loop0
mount -t ext3 /dev/loop0 /var/www/xxx/gentoo/portage/
a VPS zila nekolik dalsich let :)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.