Можно ли записывать данные непосредственно на блочное устройство, когда оно монтируется файловой системой?

#linux #linux-kernel

Вопрос:

Допустим, у меня есть блочное устройство, смонтированное файловой системой, из того, что я понимаю, это блочное устройство не может быть смонтировано снова.

Но возможно ли из пользовательского пространства вызвать «открыть» на нем и написать на нем напрямую? Или крепление предотвращает любое другое открытие?

Если это так, то как на нем записывается файловая система? Сохраняет ли он информацию о том, что он сделал с монтировкой, открытой?

Комментарии:

1. Я бы спросил об этом в разделе serverfault. Тем не менее, да, можно записывать на /dev/sda1 во время его монтирования. Это, скорее всего, приведет к уничтожению файловой системы. И нет, блокирующее устройство можно открывать несколько раз. Если вы настроили сервер ISCSI, несколько узлов могут смонтировать /dev/sda1, и для правильной блокировки им потребуется файловая система кластера. Например, если вы хотите уничтожить свою файловую систему /dev/sdx1, команда будет dd, если=/dev/null=/dev/sdx1. Вам нужно быть root, но это в пользовательском пространстве. Файловая система записывает на него с помощью системных вызовов, например, fwrite, после открытия, например, с помощью fopen

2. Почему бы не проверить это? how does the file system write on it? ? Что вы подразумеваете под «как»? Как и все остальное. Does it keep the information of the open that it did with the mount? Файловая система записана в ядре, она может «использовать» диск, а не блокирующее устройство.

3. Да, вы можете «открыть(«/dev/xxx», …)» и записать в него через возвращенный дескриптор файла. Но если вы точно не знаете, что вы изменяете, чтобы сказать, если вы не знаете точного сопоставления данных, хранящихся в файловой системе, вы почти наверняка повредите файловую систему.

4. @ThorstenStaerk вы, вероятно, могли бы превратить свой комментарий в ответ.