ZFS Zpool с неправильным пеплом. Насколько это плохо?

У меня есть 3x1TB ZFS (ZoL) RAIDZ1. Один диск не удалось. Я заменяю его диском на 4 ТБ.

$ sudo zpool replace pool <old guid> /dev/disk/by-id/<new id>

cannot replace <old guid> with /dev/disk/by-id/<new id>: 
new device has a different optimal sector size; 
use the option '-o ashift=N' to override the optimal size

$ zdb -C | grep ashift
            ashift: 9

$ sudo zpool replace pool <old guid> /dev/disk/by-id/<new id> -o ashift=9

Это работает. Массив теперь переворачивается. Однако, если честно, я не понял влияния этого параметра. Я просто хотел как можно скорее заменить неисправный диск, а в ближайшем будущем заменить другие диски емкостью 1 ТБ на диски емкостью 4 ТБ. Но в ретроспективе, производительность со смещением выравнивания 2^9 описывается как ужасная.

Я понимаю, что этот параметр неизменен. После замены двух других дисков я не могу изменить ashift значение до 2^12, что, если я правильно понимаю, рекомендуется для дисков 4ТБ.

Я только что выстрелил себе в ногу? Как лучше поступить? Могу ли я отключить autoexpand и создать новый том в новом массиве с ashift=12 и скопировать старый том на новый том на том же диске? Это возможно и рекомендуется?

1 ответ

Решение

Выбор слишком маленький ashift значение по существу заставит диск выполнять чтение-изменение-запись внутри, когда вы делаете запись. Заметите ли вы, что снижение производительности зависит от вашей схемы использования - много ли вы делаете синхронных записей и нуждаетесь в очень высокой производительности? Если ответ "да", вы заметите разницу, но если нет, то, возможно, нет. Это не влияет на асинхронные записи, потому что ZFS объединяет эти записи в большие многоблочные обновления, что означает, что не будет много записей субблоков (поскольку только первые и последние блоки в большой непрерывной записи могут быть вложенными -блок).

Основным недостатком переключения на блоки 4 КБ является то, что сжатие также не будет работать, поскольку оно может округлять только сжатые блоки до ближайших 4 КБ вместо ближайших 512 В. Если для вас это важнее, чем топовая производительность записи, оставьте все как есть.

Если производительность записи действительно имеет значение, вам следует перестроить пул. Я думаю, что самый простой способ будет сделать zfs send / zfs receive в новый пул, который настроен так, как вы хотите.

Что касается вашего конкретного предложения о том, как избежать покупки всего оборудования для нового пула сразу и делать чистые send / receive: так как у вас уже есть данные, записанные с ashift 9, вы не можете добавить диск с ashift 12 в пул (ZFS не сможет адресовать блоки, которые выровнены по 512 В на диске, выровненном по 4 КБ; ashift это настройка на vdevs верхнего уровня, а не на дисках) - отсюда и предупреждение, которое вы видели. Может быть возможно создать новый пул во второй половине нового диска и скопировать в него все данные из первого пула, но избыточность этого не будет такой же, как у исходного пула, так как вы не можете создать RAIDZ1 из одного раздела одного диска. Возможно, вы могли бы скопировать во второй пул без избыточности, а затем перенастроить диски / разделы в исходном пуле в правильный ashift / избыточность, затем скопируйте все данные обратно.

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