|
2.7, ALD (?), 23:35, 11/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
Перевел половину серверов на ZFS, правда засада с sendfile...
ZFS по сравнению с GPT более удобно и с точки зрения обслуживания проще.
| |
|
3.12, iZEN (ok), 07:46, 12/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> ...с неслабыми аппетитами к оперативной памяти.
2 ГБ минимум ОЗУ потребуется ZFS, чтобы начать нормально работать. Модули памяти нынче дёшевы.
| |
|
4.15, Alexander Sheiko (?), 22:40, 12/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> 2 ГБ минимум ОЗУ потребуется ZFS, чтобы начать нормально работать. Модули памяти
> нынче дёшевы.
Всего навсего, если сравнить с UFS. В 2 гига можно влепить не один сервер.
| |
|
5.17, Аноним (-), 07:38, 13/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> 2 ГБ минимум ОЗУ потребуется ZFS, чтобы начать нормально работать. Модули памяти
>> нынче дёшевы.
> Всего навсего, если сравнить с UFS. В 2 гига можно влепить не
> один сервер.
Каждому инструменту свое место.
| |
|
|
|
|
1.3, Kibab (ok), 17:56, 11/04/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Статья годная!
Можно было бы только добавить, что можно с инсталляционного диска сделать зеркала разделов всего на одном диске, далее перезагрузиться в мультиюзер и оттуда добавить к зеркалам остальные разделы. Будет меньше простой сервера.
| |
1.4, Аноним (-), 20:41, 11/04/2012 [ответить] [﹢﹢﹢] [ · · · ] | +/– | Добавлять диск в зеркало как ada0 - не совсем верно, т к при его замене, если н... большой текст свёрнут, показать | |
|
2.5, iZEN (ok), 21:28, 11/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> я делаю
> отдельные для:
> /
> /usr
> /var
> /tmp
> /home
> /backup
> следовательно, я должен сделать для каждого раздела зеркало, т.е. всего 6-ть зеркал,
> как-то это кривовато...
Зачем вы выносите /usr на отдельный раздел, я не понял?
Достаточно держать в этом системном каталоге две точки монтирования для отдельных ФС: /usr/local и /usr/home (у вас это /home).
> Бегло опробовав создавать mbr-разделы на gpt-разделах:
> bsdlabel -w /dev/ada1p3
> bsdlabel -e /dev/ada1p3
> глюков не нашел,
А смысл?
Если только в отдельном GPT-разделе устанавливать образ FreeBSD с собственными настройками и особенностями работы.
> т.е. по идее, с gpt-разделми можно работать как с
> mbr-слайсами, но возникате вопрос насколько это правильно?
"Матрёшка" одной системы внутри "матрёшки" другой системы. Но зачем?
Разделов GPT должно хватить для всего.
> к тому же mbr-раздел больше 2Т не сделаешь...
Разметку MBR нельзя распространить на всё адресуемое пространство на дисках размером больше 2 ТБ — так точнее.
> Понятно, что zfs тут разруливает со своими разделами очень хорошо, но нужна
> ufs... не охота держать шесть зеркал... кто как делает и какие мысли есть по этому поводу?
GPT с отдельными зеракалируемыми разделами GEOM Mirror лучше всего. Например, можно (даже нужно) сделать независимые загрузочные разделы или сделать разделы с различающимися системными файлами и конфигурацией на двух дисках, чтобы иметь возможность быстрого отката или переключения на заведомо рабочую системную конфигурацию. Можно отвести некоторые независимые разделы для graid3, если предполагается использование >2 дисков. Составить зеркала только для действительно важных разделов, а другие GPT-разделы использовать "как есть" без объединения в RAID.
| |
|
3.6, Аноним (-), 22:26, 11/04/2012 [^] [^^] [^^^] [ответить] | +/– | Исторически так сложилось, хотя я согласен, что вынос usr local более логично, ... большой текст свёрнут, показать | |
|
4.10, iZEN (ok), 07:44, 12/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
Вообще, давно можно ZFS во FreeBSD без разметки на разделы.
| |
|
5.13, Аноним (-), 09:42, 12/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Вообще, давно можно ZFS во FreeBSD без разметки на разделы.
Можно, только все же лучше отдавать не весь винт под ФС, а чуть меньше, это можно без разделов?
Ну и к обсуждаемому вопросу это отношение не имеет.
| |
|
4.34, playnet (ok), 16:15, 24/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
>Зазеркалено (ну или raid 3/5/6/10... - кому как нравится) - должно быть все, кроме своп разделов, их вообще нельзя располагать на каких-то программных райдах,
...и при смерти диска с активным свопом с большой вероятностью получаем кернел паник, ага. Так что глупый совет. И первым делом надо именно зеркалировать свопы. На моих серверах так - /boot-zfs, swap-gmirror, /root-zfs и уже рут делится как полагается.
| |
|
5.36, Аноним (-), 10:29, 10/05/2012 [^] [^^] [^^^] [ответить]
| +/– |
>>Зазеркалено (ну или raid 3/5/6/10... - кому как нравится) - должно быть все, кроме своп разделов, их вообще нельзя располагать на каких-то программных райдах,
> ...и при смерти диска с активным свопом с большой вероятностью получаем кернел
> паник, ага. Так что глупый совет. И первым делом надо именно
> зеркалировать свопы. На моих серверах так - /boot-zfs, swap-gmirror, /root-zfs и
> уже рут делится как полагается.
своп - это подстраховка, а не панацея, если у вас сервера уходят в своп - думайте, что у вас не так.
| |
|
|
|
2.19, butcher (ok), 12:49, 13/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Бегло опробовав создавать mbr-разделы на gpt-разделах:
> bsdlabel -w /dev/ada1p3
> bsdlabel -e /dev/ada1p3
> глюков не нашел, т.е. по идее, с gpt-разделми можно работать как с
> mbr-слайсами, но возникате вопрос насколько это правильно? к тому же mbr-раздел
> больше 2Т не сделаешь...
> Понятно, что zfs тут разруливает со своими разделами очень хорошо, но нужна
> ufs... не охота держать шесть зеркал... кто как делает и какие
> мысли есть по этому поводу?
1. Привыкайте пользоваться gpart(8).
2. Сейчас gptboot умеет загружать систему только с GPT раздела с типом "freebsd-ufs". Поэтому вам придётся как минимум для корневой системы и загрузочного кода создать два GPT раздела: "freebsd-boot" и "freebsd-ufs". А для остальных вы вполне можете создать обычный раздел с типом "freebsd" и внутри него уже привычную вам BSD label.
| |
2.24, terr0rist (ok), 12:38, 16/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> если не выключить автосинхрон на зеркалах, то шесть зеркал просто "замучают" головку диска и упадет скорость синхронизации
во фре сидят не болваны, и синхронизация происходит не одновременно, а по очереди. Хотя может быть это и не написано нигде, но я в этом имел неоднократно возможность убедиться.
| |
|
3.25, Аноним (-), 13:42, 16/04/2012 [^] [^^] [^^^] [ответить] | +/– | а давайте проверим, че уж голословно-то говорить uname -r 8 2-RELEASE mdcon... большой текст свёрнут, показать | |
|
4.27, nuclight (ok), 01:26, 17/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
Этот тест ни разу не показателен, по той причине, что разделы одного диска имеют одного общего GEOM-провайдера (так сказать, родителя) - сам диск. А md-разделы в тесте - не имеют. Если хотите проверить утверждение об очередности синхронизации зеркал на одном диске, проверяйте на реальном диске.
| |
|
5.29, Аноним (-), 10:11, 17/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Этот тест ни разу не показателен, по той причине, что разделы одного
> диска имеют одного общего GEOM-провайдера (так сказать, родителя) - сам диск.
> А md-разделы в тесте - не имеют. Если хотите проверить утверждение
> об очередности синхронизации зеркал на одном диске, проверяйте на реальном диске.
Я так и думал, что так скажут, ну протестировали бы сами, проблема что-ли?
# uname -r
8.2-RELEASE
# gmirror label -v -b round-robin test1 /dev/ad0s3 && gmirror label -v -b round-robin test2 /dev/ad0s4 && gmirror status
Metadata value stored on /dev/ad0s3.
Done.
Metadata value stored on /dev/ad0s4.
Done.
Name Status Components
mirror/test1 COMPLETE ad0s3
mirror/test2 COMPLETE ad0s4
# gmirror insert test1 /dev/ad2s3 && gmirror insert test2 /dev/ad2s4 && gmirror status && sleep 1 && gmirror status && sleep 1 && gmirror status
Name Status Components
mirror/test1 DEGRADED ad0s3
ad2s3 (0%)
mirror/test2 DEGRADED ad0s4
ad2s4 (0%)
Name Status Components
mirror/test1 DEGRADED ad0s3
ad2s3 (5%)
mirror/test2 DEGRADED ad0s4
ad2s4 (4%)
Name Status Components
mirror/test1 DEGRADED ad0s3
ad2s3 (9%)
mirror/test2 DEGRADED ad0s4
ad2s4 (9%)
| |
|
|
|
2.28, nuclight (ok), 01:33, 17/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
Во-первых, не нужно отдельный /tmp (это уже на один раздел меньше), да и с /usr надо немного не так (он на /, а отдельным делается /usr/local), короче вот:
$ ls -lod /tmp /usr/obj /usr/ports /usr/src
lrwxr-xr-x 1 root wheel - 12 8 янв 2010 /tmp@ -> /var/tmp/tmp
lrwxr-xr-x 1 root wheel - 13 29 дек 2009 /usr/obj@ -> local/BSD/obj
lrwxr-xr-x 1 root wheel - 15 29 дек 2009 /usr/ports@ -> local/BSD/ports
lrwxr-xr-x 1 root wheel - 13 29 дек 2009 /usr/src@ -> local/BSD/src
drwxrwxrwt 8 root wheel sunlnk 1024 16 апр 03:13 /var/tmp/tmp/
Во-вторых, автосинхронизацию зеркал один фиг необходимо выключать - потому что пересекается с fsck, и всё получается медленно и долго. Лучше написать свой скрипт, который проверит и стартует синхронизацию разделов (по очереди) через минут так 40 после начала загрузки. Скрипт заодно и отрепортить может, "хозяин, случалось тут".
| |
|
3.30, Аноним (-), 10:37, 17/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Во-первых, не нужно отдельный /tmp (это уже на один раздел меньше)
на /tmp у меня стоит noexec и nosymfollow, на /var я не могу поставить, как минимум noexec, потому что оно нужно для портов (/var/db/pkg/), ну и симлинки иногда нужны
> Во-вторых, автосинхронизацию зеркал один фиг необходимо выключать - потому что пересекается
> с fsck, и всё получается медленно и долго. Лучше написать свой
> скрипт, который проверит и стартует синхронизацию разделов (по очереди) через минут
> так 40 после начала загрузки.
Да, я уже упоминал выше, что fsck и одновременный синхрон - то еще зло. И авто-старт синхрона - не чем не лучше, если сервер упал, то нужно разбираться в причинах, до старта синхронизации. Случалось, что автоматика выкидывала из зеркала не тот диск, в зеркале оставался диск с 40-ми или 4-ми ошибками, при синхронизации с такого диска, синхрон спотыкается о бед-блок и замораживается, например на 20% и что тут не делай - дальше синхрон не идет, единственный вариант - развалить зеркало и собрать новое, на втором винте, который был ошибочно выкинут, но, если этот диск уже побывал в синхроне и синхрон не завершился - информация на нем, с большой долей вероятности, будет не консистентна, со всеми вытекающими. Поэтому я всегда смотрю причину в логах, если есть какие-то сомнения или подозрения, прогоняю по винтам dd, затем запускаю синхрон.
А в целом идея годная, можно написать скрипт, который будет последовательно синхронизировать зеркала после того, как его ручками запустишь, костыльно, но работать будет...
>Скрипт заодно и отрепортить может, "хозяин, случалось тут".
Тут, все же, лучше всего, если за этим следит мониторинг, и если нужно, требует твоего вмешательства.
| |
|
4.32, nuclight (ok), 20:50, 18/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
>> Во-первых, не нужно отдельный /tmp (это уже на один раздел меньше)
> на /tmp у меня стоит noexec и nosymfollow, на /var я не
> могу поставить, как минимум noexec, потому что оно нужно для портов
> (/var/db/pkg/), ну и симлинки иногда нужны
Это на самом деле нафиг не нужно. Когда-то много лет назад я тоже баловался флагами на /tmp - только никакой реальной безопасности это не привносило (сейчас типично свалить туда скрипт и запустить его как perl /tmp/malware.pl без всяких +x). А вот регулярный геморрой с make installworld из-за этого имел. В итоге отказался, тем более, что это более эффективное использование диска - не два ограниченных раздела для временных, а один - вдруг кому-то разово приспичит больше, чем там есть?..
>[оверквотинг удален]
> синхрон спотыкается о бед-блок и замораживается, например на 20% и что
> тут не делай - дальше синхрон не идет, единственный вариант -
> развалить зеркало и собрать новое, на втором винте, который был ошибочно
> выкинут, но, если этот диск уже побывал в синхроне и синхрон
> не завершился - информация на нем, с большой долей вероятности, будет
> не консистентна, со всеми вытекающими. Поэтому я всегда смотрю причину в
> логах, если есть какие-то сомнения или подозрения, прогоняю по винтам dd,
> затем запускаю синхрон.
> А в целом идея годная, можно написать скрипт, который будет последовательно синхронизировать
> зеркала после того, как его ручками запустишь, костыльно, но работать будет...
Ну, вот видите, даже и руками убедиться оказывается лучше. Тем более стоит отключать (тут вспоминаем, с чего тред начался).
| |
|
5.33, Аноним (-), 22:32, 18/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
>[оверквотинг удален]
>> могу поставить, как минимум noexec, потому что оно нужно для портов
>> (/var/db/pkg/), ну и симлинки иногда нужны
> Это на самом деле нафиг не нужно. Когда-то много лет назад я
> тоже баловался флагами на /tmp - только никакой реальной безопасности это
> не привносило (сейчас типично свалить туда скрипт и запустить его как
> perl /tmp/malware.pl без всяких +x). А вот регулярный геморрой с
> make installworld из-за этого имел. В итоге отказался, тем более, что
> это более эффективное использование диска - не два ограниченных раздела для
> временных, а один - вдруг кому-то разово приспичит больше, чем там
> есть?..
по noexec-у согласен, хотя nosymfollow все же работает, в купе с nosuid, к тому же /tmp у меня монтируется в async режиме без soft updates, это, на ряду с noatime, дает некоторый прирост скорости.
>Ну, вот видите, даже и руками убедиться оказывается лучше. Тем более стоит отключать (тут вспоминаем, с чего тред начался).
Лучше то оно лучше, оно и так, всегда ручками пускается. А вот осадочек все же есть из-за лишних сущностей. Попробую на каком-нибудь новом сервере, погоняю с полгодика и видно будет насколько оно мешает или не мешает.
| |
|
|
3.31, iZEN (ok), 21:18, 17/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Во-вторых, автосинхронизацию зеркал один фиг необходимо выключать - потому что пересекается
> с fsck, и всё получается медленно и долго. Лучше написать свой
> скрипт, который проверит и стартует синхронизацию разделов (по очереди) через минут
> так 40 после начала загрузки. Скрипт заодно и отрепортить может, "хозяин,
> случалось тут".
fsck может штатно запуститься с задержкой, какой требуется. Нужно просто указать требуемое зачение опции (количество секунд после старта ядра системы) background_fsck_delay в rc.conf: http://www.freebsd.org/cgi/man.cgi?query=rc.conf
| |
|
|
1.14, Slava (??), 15:01, 12/04/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>> Однако нужно забыть сделать диск ada1 загрузочным
Всё-таки наверное лучше НЕ забыть )
| |
1.16, Bocha (??), 06:12, 13/04/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
"Кроме того, раздел /dev/da0p3 - содержит корневую файловую систему" - наверное всё таки ada0p3? А то при чем тут сказёвый диск непонятно откуда.
А вообще суть строчки в том, что раздел смонтирован, и размонтировать его не получится, поэтому в текущем положении изменить его не возможно.
А так ли это? Разве sysctl kern.geom.debugflags=16 не решает эту проблему? А то как-то тупо, получается, что удаленно зеркало построить нельзя. Вот раньше gmirror тоже не мог метадату записать на рабочий винт, Operation not permitted дескать, но делаем sysctl kern.geom.debugflags=16 и всё получается, остается поправить fstab и перезагрузиться, скрестив пальцы.
| |
1.18, butcher (ok), 11:31, 13/04/2012 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Второй метод считаю некорректным, хоть он и рабочий. Зеркало нужно делать до того, как создали файловые системы. Либо использовать резервирование последних блоков для метаданных GEOM классов при вызове newfs (ключ -r).
| |
|
2.20, Аноним (-), 14:21, 13/04/2012 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Второй метод считаю некорректным, хоть он и рабочий. Зеркало нужно делать до
> того, как создали файловые системы. Либо использовать резервирование последних блоков
> для метаданных GEOM классов при вызове newfs (ключ -r).
Полностью согласен. Более того, при полном заполнении раздела затерем последние блоки, в которых geom-методанные со всеми вытекающим последствиями...
| |
|
3.23, Black Hawk (?), 12:38, 15/04/2012 [^] [^^] [^^^] [ответить]
| +1 +/– |
Интересно почему?
ведь newfs уже вызывается на зеркало непосредственно (newfs <someflags> /dev/mirror/gm<N>)
и как оно все перезатрет не понятно
| |
|
4.26, Аноним (-), 13:59, 16/04/2012 [^] [^^] [^^^] [ответить]
| +/– |
> Интересно почему?
> ведь newfs уже вызывается на зеркало непосредственно (newfs <someflags> /dev/mirror/gm<N>)
> и как оно все перезатрет не понятно
А где вы видите newfs?, я вот вижу, что человек делает разметку ada1, как на ada0:
># gpart backup ada0 > ada0.gpt
># gpart restore -F /dev/ada1 < ada0.gpt
далее, он нам говорит, что ada0 это тот винт, с которого работает сейчас система и значит на нем уже отформатированы разделы и имеют информацию:
>Кроме того, раздел /dev/da0p3 – содержит корневую файловую систему, он смонтирован,
>и размонтировать его не получится, поэтому в текущем положении изменить его не
>возможно.
далее, загрузившись с сидюка он создает зеркало на том самом рабочем ada0:
>gmirror label -vb round-robin boot /dev/ada0p1
и тарам-пам-пам: монтирует созданное зеркало и правит там fstab. Дальше он перезагружается в рабочую систему, и у него она даже работает, но!, с выше оговоренным косяком.
| |
|
|
|
1.21, mitiok (ok), 12:27, 14/04/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
используйте load. ошибки вынуждавшие использовать исключиельно round-robin исправлены 100500 лет назад
| |
1.22, Nekit (??), 12:59, 14/04/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>> Терзаемый неприятным чувством, что поддержка GPT...
Мда... Матчасть совсем не изучена.
Во-первых: GPT в этом релизе довели до ума, другими словами, теперь она совсем не сырая.
Во-вторых: GPT делает копию таблицы разделов в конце диска. Ну и gmirror то же так делает. В итоге получается, что при создании зеркала затирается резервная копия разделов GPT. Отсюда:
1) сообщения (точнее даже предупреждения) об ошибках на этапе загрузки.
2) риск потери данных, всвязи отсутствия бэкапа сектора GPT.
А так работать вполне будет, что и выявлено к концу статьи.
И кстати, об этом писал сам человек, который занимается разработкой GPT во фри.
| |
1.37, Владимир (??), 17:47, 23/11/2012 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
БОльшое спасибо за статью, однако
"mount /dev/mirror/gm0p3 /mnt" выдает Invalid argument
| |
1.38, шмидт (?), 11:11, 24/09/2013 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
в первой части (вторую вообще не читал) не нужно перезагружаться второй раз, когда инстолляция закончена, то инстоллятор предлагает зайти сразу в консоль, там корневая фс уже смонтирована в /mnt и можно поправить конфиг загрузчика.
| |
|
2.41, Oleg (??), 18:13, 11/05/2015 [^] [^^] [^^^] [ответить]
| +/– |
> если ada0 диск был заменен. как восстановить массив ?
gmirror insert gm0 /dev/ada0
| |
|
|
4.43, robin (?), 12:53, 12/05/2015 [^] [^^] [^^^] [ответить]
| +/– |
> а если зерколо из раздеов ? а не с целых дисков, например:
$ gmirror status
Name Status Components
mirror/boot COMPLETE ada0p1 (ACTIVE)
ada1p1 (ACTIVE)
mirror/root COMPLETE ada0p2 (ACTIVE)
ada1p2 (ACTIVE)
mirror/swap COMPLETE ada0p3 (ACTIVE)
ada1p3 (ACTIVE)
| |
|
|
|
1.44, robin (?), 15:31, 12/05/2015 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
сам спросил сам ответил:
Восстановление после дисковых сбоев. допустим диск ada0 - заменен на новый.
1. смортим структуру рейда. видим три масива которые нужно пересобрать boot root swap
# gmirror status
Name Status Components
mirror/boot DEGRADED ada1p1 (ACTIVE)
mirror/root DEGRADED ada1p2 (ACTIVE)
mirror/swap DEGRADED ada1p3 (ACTIVE)
2. сохраним разметку диска и восстановим её на другом диске:
# gpart backup ada1 > ada1.gpt
# gpart restore -F /dev/ada0 < ada1.gpt
# gpart show
=> 34 4194237 ada1 GPT (2.0G)
34 1024 1 freebsd-boot (512K)
1058 3982336 2 freebsd-ufs (1.9G)
3983394 208896 3 freebsd-swap (102M)
4192290 1981 - free - (991K)
=> 34 4194237 ada0 GPT (2.0G)
34 1024 1 freebsd-boot (512K)
1058 3982336 2 freebsd-ufs (1.9G)
3983394 208896 3 freebsd-swap (102M)
4192290 1981 - free - (991K)
3. нужно сделать диск ada0 загрузочным, ведь мы зеркалируем не весь
диск целиком, а только его разделы. Иначе с выходом из строя ada0, система не
сможет загрузится с ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
4. восстанавливаем boot
# gmirror forget boot
# gmirror insert boot /dev/ada0p1
5. восстанавливаем root
# gmirror forget root
# gmirror insert root /dev/ada0p2
6. восстанавливаем root
# gmirror forget swap
# gmirror insert swap /dev/ada0p3
| |
1.45, mezantrop (ok), 09:38, 26/07/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Ха, я думал, что эта моя старенькая заметка давно потерялась! Только странно, что она здесь проходит под чужим аккаунтом - однофамилец из Новосибирска. Понятно, что много воды утекло уже и текст, наверное, не актуален, но если можно, поправьте, пожалуйста :)
| |
|