Пока я знаю, что это cat /sys/block/<devicename>/queue/rotational
скажет мне, является ли мой диск SSD или HDD. Есть ли что-то похожее, чтобы узнать, использует ли он SMR (черепично-магнитную запись)?
решение1
Единственный способ убедиться — протестировать диск с достаточным доступом к случайной записи. «управляемый диском» SMR должен быть полностью прозрачен для хост-компьютера, и иногда производители забывают упомянуть SMR. Однако «прозрачный» касается только логического поведения, а не производительности (или задержки).
Я бы предложил следующее. Запустите fio
следующим образом (сначала cd
в каталоге на диске для тестирования, потому что последующее действие создаст файл теста производительности в текущем рабочем каталоге):
fio --name TEST --eta-newline=5s --filename=fio-tempfile.dat --rw=randwrite --size=500g --io_size=1500g --blocksize=10m --ioengine=libaio --iodepth=1 --direct=1 --numjobs=1 --runtime=3600 --group_reporting
Этот пример создаст файл размером 500 ГБ, заполненный псевдослучайными данными, а затем выберет случайное место в нем и запишет 10 МБ псевдослучайных данных в файл. Затем он повторяет выбор случайного места и запись в течение 1 часа или пока не будет записано 1,5 ТБ. Посмотрите на строки ETA, которые выглядят примерно так:
Jobs: 1 (f=1): [w(1)] [20.0% done] [0KB/40960KB/0KB /s] [0/4/0 iops] [eta 00m:28s]
Приведенная выше команда будет выдавать новую строку ETA каждые 5 секунд. Посмотрите на текущую пропускную способность и IOPS между косыми чертами ( 40960KB
и 4
) выше. Для диска SMR вы должны сначала получить хорошие значения (100 МБ+/с и 10+ IOPS), но по мере продолжения теста и заполнения внутреннего кэша диска SMR (обычно около 20 ГБ) производительность будет колебаться. Иногда она будет близка к начальной скорости, иногда это будут длительные периоды времени около 0 МБ/с и 0-1 IOPS. Хотя ошибок быть не должно.
Имейте в виду, что диски SMR будут работать медленнее при использовании или тестировании! Некоторые диски поддерживают команду TRIM и fstrim
могут помочь вернуть скорость диска к исходной.
Даже без TRIM, хорошо сделанный "управляемый диском" SMR приобретет свою первоначальную скорость, если будет достаточно долго простаивать с питанием. Вам может потребоваться отключить замедление вращения диска (управление питанием), если он перейдет в спящий режим до того, как внутренний кэш будет полностью сброшен в область SMR. В качестве альтернативы вы можете настроить вид, который время от времени будет немного записывать. Даже однострочный, такой как
while true; do date >> timestamps.txt; sleep 5m; done
в каталоге, который хранится на устройстве для тестирования, будет работать нормально, и вам просто нужно будет завершить его с помощью Ctrl+C, когда вы закончите. Для дисков Seagate SMR, которые я использовал, полная очистка кэша, похоже, занимает около получаса. В это время диск звучит так, как будто он записывает данные, хотя компьютер ничего не записывает на диск. К сожалению, я не знаю способа запросить статус очистки с диска. Либо слушайте звуки диска, либо просто ждите достаточно долго.
Пример: диск Seagate SMR, похоже, с радостью переходит в спящий режим в середине сброса SMR (вероятно, чтобы притвориться полностью прозрачным для пользователя) и продолжает сброс после пробуждения в будущем. Это прозрачно в том смысле, что никаких повреждений данных не произойдет, даже если питание будет отключено. Однако это приводит к очень низкой производительности, если вы время от времени записываете большие пакеты и сразу же переводите диск в спящий режим после этого (например, используете такой диск в качестве резервного диска, который немедленно отключается и отключается после логического завершения резервного копирования). В следующий раз, когда вы будете делать еще одну резервную копию, новая резервная копия будет конкурировать с сбросом SMR предыдущей резервной копии, и производительность будет очень низкой. Если вы будете держать такой диск постоянно включенным и записывать только до 10 ГБ за один раз, он будет работать так же быстро или быстрее, чем обычный жесткий диск PMR.
решение2
Современные версииsg3_utilsесть команда sg_rep_zones, которая будет опрашивать диск и спрашивать о его конфигурации SMR. Вам, возможно, придется собрать это вручную, если ваш дистрибутив не имеет последней версии.
Это может сказать вам определенно, если приводявляетсяСМР.
Однако даже если команда сообщает Report zones command not supported
, это не говорит вам наверняка, что дискне являетсяSMR. Некоторые SMR-диски используют SMR "drive managed", что означает, что диск волшебным образом всем управляет, и вам, как предполагается, не нужно об этом беспокоиться. В этом случае он не обязательно будет поддерживать команду report areas.
Еще одна вещь, которую стоит попробовать - посмотрите, поддерживает ли диск команды "unmap" или "trim" - sg_unmap, также часть sg3_utils. Диск, не являющийся SMR, вряд ли будет поддерживать эту команду (но, опять же, не все диски SMR будут ее поддерживать).