У меня есть 3x1 ТБ 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
и скопируйте старый объем в новый объем на том же диске? Это возможно и рекомендуемо?
Выбор также маленького ashift
значение по существу заставит диск делать read-modify-write внутренне, когда Вы сделаете записи. Заметите ли Вы, что хит производительности зависит от Вашего шаблона использования — Вы делаете много синхронных записей и нуждаетесь в очень высокой производительности? Если ответ будет то да, Вы заметите различие, но в противном случае Вы не могли бы. Асинхронные записи как не затронуты этим, потому что ZFS обрабатывает те записи в пакетном режиме вместе в большие обновления мультиблока, означая, что не будет большого количества записей подблока (потому что только первые и последние блоки в большой непрерывной записи могут быть подблоком).
Основная оборотная сторона переключения на блоки на 4 кибибита - то, что сжатие не будет работать также, так как оно может только вокруг сжатых блоков к ближайшим 4 кибибитам вместо ближайшего 512B. Если это имеет значение для Вас больше, чем верхний край производительность записи, возможно, оставьте ее, как.
Если производительность записи действительно имеет значение, необходимо восстановить пул. Я думаю, что самый легкий путь состоял бы в том, чтобы сделать a zfs send
/ zfs receive
к новому пулу, который настроен путем, Вы хотите.
Относительно Вашего определенного предложения для того, как постараться не покупать все аппаратные средства для нового пула сразу и делать чистое send
/ receive
: так как Вам уже записали данные с ashift
9, Вы не можете добавить диск с ashift
12 к пулу (ZFS не смог бы обратиться к блокам, которые являются 512B выровнены на диске, который составляет выровненные 4 кибибита; ashift
установка на верхнем уровне vdevs, не диски) — следовательно предупреждение, что Вы видели. Могло бы быть возможно сделать новый пул на второй половине нового диска и скопировать все данные из первого пула к нему, но дублирование этого не совпадет с исходным пулом, так как Вы не можете создать RAIDZ1 из одного раздела одного диска. Возможно, Вы могли скопировать во второй пул без дублирования, затем реконфигурировать диски / разделы в исходном пуле в корректное ashift
/ дублирование, затем скопируйте все данные назад.