- KAZARIN OnLine
- Blog about IT, Me, education, etc…
- Вопросы для собеседования Системного администратора или DevOps инженера Linux. Часть 1
- Общие вопросы / General Questions
- KAZARIN OnLine
- Blog about IT, Me, education, etc…
- Вопросы для собеседования Системного администратора или DevOps инженера Linux. Часть 3. Medium Linux Questions — 1
- Вопросы среднего уровня сложности / Medium Linux Questions
KAZARIN OnLine
Blog about IT, Me, education, etc…
Вопросы для собеседования Системного администратора или DevOps инженера Linux. Часть 1
Всем привет! Некоторое время назад мне на глаза попалась одна интересная статейка на GitHub — Linux System Administrator/DevOps Interview Questions , попалась она в процессе поиска готового рецепта для собеседования на должность Linux Ops инженера ( капитан очевидность просто).
В итоге, я решил перевести приведенный в ней список вопросов на собеседование, а заодно постараться полно и структурировано ответить на эти вопросы. Таким образом я убиваю сразу двух зайцев — и себя проверяю ( может даже подтягиваю знания и навыки или освежаю их), и материал для блога пишу.
Поехали! Сегодня будет пачка вопрос из раздела «Общих» — эдакое вступление, которым с помощью которого вас могут «прощупать», чтобы понимать — стоит ли вообще идти дальше. Я буду публиковать вопрос и МОЙ ответ на него, а так же оригинал вопроса в скобках ( на случай если кто-то усомнится в правильности перевода).
Общие вопросы / General Questions
1. Что вы узнали, или изучили вчера или в течении последней недели? (What did you learn yesterday/this week?)
Прочел книгу Pro Git, начал читать книгу Google SRE, в запасах лежит еще книга по Ansibe и Docker, по CI/CD, LPIC курсы, ReDHat курсы а так же в голове есть планы на пару книг по СУБД.
2. Расскажите о ваших любимых инструментах администрирования или разработки. (ОС, Редактор, Браузер, утилита и тд)? (Talk about your preferred development/administration environment. (OS, Editor, Browsers, Tools etc.))
- Web browser — firefox + plugins
- Email client — thunderbird
- OS — ubuntu
- DE — KDE/Cinnamon
- Text editor — sublime text3 / vim
- IDE — PyCharm CE
3. Расскажите, какой последний крупных проект связанный с Linux вы закончили. (Tell me about the last major Linux project you finished.)
Создание инфраструктуры для веб студии моих друзей — на физических серверах в датацентре был поднят debian, поверх него proxmox кластер с рядом сервисов — Ansible, wiki, zabbix, gitlab, etc…
4. Расскажите, какую самую большую ошибку вы совершили [в некий недавний период времени] и как бы вы повели себя сейчас. Что вы вынесли для себя из этого опыта? (Tell me about the biggest mistake you’ve made in [some recent time period] and how you would do it differently today. What did you learn from this experience?)
Очищая место на сервере виртуализации случайно снес файлы-тома работающего сервера. Сервер продолжал работать, тк гипервизор держал открытые файловые дескрипторы удаленных томов,однако он не пережил бы ближайшую перезагрузку. С тех пор я зарекся делать какие-либо ручные (то есть не автоматизированные) операции на production системе, тк цена человеческой ошибки слишком высока. Сервер я тогда спас но времени и седых волос мне это стоило.
5. Почему мы должны выбрать вас? (Why we must choose you?)
Потому что я опытный, ответственный, инициативный, творческий инженер, разносторонний человек. А главное я скромный))))
6.Какие функции выполняет DNS сервис в сети? (What function does DNS play on a network?)
В сети ( причем не важно- локальной или в глобальной, типа Интернет), DNS занимается разрешением удобной, человеко-читаемых имен узлов в ip адреса. Можно обойтись и без DNS — использовать IP адреса, однако во первых это банально неудобно, сложно запомнить (да, пока у вас в сети 10 серверов в одной сети — все ок ,а когда у вас почти тысяча как у меня, в разных сетях и локациях — удачи!), а во вторых это тупо неудобно — ведь единожды задав в настройках ряда сервисов DNS имя узла, если мне придется перемещать сервис на другой хост, не достаточно будет сменить одну строчку- привязку имени к адресу, вместо того, чтобы бегать по всем серверам и переписывать это.
7. Что такое HTTP? (What is HTTP?)
“Протокол передачи гипертекста” или Hyper text transfer protocol — прикладной протокол, составляющий основу современного интернета в том виде, в котором его знают большинство пользователей. Изначально разрабатывался для передачи веб страниц, возможности ссылаться между ними друг на друга, а так же на другие ресурсы, делая тем самым интернет чуть более дружелюбным к пользователю. Однако в настоящий момент, он эволюционировал до использования его в качества транспорта и служебного протокола для куда более интересных вещей — как например webDav, Websocket и тп. https://ru.wikipedia.org/wiki/HTTP
8. Что такое HTTP прокси и как он работает? (What is an HTTP proxy and how does it work?)
Промежуточный узел в сети, выполняющий запросы к удаленным ресурсам от имени клиента. Клиентское приложение устанавливает соединение с прокси сервером и отправляет ему запрос так, словно это целевой сервер запрашиваемого ресурса. Прокси, не закрывая соединение, валидирует запрос, разрешает запрашиваемый fqdn хоста назначения, обращается к нему от имени клиента, получает ответ и возвращает его клиенту, после чего закрывает соединение. Если на прокси сервере включено кеширование и кеш “прогрет”, ответ может быть возвращен из него, без обращения к серверу назначения.
9. Кратко опишите как работает HTTPS. (Describe briefly how HTTPS works.)
Работа HTTPS по сути своей не отличается от работы протокола HTTP, т.к. сам прикладной протокол используется тот же, с разницей лишь что для защиты используется дополнительный нижележащий уровень, реализуемый протоколом TLS ( ранее SSL). При подключении клиента к серверу, последний отправляет клиенту сертификат с открытым ключом и подписью этого ключа удостоверяющим центром. Клиент и сервер договариваются о параметрах подключения, используя средства асимметричной криптографии устанавливают сеансовый ключ, после чего начинают уже привычную http сессию, шифрованную посредством TLS, с использованием симметричного криптографического алгоритма и сеансового ключа.
10. Что такое SMTP? Опишите базовый сценарий — как обычное сообщение электронной почты доставляется с помощью SMTP. (What is SMTP? Give the basic scenario of how a mail message is delivered via SMTP.)
SMTP- Simple mail transfer protocol. Простой протокол передачи почты. Основной ( и дефакто единственный) протокол передачи электронной почты в наше время. Доставляется сообщение просто — пользовательский почтовый агент (MUA) при отправке сообщения, связывается по протоколу smtp с почтовым сервером или точнее с его функцией MSA/MTA (Mail submission/transfter agent — агент отправки/передачи почты), который в свою очередь, анализируя домен получателя, с помощью системы DNS находит хост, ответственный за прием почты в домене адресата (MX — mail exchanger или почтовый обменник) и передает письмо ему. Тот в свою очередь связывается с агентом доставки почты (MDA), передает письмо ему, а тот уже укладывает его в “почтовый ящик” (в виде каталога и набора файлов, записи в БД и тп). Вся эта цепочка реализуется при помощи протокола smtp. Получение письма с почтового сервера реализуется уже другими протоколами.
11. Что такое RAID? Что такое RAID0, RAID1, RAID5, RAID10? (What is RAID? What is RAID0, RAID1, RAID5, RAID10?)
RAID — Redundant Array of Independent Disks или избыточный массив независимых дисков. Как ясно из названия — набор дисков, не связанных между собой напрямую, а только лишь логикой работы, которые обеспечивают избыточность при хранении данных. Как обеспечивается избыточность — зависит от т.н. “уровня raid массива” — как раз тех самых пресловутых raid0 — raid10. Это виды конфигураций массива, отличающиеся логикой работы, минимальным числом диска, “потерями” места на хранение (то есть сколько мы потеряем “чистого” места для обеспечения избыточности), скоростью работы, отказоустойчивостью, легкостью и временем восстановления. Так например:
- Raid0 — не обеспечивает никакой избыточности, просто объединяя 2 и более дисков в одно “плоское” хранилище, распараллеливая операции записи ( и соответственно чтения, если данные которые мы читаем были записаны на разные диски массива). Хорошо подходит для данных, которыми мы не дорожим но которые надо быстро читать и писать- например кеш. Полезную дисковую емкость мы при использовании такого типа массива не теряем. Выход из строя одного диска означает потерю данных в целом, если вы не использовали какие-то более высокоуровневые механизмы обеспечения отказоустойчивости.
- Raid1 — зеркало. Два и более дисков которые соединены в просто зеркальное хранилище. То есть один диск является полной копией другого. В некоторых случаях позволяет ускорить запросы на чтение. Теряем половину полезной дисковой емкости, жертвуя ею в угоду избыточности. Выход из строя одного диска мы спокойно переживем, однако на восстановление нам потребуется полное перечитывание оставшегося в живых устройства и полная синхронизация с ним нового диска, подключенного на замену вышедшему из строя.
- Raid5 — массив из минимум 3 дисков. В данном случае избыточность обеспечивается не зеркалированием данных а расчетом уникальной контрольной суммы от данных хранимых на двух дисках и записью ее на третий — условно говоря у вас есть блок данных, записанных на диск 1, блок на диск 2 и контрольная сумма на диск 3. При записи следующей пачки блоков диски меняются ролями — сумма может быть на 2, а данные на 1 и 3 и тд. Выделенного диска под контрольные суммы нет, данные и метаинформация равномерно распределяются между всеми устройствами в массиве. За счет
- Raid10 — массив минимум из 4 дисков, по сути представляет собой комбинацию массивов 1 + 0 — то есть два зеркала объединенных в единое плоское хранилище. Мы по прежнему жертвуем половиной доступного пространства однако пытаемся ускорить наше чтение, как это делается в raid0 массиве.
12. Что такое “бекап уровня 0”? Что такое инкрементальный бекап? (What is a level 0 backup? What is an incremental backup?)
Резервная копия уровня 0 — это аналог полной резервной копии в инкрементальном резервном копировании. Итак, что такое полная резервная копия — это просто полная целостная копия сохраняемого объекта. Дамп базы, архив файлов с файл сервера, весь набор блоков, снятый с раздела файловой системы и тп. При инкрементальном или добавочном резервном копировании мы делаем бекап только тех файлов, которые изменены с момента предыдущего успешного резервного копирования. Это ключевое отличие этого метода от диференциального или разностного бекапа, где делается копия файлов, измененных с момента последнего полного резервного копирования.
Инкрементальный бекап самый быстрый- что изменили то и сохранили, однако в случае восстановления он наоборот получается самым медленным т.к. вам необходимо вначале восстановить последнюю нулевую копию а потом последовательно “накатить” на нее все инкрементальные копии.
13. Опишите общее системную иерархию файловой системы Linux. (Describe the general file system hierarchy of a Linux system.)
Стандарт структуры и иерархии файловой системы, изначально предназначенный для linux систем, но позже подхваченный некоторыми разработчики других unix подобных ОС. Описывает файловую структуру как единое иерархическое дерево, даже если некоторые каталоги физически находятся на других носителях ( в отличии от той же windows, которая может это реализовывать но не делает этого по умолчанию). Большинство дистрибутивов linux так или иначе следуют этому стандарту, однако не соблюдают его строго. Есть дистрибутивы, намеренно игнорирующие его. Подробно про структуру можно почитать на википедии ( конечно я не ответил бы так на собеседовании, просто не хочу загромождать статью “копипастой” оттуда): https://ru.wikipedia.org/wiki/FHS
В следующей статье будет опубликован более объемный список вопросов из второго блока — «Простые вопросы / Simple Linux Questions» (28 штук).
Источник
KAZARIN OnLine
Blog about IT, Me, education, etc…
Вопросы для собеседования Системного администратора или DevOps инженера Linux. Часть 3. Medium Linux Questions — 1
Всем привет! В прошлой статье мы продолжили разбор статьи с GitHub — Linux System Administrator/DevOps Interview Questions.
Сегодня будет пачка вопрос из раздела «Средние» — экзамен на звание Middle Linux administrator. Так как в оригинальной статье этот блок вышел довольно объемным (49 вопросов), я решил разбить его на 2 части (29 и 30 соответственно).
Вопросы среднего уровня сложности / Medium Linux Questions
1. Что делают следующие команды и как вы можете их использовать? (What do the following commands do and how would you use them?): tee, awk, tr, cut, tac, curl, wget, watch, head, tail
- tee — читает со стандартного ввода (stdin) и выводит на стандартный вывод (stdout) и в указанный файл. Очень удобно когда вашему скрипту нужно и лог писать, и интерактивно сообщения на экран отправлять
- awk — потоковый редактор который помогает управлять текстом при выводе. Я например использую его для удобного оперирования многоколоночным текстом.
- tr — утилита для управления символами во входящем потоке текста. Подставлять или удаляет указанные символы
- cut — утилита обработки текста, позволяющая выбирать колонки из текста или поля из строки
- tac — команда, обратная команде cat — выводит файл (или конкатенацию файлов) но задом-наперед
- curl клиентская программа для взаимодействия с серверами, поддерживающими формат url обращений, обычно веб серверами. Лично я применяю ее как консольный клиент для работы с веб серверами- проверить доступность, статус, дернуть api и тд.
- wget — утилита для сетевой загрузки файлов.
- watch — утилита позволяющая отслеживать вывод не интерактивной программы, запуская ее многократно, с указанным интервалом времени. Удобно когда вы хотите посмотреть какой то процесс в динамике — например “watch cat /proc/mdstat”
- head — утилита обработки текста. Вывод указанное число строк с начала файла
- tail утилита обработки текста. Вывод указанное число строк с конца файла. Может работать в режиме постоянного чтения и вывода на экран информации, дописываемой другим процессом в конец файла. Удобно смотреть логи в режиме реального времени
2. Что сделает символ &, введенный сразу после команды? (What does an & after a command do?)
Автоматически отправляет команду работать в виде фонового процесса Вашей текущей сессии. Посмотреть список таких процессов можно командой jobs, вернуть назад при помощи команды fg:
$ ping ya .ru > / dev / null &
3. Что такое пакетный фильтр и как он работает? (What is a packet filter and how does it work?)
Пакетный фильтр — обобщенное название системы фильтрации трафика в linux-based операционных системах. Подсистема ядра, занимающаяся анализом и обработкой всех входящих сетевых пакетов заданным администратором правилам. Трафик либо пропускается, либо отбрасывается, либо каким-то образом маршрутизируется, либо логируется. Так же возможны некоторые комбинации этих действий.
4. Что такое виртуальная память? (What is Virtual Memory?)
Метод управления памятью, позволяющий выделить процессу памяти больше, чем на самом деле это возможно сделать. Программе “выделяется” некий пул страниц памяти, которые в дальнейшем могут быть перемещены на диск, в специализированную область подкачки, либо наоборот, “подняты” из нее в случае необходимости.
5. Что такое swap и для чего он используется? (What is swap and what is it used for?)
Специально выделенная область диска или файл, использующийся для расширения виртуального адресного пространства памяти ( см виртуальная память) за счет места на дисковом устройстве.
6. Что такое A, NS, PTR и CNAME записи? (What is an A record, an NS record, a PTR record, a CNAME record, an MX record?)
Ресурсные записи системы dns:
- A — основная запись, ставящая человеко-читаемое имя в формате fqdn в соответствие ip адресу.
- NS — ресурсная запись, содержащая информацию об ip адресе dns сервера, обслуживающего данный домен
- PTR — т.н. “обратная” ресурсная запись, противоположная А, ставящая в соответствие ip адресу имя в формате fqdn
- CNAME — ресурсная запись- псевдоним, позволяющая создать одноуровневую переадресацию, задавая соответствие имя-имя (например для сервера srv.example.com, функциональный псевдоним mail.example.com)
7. Какие есть еще ресурсные записи и для чего они используются? (Are there any other RRs and what are they used for?)
- MX — ресурсная запись, указывающая на сервер, обслуживающий почту в домене
- TXT — произвольная текстовая запись. Часто используется для различных проверок
- SRV — сервисная ресурсная запись. Указывает на местоположение серверов, обеспечивающих тот или иной сервис. Пример — Active Directory
- SOA — Базовая запись DNS зоны с ее параметрами и прочими ресурсными записями внутри.
- AAAA — то же самое что и A, только для ipv6
8. Что такое расщепление горизонта в терминах dns? (What is a Split-Horizon DNS?)
Прием, используемый для разрешения одного и того же DNS имени в разные ( по смыслу) IP адреса, например mail.example.com изнутри сети направит клиентов непосредственно на внутренний почтовый сервер, а снаружи, пользователи будут направлены на сервер, стоящий перед почтовиком и выполняющий роль антивирусного и спам сканера.
9. Что такое “липкий” бит? (What is the sticky bit?)
Дополнительный атрибут файла в UNIX файловых системах. Изначально он означал что программа, будучи запущена, должна оставаться в оперативной памяти целиком для ускорения работы и повторных обращений. С ростом объема оперативной памяти это стало не актуально и теперь этот бит выполняет роль защитного предохранителя для каталогов — если на каталог установлен “липкий бит”, пользователь, даже имея все необходимые права, сможет удалить только те файлы, владельцем которых он является.
10. Что означает для файла выставленный иммутабельный бит? (What does the immutable bit do to a file?)
Дополнительный атрибут файла в UNIX файловых системах, который будучи установленным для конкретного файла, не позволяет записывать в него изменения, тем самым принудительно устанавливая на него режим “только для чтения” (даже если редактировать его попытается пользователь с привилегиями root).
11. В чем разница между жесткой ссылкой/хардлинком и мягкой ссылкой/симлинком? Что происходит когда вы удаляете хардлинк/симлинк? (What is the difference between hardlinks and symlinks? What happens when you remove the source to a symlink/hardlink?)
Хардлинк — это по сути имя файла, символическое значение, ссылающееся на значение inode в файловой системе. Именно поэтому нельзя создать хардлинк на другой раздел. Хардлинков может быть создано более одного — это будут разные имена одного и того же файла. До тех пор пока существует хотя бы один хардлинк, файл существует.
Софтлинк это файл который просто внутри себя содержит указание на другой файл ( его имя). поэтому софтлинки являются более гибким решением, например могут указывать на файл, хранящийся на другой файловой системе), однако если оригинальный файл удален, симлинк остается и становится не рабочим.
12. Что такое айнода и что хранится в ней? (What is an inode and what fields are stored in an inode?)
Структура данных файловой системы в которой хранится информация о файле ( по одной айноде на файл), такая как:
- Блок данных с которого файл начинается
- Дата создания, изменения
- Права доступа
- Владелец
Имя файла не хранится в айноде — это хардлинк
13. как принудительно заставить систему выполнить проверку файловой системы при следующей загрузке? (How to force/trigger a file system check on next reboot?)
Мне известны два способа:
- Создать в корне пустой файл: touch /forcefsck — его наличие переопределяет все настройки для fsck в файле /etc/fstab и заставляет систему принудительно проверить корневую файловую систему при запуске. После успешной проверки файл удаляется
- Использовать команду tune2fs -c 1 /dev/sdb1 чтобы включить проверку файловой системы на sdb1 при следующей загрузке.
14. Что такое snmp и для чего он используется? (What is SNMP and what is it used for? )
simple network management protocol. переводить я думаю не нужно) Является стандартом дефакто в мире сетевого мониторинга, позволяя снимать различные метрики с хостов, устройств и любых объектов, которые могут быть подключены к сети и на которых производитель реализовал поддержку этого протокола.
15. Что такое уровень запуска и как посмотреть текущий? (What is a runlevel and how to get the current runlevel? )
Нумерованный режим функционирования операционной системы. В зависимости от номера ( уровня) зависит объем задействованных возможностей, например:
- 1 — однопользовательский режим, предназначен для различных административных действий по восстановлению системы; на этом уровне выполнения система полностью сконфигурирована, но не запущен ни один сервис, а из пользователей может работать только один root;
- 2 — многопользовательский режим без поддержки сети
- 3 — многопользовательский режим с поддержкой сети, нормальный режим работы сервера;
- 5 — загрузка в многопользовательском режиме с графическим входом в систему;
Текущий уровень можно посмотреть командой runlevel:
Источник