Мне любопытно, что жесткая ссылка не может пересечь границу файловой системы. Но где именно граница? Я знаю, что жесткий диск и флэш-диск - две файловые системы; /home и /var - две файловые системы. Но как насчет /home /a и /home /b? Я довольно смущен.

1 ответ1

2

В этом случае граница является "устройством". Если вы выполните df -h /home , она напечатает что-то вроде этого:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       917G  353G  519G  41% /home

Обратите внимание, что "файловая система" - это не /home , а /dev/sdb1 , то есть один раздел жесткого диска sdb . /home это просто "точка монтирования".

Когда вы смотрите на этот узел устройства, вы получаете что-то вроде этого:

brw-rw---- 1 root disk 8,  17 Apr 23 09:33 /dev/sdb1

b означает, что это блочное устройство. Два числа между disk и датой (8, 17) являются старшим и младшим числом. Это то, что вы можете назвать уникальным идентификатором устройства.

Жесткая ссылка просто содержит название записи и номер индекса. Поскольку нет места для хранения уникального идентификатора устройства, жесткая ссылка не может указывать на другое устройство. Для этого также есть технические причины, как и для USB-дисков, один и тот же "уникальный идентификатор устройства" уникален только до перезагрузки. Таким образом, даже если бы вы могли создать жесткие ссылки между файловыми системами, не было бы никакого способа убедиться, что они все еще действительны после перезагрузки (среди прочих причин).

Обратите внимание, что раздел на вашем жестком диске - это "файловая система", а не место, где он "смонтирован". То есть вы также можете монтировать /dev/sdb1 в /mnt . Это не меняет файловую систему, она просто меняет путь, который вы должны использовать, чтобы найти данные в файловой системе (опять же, даже на языке, файловая система не является путем).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .