LINUX.ORG.RU

Размер файла жесткой ссылки

 


0

1

Читал статью, в которой было написано следующее, цитирую:

При копировании файла создается новый файл, данные которого записываются в свободное место на диске, и который имеет собственный индексный дескриптор. В случае же создания жесткой ссылки, файл по-прежнему остается в единственном числе, появляется лишь дополнительный указатель на него.

Пруф. Так вот решил проверить правда это или нет. Взял для наглядности mp3-файл и сделал жесткую ссылку на него в другой папке. Изначально файл весил 14 Мб, а при указании ссылки два эти файла в сумме стали весить 28 Мб. Так вот противоречие получается в указанной выше цитате, файл с жесткой ссылкой занимает тот же объем, что и оригинальный файл.



Последнее исправление: skyboy (всего исправлений: 1)

ну-ка, сюда свой эксперимент давай. как мерял, всё с точностью до команды.

aol ★★★★★
()

гы-гы, а еще можно у каждого из трех единокровных братьев спросить: «сколько у тебя отцов?», и когда каждый ответит: «один», просуммировать их, и сказать, что в семье три отца

anonymous
()

Если ты на одной бумажке запишешь что у тебя в банке есть 14M$ и на другой бумажке запишешь тоже самое, то в сумме по этим бумажкам у тебя 28M$, а на деле как было 14, так и осталось.

sdio ★★★★★
()
Ответ на: комментарий от aol
➜  hard  ln ../origin/sound.m4a
➜  hard  ls -lahi ../origin/sound.m4a 
10959401 -rw-r--r--@ 3 skyboy  staff    13M 19 апр 16:41 ../origin/sound.m4a
➜  hard  ls -lahi sound.m4a 
10959401 -rw-r--r--@ 3 skyboy  staff    13M 19 апр 16:41 sound.m4a

Сижу я на OS X, но это в данном случае не должно иметь какого-либо значения.

skyboy
() автор топика

Понятно, что цитата не корректная. Не файл остаётся в единственном числе, а его данные. И не размер файлов надо смотреть, а свободное место в файловой системе, до и после создания hard link.

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

Не надо играть словами. Нет у файла «его данных» — данные это и есть файл (inode как начальный указатель). У файла есть имена (указывающие на inode) — вот о них речь как об доп. указателях (ссылках)

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от skyboy

Сделай 100 хардлинков на один большой файл и посмотри df на эту ФС, увидишь что место на диске не расходуется.

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 2)
Ответ на: комментарий от sdio

да, я тоже слегка плаваю ;)

skyboy, читай тута: http://teaching.idallen.com/dat2330/04f/notes/links_and_inodes.html

For each inode, no matter whether the inode is a directory or a file inode, a link count in the inode keeps track of how many directories contain a name-number mapping for that inode. If an inode has only one name-number map (only one name), its link count is one. If the inode has two name-number maps (two names), its link count is two.

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

Действительно вы правы. Ради эксперимента, взял фильм весящий 3 Гб, и после создания ссылки, размер доступного пространства не изменился. Спасибо за помощь.

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

А теперь посмотри вывод du -s и df до и после создания ссылки.

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

при создании жестких ссылок расходуются иноды

еще один. нет, не расходуются. в inode есть поле «количество ссылок», оно просто инкриментируется и все.

val-amart ★★★★★
()
Ответ на: комментарий от val-amart

спакуха. прочитай мой ответ выше.

aol ★★★★★
()

Для того, что бы понять, что представляет собой жёсткая ссылка, а что представляет символьная ссылка нужно задуматься о том как вообще хранится информация о расположении файлов на диске и где.

Так вот это информация хранится в MFT или её аналогах, т.е. в некоторой таблице, в которой, если говорить очень грубо поле, в котором указано имя файла и ещё одно поле, в которой указаны адреса ячеек на накопителе информации (адреса секторов жёсткого диска), в которых собственно и записаны части файла.

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

При создании символьной ссылки создаётся запись в таблице, в которой есть имя файла символьной ссылки и есть запись о том, на какой файл (какую запись в таблице) эта ссылка ссылается.

При создании жёсткой ссылки в таблице создаётся запись с именем файла жёсткой ссылки, а в поле с адресами ячеек памяти накопителя (секторов жёсткого диска), в которых находятся части файла, копируется значение аналогичного поля из записи файла, на которую создаётся жёсткая ссылка.

Т.е. физически сам файл на диске не копируется, а копируются лишь структуры, описывающие информацию о размещении файла на диске.

Так же следует, что если вы удалите файл на который создана символьная ссылка, то эта ссылка станет битой, в случае же жёсткой ссылки вы лишь удалит одну из записей в таблице размещения файлов, в которой указано, что с таким именем находится в таких ячейках памяти, но останется другая запись, т.е. жёсткая ссылка, которая по сути является просто вторым именем файла.

С точки зрения операционной системы и утилит, которые считают размер файлов жёсткая ссылка это точно такой же файл.

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

Цифра, отображающая размер файла в вводе ls показывает сколько байт из него может быть прочитано. Эта цифра не показывает сколько байт занимают метаданные файла, кроме того, сующествуют «разряженные» файлы, в которых часть блоков пустые (как бы заполнены нулями) и они не занимают места на файловой системе.

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

Да как угодно, не надо, так надо. Уже и в техразделах словами играть запрещают :-)

Если относить содержимое инода к файловой системе, то у файла дейстивтельно нет ничего, кроме данных, а если считать, что содержимое инода это метаданные файла, то получается, что у файла есть метаданные и данные.

вот о них речь как об доп. указателях (ссылках)

Жесткие ссылки не являются дополнительными, они все равнозначные. Вобще зачем то сначала вводим понятие имени файла, а потом начинаем выкручиваться с объяснением что такое жёсткая ссылка, хотя имя это и есть жёсткая ссылка.

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