Попытка понять команды, влияющие на отключенные диски
В настоящее время я пытаюсь понять какой-то код, который я нашел, который размонтирует диск, но затем выполняет операции над ним (что мне кажется довольно странным).
Ситуация следующая: у меня есть монтирование с именем /dev/sda1, которое указывает на локальный жесткий диск.
Тогда у меня есть команда unmount /dev/sda*
, Далее идет команда, которая распаковывает файл и передает результат в ntfsclone:
ntfsclone -r -O /dev/sda1 -
После этого есть еще один unmount /dev/sda*
, сопровождаемый dd с выходным файлом, являющимся той же самой папкой снова: dd of=/dev/sda count=1 bs=....
,
Итак, всего:
unmount
ntfsclone
unmount
dd
все идет на /dev/sda1.
Чего я здесь не понимаю, так это то, что там на самом деле происходит. Я понял, что ntfsclone используется для создания клона образа жесткого диска, а dd используется для (пере) создания загрузочного раздела. Чего я не понимаю, так это возможной причины этого. По сути, это мой вопрос здесь:
Каковы umounts для / что они там делают / как это влияет на операции там (как они идут на размонтированные устройства, насколько я понимаю операции там)?
Заметьте, что я только добавляю параметры и кодовые части, которые, по моему мнению, необходимы, чтобы увидеть, что делают команды (таким образом, dd, естественно, также имеет параметр if,....
1 ответ
На одном уровне программное обеспечение ядра может читать и записывать диск, но только целые блоки и / или сектора. На более высоком уровне другое программное обеспечение (драйвер файловой системы) способно видеть эти блоки и сектора как файловую систему, а также читать и записывать файлы и каталоги. Чтобы драйвер файловой системы работал, необходимо сопоставить физические блоки на диске и структуру папок. Это называется креплением диска.
Однако при копировании целых дисков вы не хотите, чтобы файловая система изменилась после начала копирования. Чтобы предотвратить это, вы должны размонтировать файловую систему. Теперь только низкоуровневые команды могут получить доступ к диску. ntfsclone
а также dd
примеры низкоуровневых команд, которые гарантируют, что файловая система не будет изменена, пока они заняты.