LINUX.ORG.RU

Вопрос из собеседования. df, du, rm. Когда после удаления файла свободное пространство на диске прибавляется меньше, чем размер файла

 , ,


1

3

Задача: на диске 10GB свободного пространства. Файл занимает 1GB. Файл удалили, но свободное место стало не 11GB. В каком случае это могло произойти?

★★★

Ответ на: комментарий от Falcon-peregrinus

Ты хотел сказать разрастание айноды?

anonymous
()

вангую

df -BMB

vs

df -BM

anonymous
()

файл это хард линк?

snaf ★★★★★
()

не знаю как это грамотно расписать, но может быть файл имел свойство размер со значением 1GB, но столько не занимал. Такое делают, например, торрент-клиенты, или если например сделать такое:

[r0ck3r@laptop ~]$ cd temp/
[r0ck3r@laptop temp]$ ls
[r0ck3r@laptop temp]$ dd if=/dev/zero of=image.img bs=1024 count=1000
1000+0 записей получено
1000+0 записей отправлено
 скопировано 1024000 байт (1,0 MB), 0,00183602 c, 558 MB/c
[r0ck3r@laptop temp]$ mke2fs image.img 
mke2fs 1.42.13 (17-May-2015)
Discarding device blocks: done                            
Creating filesystem with 1000 1k blocks and 128 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

[r0ck3r@laptop temp]$ resize2fs image.img 1G
resize2fs 1.42.13 (17-May-2015)
Resizing the filesystem on image.img to 1048576 (1k) blocks.
The filesystem on image.img is now 1048576 (1k) blocks long.
[r0ck3r@laptop temp]$ du -hs image.img 
2,7M    image.img
[r0ck3r@laptop temp]$ du -hs --apparent-size image.img 
1,0G    image.img
r0ck3r ★★★★★
()

размер файла или файл занимает? это разное, потому что inode, в которые ничего не записано просто выделяются только в таблице inode, а на диске ничего не занимают.

xmikex ★★★★
()
# int13h @ homepc in ~ [22:50:05]
➜ df -h              
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.8G   80K  3.8G   1% /tmp

# int13h @ homepc in ~ [22:50:22]
➜ dd if=/dev/urandom of=/tmp/foo count=1 bs=1M   
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.0786846 s, 13.3 MB/s

# int13h @ homepc in ~ [22:51:29]
➜ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.8G  1.1M  3.8G   1% /tmp

# int13h @ homepc in ~ [22:51:36]
➜ ln  /tmp/foo /tmp/bar 

# int13h @ homepc in ~ [22:52:32]
➜ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.8G  1.1M  3.8G   1% /tmp

# int13h @ homepc in ~ [22:52:36]
➜ ls /tmp 
bar  foo  ssh-glemfqf5YAgq

# int13h @ homepc in ~ [22:52:50]
➜ rm /tmp/foo 

# int13h @ homepc in ~ [22:53:13]
➜ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           3.8G  1.1M  3.8G   1% /tmp
# int13h @ homepc in ~ [22:53:15]
➜ 
int13h ★★★★★
()

Файл занимает 1GB

Я бы минут 10 занудно выяснял, что именно это означает.

Deleted
()

еще как вариант, файловая система с архивацией ( на подобии btrfs ).

snaf ★★★★★
()

Ну так что решили? Моя версия с 1000000000 файлов в 1 каталоге всё ещё верна?

anonymous
()
Ответ на: комментарий от Falcon-peregrinus

ТС:

прибавляется меньше, чем размер файла

Falcon-peregrinus:

Фрагментация?

Тогда бы прибавилось больше.

gag ★★★★★
()
Ответ на: комментарий от iljuase

P.S. до этого спрашивали про inode, возможно, это как-то связано с ними.

Насколько я знаю при форматировании extfs создаётся определённое кол-во inode фиксированного размера. Именно из-за этого ограничения большие файлы в итоге занимают больше места, т.к. учёт всех блоков просто не поместился в inode и началась косвенная адресация путём выделения доп. блока.

P.S. Кстати, на разных ФС могут быть немного разные причины, так что лучше сообщи о том, какая же ФС подразумевалась.

gag ★★★★★
()

Если речь идёт о ФС по-умолчанию, т.е. extfs, то я бы грубо прикинул, что это, скорее всего был разряженный (sparse) файл. Но для других ФС верно подметили, что это могло быть сжатие.

gag ★★★★★
()
Ответ на: комментарий от entefeed

Плюсую. Оформление промпта — полное дерьмо. Две строки на команду — это только школиё до такого может додуматься. А за выкладывание этого кала на форум надо банить пожизненно.

anonymous
()
Ответ на: комментарий от gag

Ноль меньше одного гига, в условии не сказано что оно вообще освободилось.

Да и вообще из условий там разный маразм может быть, например тулза-удалятор насрала в лог.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от generator

Я ожидал это первым ответом, а не 9-м

anonymous
()

Много таких случаев. 5 очевидных, вероятно можно ещё придумать.

DonkeyHot ★★★★★
()

Так с openwrt. Удали пакет и получи меньше свободного места.

NoobeR ★★★★
()

похоже на поломку фс

anonymous
()

Есть размер файла и есть место занимаемое им на диске. В файловых системах без функции «упаковки хвостов» файл занимает всегда место кратное размеру блока (округляемое в большую сторону). То есть файл размеров в 10 байт будет занимать минимум 4 килобайта. Ещё если файл большой и фрагментированный, то запись о нём в каталоге тоже может быть большой. Каталог будучи списком файлов тоже занимает место на накопителе.

rezedent12 ☆☆☆
()

Задача: на диске 10GB свободного пространства. Файл занимает 1GB. Файл удалили, но свободное место стало не 11GB. В каком случае это могло произойти?

Если такое произошло, то у вас плохая файловая система (например btrfs), которую нужно сменить.

anonymous
()

1. пишут округлённые числа, на самом деле всё сходится

2. ФС со сжатием

3. что-то успело записаться (например логи)

anonymous
()
Ответ на: комментарий от redgremlin

Нет, ну почему никому не нравится вариант, что файл на гигабайт был на самом деле миллиард файлов? Да и каталог — это такой же файл!

anonymous
()
Ответ на: комментарий от anonymous

А ещё с недавних пор в ext4 есть inline data.

anonymous
()

В случае нормально работающей ФС — hardlink, sparse, compression.

h578b1bde ★☆
()
Ответ на: комментарий от gag

Не противоречит условию задачи «но свободное место стало не 11GB» ). Могу предложить еще удаление в корзину. Вообще конечно изврат такие вопросы, можно подумать кому-то интересны накладные расходы на ФС кроме разработчиков ФС.

ilovewindows ★★★★★
()

Хехехе, он был удалён в корзину ::)

А если серьёзно такой размытый, слишком общий вопрос имеет тучу вариантов ответов.

В каком случае

Логичнее спросить - в каких случаях

Dron ★★★★★
()

Можно пропатчить ядро хоть чтобы место наоборот при этом отнималось, очевидно же.

anonymous
()
Ответ на: комментарий от ilovewindows

Не противоречит условию задачи «но свободное место стало не 11GB»

Вот теперь поди догадайся, что значит заголовок вопроса: это домыслы или как? Ведь в формулировке «задачи» размер мог отличаться как в одну, так и в другую стороны.

gag ★★★★★
()

Файл был открыт, от тебя хотели, чтобы ты показал знание lsof. Ну и понимание, что такое может произойти

ostin ★★★★★
()
Ответ на: комментарий от gag

Да просто неточно передал вопрос ОП, суть и так все поняли.

ostin ★★★★★
()

Когда я этот вопрос задаю - обычно жду, что кадидат вспомнит про lsof как минимум.

slowpony ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.