Недавно я столкнулся с драйвером устройства Linux Null Block, null_blk, когда тестировал стек ввода-вывода, а не на конкретном устройстве. Я нашел устройства, созданные под этим драйвером (в качестве примера возьмем имя устройства /dev/nullb0), весьма интригующими, особенно если учесть их сходство по названию с устройством /dev/null. Поскольку мне не удалось найти ни одного существующего вопроса по этой теме, я решил обратиться за разъяснениями.
Мой главный вопрос: каковы различия между /dev/null< /code> и устройства, созданные под драйвером устройства null_blk?
К этому моменту: я уже заметил некоторые различия.
Во-первых (насколько я понимаю), нулевое устройство /dev/null не проходит через какой-либо драйвер. Однако устройства, созданные под null_blk, являются настоящими блочными драйверами, через которые должны проходить данные. Я также подтвердил это, запустив fio на обоих устройствах; /dev/null работает намного лучше с точки зрения количества операций ввода-вывода в секунду при произвольном чтении и задержки отправки.
Во-вторых, мы знаем, что чтение из /dev/null приводит к EOF (например, cat /dev/null), но когда я пытаюсь выполнить команду cat /dev/nullb0, он не возвращает EOF и вместо этого зависает.
< li>Кроме того, в документации ядра для null_blk упоминаются параметры конфигурации, но я не вижу подобных параметров для /dev/null, которые можно было бы настроить.
Похоже, под одинаковыми названиями существует большое количество отличий. Может ли кто-нибудь предоставить дополнительную формальную информацию или разъяснения по поводу этих различий? Спасибо!
Недавно я столкнулся с драйвером устройства Linux Null Block, null_blk, когда тестировал стек ввода-вывода, а не на конкретном устройстве. Я нашел устройства, созданные под этим драйвером (в качестве примера возьмем имя устройства /dev/nullb0), весьма интригующими, особенно если учесть их сходство по названию с устройством /dev/null. Поскольку мне не удалось найти ни одного существующего вопроса по этой теме, я решил обратиться за разъяснениями. Мой главный вопрос: [b]каковы различия между /dev/null< /code> и устройства, созданные под драйвером устройства null_blk?[/b] К этому моменту: я уже заметил некоторые различия. [list] [*]Во-первых (насколько я понимаю), нулевое устройство /dev/null не проходит через какой-либо драйвер. Однако устройства, созданные под null_blk, являются настоящими блочными драйверами, через которые должны проходить данные. Я также подтвердил это, запустив fio на обоих устройствах; /dev/null работает намного лучше с точки зрения количества операций ввода-вывода в секунду при произвольном чтении и задержки отправки. [*]Во-вторых, мы знаем, что чтение из /dev/null приводит к EOF (например, cat /dev/null), но когда я пытаюсь выполнить команду cat /dev/nullb0, он не возвращает EOF и вместо этого зависает. < li>Кроме того, в документации ядра для null_blk упоминаются параметры конфигурации, но я не вижу подобных параметров для /dev/null, которые можно было бы настроить.[/list] Похоже, под одинаковыми названиями существует большое количество отличий. Может ли кто-нибудь предоставить дополнительную формальную информацию или разъяснения по поводу этих различий? Спасибо!