Какие-либо файлы копируются, когда я перемещаю файлы от папки в другую папку на том же диске?

Или только ссылка изменяется? Это - общий вопрос. Едва ли определенный для Ubuntu.

BTW: я попробовал sudo fdisk-l, это, кажется, не дает полное изображение.

enter image description here

3
задан 9 August 2014 в 14:39

2 ответа

Файл в *отклоняет, состоит из трех вещей:

  • данные по диску
  • inode, который указывает на данные по диску и хранит полезные вещи как доступ и измененные времена, полномочия, и т.д., и т.д. Они будут варьироваться на основе файловой системы.
  • Один (или многие) hardlinks, которые обеспечивают местоположение (путь и имя файла) и указывают на inode.

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

я являюсь последним, но отсюда , но я попытаюсь найти технический источник для этого.

2
ответ дан 17 November 2019 в 20:23

Я на самом деле читал на этом недавно, и хотя это было конкретно о ext2, я верю ext3, и ext4 подобны если не то же.

Давайте назовем Ваш физический жесткий диск sda. На высшем уровне Ваш диск сначала разбит в отдельные разделы. Каждый раздел получает свою собственную файловую систему, которая решает, как управлять файлами на том разделе. Например, у Вас мог бы быть Windows на sda1 с помощью файловой системы NTFS, Ubuntu на sda2 использование ext4 файловой системы и Подкачки на sda3 это не использует файловую систему. Около начала sda, прежде чем разделы запускаются, две вещи. Во-первых, загрузочный сектор, который Ваши загрузки BIOS при запуске и вероятно содержат личинку. Во-вторых, таблица разделов, которая перечисляет детали о том, где все разделы начинаются и заканчиваются на диске. Можно узнать детали о Вас использование разделов sudo fdisk -l.

В ext4 разделе на sda2, раздел далее разделен на группы блока. В блоке группа является первой суперблок, который дает важную информацию о файловой системе и свободном пространстве. Еще после нескольких областей, используемых файловой системой, inodes. Каждый inode включает список местоположений до 12 блоков данных. Каждый inode может также иметь ссылку максимум на три других inodes. Заключительная область в группе блока для фактических данных и разделена на блоки (обычно 4 КБ каждый).

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

Когда Вы открываете файл, например /home/user/contacts.txt сначала компьютер находит inode для корневого каталога, который он всегда знает, где найти. inode перечисляет местоположения всех блоков данных, которые описывают содержание каталога. Затем компьютер ищет блоки данных запись, названную "домой". Запись для home каталог говорит это, где найти inode для home на диске. Это затем смотрит, в котором inode, ищет указанные блоки user, и повторяет процесс для нахождения файла contacts.txt, чей inode перечисляет блоки, которые содержат содержание файла.

Если Вы хотите переместиться contacts.txt кому: /home, сначала необходимо сделать все описанное выше для нахождения inode файла. Затем компьютер должен перейти к inode для /home (который будет быстр, потому что Linux поддерживает кэш inodes каталогов, к которым недавно получают доступ, названных dentry кэшем), и добавляет contacts.txt к блокам данных каталога. Затем это должно перейти к inode user и ищите его блоки данных contacts.txt и удалите его запись.

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

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

Источник: современные операционные системы 3e Andrew S. Tanenbaum

2
ответ дан 17 November 2019 в 20:23

Другие вопросы по тегам:

Похожие вопросы: