Мне любопытно, что жесткая ссылка не может пересечь границу файловой системы. Но где именно граница? Я знаю, что жесткий диск и флэш-диск - две файловые системы; /home и /var - две файловые системы. Но как насчет /home /a и /home /b? Я довольно смущен.
1 ответ
В этом случае граница является "устройством". Если вы выполните 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
. Это не меняет файловую систему, она просто меняет путь, который вы должны использовать, чтобы найти данные в файловой системе (опять же, даже на языке, файловая система не является путем).