Настройка mdadm RAID-1 на SSD и HDD

Если Вы смотрите на исполняемый файл sudo:

$ which sudo
/usr/bin/sudo
$ ls -la /usr/bin/sudo
---s--x--x 2 root root 208808 Jun  3  2011 /usr/bin/sudo

Вы заметите, что это несет биты полномочий ---s--x--x. Они могут быть сломаны следующим образом:

-|--s|--x|--x
-      - first dash denotes if a directory or a file ("d" = dir, "-" = file)  
--s    - only the setuid bit is enabled for user who owns file
--x    - only the group execute bit is enabled
--x    - only the other execute bit is enabled

Таким образом, то, когда программа имеет, это - setuid, укусило, включил (также называемый SUID), это означает, что, когда кто-то запускает эту программу, она будет работать с учетными данными пользователя, который владеет файлом, иначе. корень в этом случае.

Пример

Если я выполняю следующую команду как пользователь saml:

$ whoami
saml

$ sudo su -
[sudo] password for saml: 

Вы заметите что выполнение sudo на самом деле работает как корень:

$ ps -eaf|grep sudo
root     20399  2353  0 05:07 pts/13   00:00:00 sudo su -

механизм setuid

Если Вам любопытно, как работы SUID смотрят на man setuid. Вот выборка из страницы справочника, которая объясняет это лучше, чем я мог:

setuid () устанавливает эффективный идентификатор пользователя обработки вызовов. Если эффективный UID вызывающей стороны является корнем, реальный UID и сохраненный идентификатор пользователя набора также установлены. В соответствии с Linux, setuid () реализован как версия POSIX с _POSIX_SAVED_IDS функцией. Это позволяет идентификатору пользователя набора (кроме корня) программа отбрасывать все свои полномочия пользователя, делать некоторую непривилегированную работу и затем повторно включать исходный эффективный идентификатор пользователя безопасным способом.

Если пользователь является корнем, или программа является set-user-ID-root, специальную заботу нужно соблюдать. setuid () функция проверяет эффективный идентификатор пользователя вызывающей стороны и если это - суперпользователь, весь связанный с процессом идентификатор пользователя установлены на uid. После того, как это произошло, для программы невозможно возвратить полномочия пользователя root.

Ключевое понятие здесь - то, что программы имеют реальный идентификатор пользователя (UID) и эффективный (EUID). Setuid устанавливает эффективный идентификатор пользователя (EUID), когда этот бит включен.

Таким образом с точки зрения ядра известно это в нашем примере, saml все еще первоначальный владелец (UID), но EUID был установлен с тем, кто бы ни владелец исполняемого файла.

setgid

Я должен также упомянуть, что, когда мы ломаем полномочия на команде sudo, вторая группа битов была для полномочий группы. Биты группы также имеют что-то подобное setuid, названному идентификатором группы набора (иначе. setgid, SGID). Это делает то же самое, поскольку SUID кроме него выполняет процесс с учетными данными группы вместо учетных данных владельца.

Ссылки

6
11.10.2015, 19:13
1 ответ

Просто используйте --assume-clean и даже не синхронизируйтесь в первую очередь.

Как только вы создадите RAID, первое, что вы сделаете, это mkfs... и mkfs TRIMs по умолчанию, даже не спрашивая (если вы не используете -E nodiscard или подобное), и ваша синхронизация RAID уже не работает в этот момент.

В принципе, невозможно синхронизировать смешанный SSD+HDD RAID до тех пор, пока TRIM затрагивает только одну сторону. Даже в RAID-массиве SSD+SSD TRIM, скорее всего, вызовет различия, если это разные модели SSD или разные смещения разделов.

Это не проблема, пока TRIM затрагивает только "свободное пространство". Сами данные по-прежнему будут синхронизированы, и таким образом обеспечивается избыточность.

Если SSD когда-нибудь выйдет из строя или вы решите заменить HDD на другой SSD, тогда вы получите полную синхронизацию на SSD, поскольку это единственный способ, который md знает, как это сделать. md не записывает команды TRIM и, таким образом, запоминает "свободные" области для ускорения синхронизации; он также недостаточно умен, чтобы TRIM (и тем самым обнулить) целевой SSD и записывать только ненулевые данные. Возможно, когда SSD станут более распространенными, такие функции будут добавлены для ускорения синхронизации.

Но даже в этом случае не стоит сильно беспокоиться: TRIM - это долгосрочная мера, ваша файловая система будет видеть TRIM во время регулярного использования, поэтому со временем даже на полностью записанном SSD будет достаточно обрезанных областей.

4
27.01.2020, 20:29

Теги

Похожие вопросы