Как разработчик или гик, Linux достоин вашего высокого статуса.
В этой статье описывается введение и структура Linux, пусть вы узнаете эту сексуальную мисс Линас.
Что такое линукс?
Если вы никогда раньше не сталкивались с Linux, вам может быть непонятно, почему существует так много разных дистрибутивов Linux. Когда вы смотрите на пакеты Linux, вас наверняка смущают такие термины, как дистрибутив, LiveCD и GNU. Вхождение в мир Linux в первый раз может показаться немного менее комфортным. Прежде чем вы начнете изучать команды и сценарии, в этой главе мы немного демистифицируем вашу систему Linux. Во-первых, Linux можно разделить на следующие четыре части:
- ↪ Ядро Linux
- ↪ Набор инструментов GNU
- ↪ Среда рабочего стола с графическим интерфейсом
- ↪применение ...
|--------------------------|
| APPS | 应用软件
|--------------------------|
| | GUI桌面环境
| GUI |-------------|
| | GNU | GNU工具链
|--------------------------|
| kernel | Linux内核
|--------------------------|
| hardware | 计算机硬件
----------------------------
1. Ядро Linux
Ядром системы Linux является ядро. Ядро управляет всем аппаратным и программным обеспечением в компьютерной системе, выделяя аппаратное обеспечение, когда это необходимо, и выполняя программное обеспечение по мере необходимости.
- Управление системной памятью
- Управление приложением
- Аппаратное управление устройствами
- Управление файловой системой
1. Система управления памятью
Одной из основных функций ядра операционной системы является управление памятью. Ядро управляет не только доступной физической памятью на сервере, но также создает и управляет виртуальной памятью (то есть памятью, которой на самом деле не существует).
-
Ядро реализует виртуальную память через пространство хранения на жестком диске, которое называется пространством подкачки. Ядро постоянно меняет содержимое виртуальной памяти между пространством подкачки и фактической физической памятью. Это заставляет систему думать, что у нее больше доступной памяти, чем физической памяти.
-
Карта системной памяти Linux
|---------| -----------
| | | 物理内存 |
| | /----------
| | ---------
| 虚拟内存 | —— | 内核 |
| | ---------
| | \----------
| | | 交换空间 |
|---------| -----------
2. Управление приложениями
Операционная система Linux относится к работающим программам как к процессам. Процессы могут выполняться на переднем плане, выводя результат на экран, или в фоновом режиме, скрываясь за кулисами. Ядро контролирует, как система Linux управляет всеми процессами, работающими в системе.
-
Ядро создает первый процесс (называемый процессом инициализации) для запуска всех остальных процессов в системе. Когда ядро запустится, оно будет загружено в виртуальную память процесса инициализации. Ядру при загрузке любого другого процесса назначается определенная область для хранения данных и кода, используемых в процессе нового процесса в виртуальной памяти.
-
Операционная система Linux имеет пятиэтапный запуск.
- Когда уровень выполнения равен 1, запускаются только основные системные процессы и процесс консольного терминала. Мы называем это однопользовательским режимом. Однопользовательский режим обычно используется для срочного обслуживания файловой системы при возникновении проблем с системой. Очевидно, что в этом режиме только один человек (обычно системный администратор) может войти в систему для управления данными.
- Стандартный уровень запуска при запуске — 3. На этом уровне запуска запускается большинство прикладных программ, таких как программы поддержки сети.
- Обычный уровень запуска в Linux — 5. На этом уровне запуска система запустит графическую систему X Window, позволяя пользователям входить в систему через графическое окно рабочего стола.
3. Управление оборудованием
Еще одной обязанностью ядра является управление аппаратными устройствами. Любое устройство, с которым система Linux должна взаимодействовать, должно добавить свой код драйвера в код ядра. Код драйвера действует как посредник между приложением и аппаратным устройством, позволяя ядру обмениваться данными с устройством. Существует два метода вставки кода драйвера устройства в ядро Linux:
- Код драйвера устройства скомпилирован в ядро
- подключаемый к ядру модуль драйвера устройства
Раньше единственным способом вставить код драйвера устройства была перекомпиляция ядра. Каждый раз, когда в систему добавляется новое устройство, код ядра необходимо перекомпилировать. Поскольку ядро Linux поддерживает все больше и больше аппаратных устройств, этот процесс становится все более и более неэффективным. К счастью, разработчики Linux придумали лучший способ вставки кода драйвера в работающее ядро.
Разработчики придумали концепцию модулей ядра. Это позволяет вставлять код драйвера в работающее ядро без перекомпиляции ядра. В то же время модули ядра также могут быть удалены из ядра, когда устройство больше не используется. Такой подход значительно упрощает и расширяет использование аппаратных устройств в Linux.
-
Система Linux рассматривает аппаратные устройства как специальные файлы, называемые файлами устройств. Существует 3 категории файлов устройств:
- файл символьного устройства
- Файл символьного устройства относится к устройству, которое может обрабатывать только один символ за раз при обработке данных. Большинство типов модемов и терминалов создаются в виде файлов символьных устройств.
- блокировать файл устройства
- Файл блочного устройства — это устройство, способное обрабатывать большие блоки данных при каждой обработке данных, например жесткий диск.
- файл сетевого устройства
- Файлы сетевых устройств относятся к устройствам, которые используют пакеты данных для отправки и получения данных, включая различные сетевые карты и специальное устройство обратной связи. Это петлевое устройство позволяет системе Linux взаимодействовать с самой собой, используя общие протоколы сетевого программирования.
- файл символьного устройства
-
Linux создает специальный файл, называемый узлом, для каждого устройства в системе. Вся связь с устройствами осуществляется через узлы устройств. Каждый узел имеет уникальную пару значений для идентификации ядром Linux. Пара значений состоит из старшего числа и младшего числа. Устройства одного класса группируются под одним и тем же старшим номером устройства. Младший номер устройства используется для идентификации конкретного устройства в основной группе устройств.
4. Управление файловой системой
В отличие от некоторых других операционных систем, ядро Linux поддерживает чтение и запись данных с жесткого диска через различные типы файловых систем. Удалить В дополнение к многочисленным файловым системам Linux также поддерживает файлы, взятые из других операционных систем (например, Microsoft Windows). Чтение и запись данных в системе. Ядро должно быть скомпилировано с поддержкой всех возможных файловых систем. Таблица 1-1 списки Стандартная файловая система, используемая системами Linux для чтения и записи данных.
ext | Linux扩展文件系统,最早的Linux文件系统
ext2 | 第二扩展文件系统,在ext的基础上提供了更多的功能
ext3 | 第三扩展文件系统,支持日志功能
ext4 | 第四扩展文件系统,支持高级日志功能
hpfs | OS/2高性能文件系统
jfs | IBM日志文件系统
iso9660 | ISO 9660文件系统(CD-ROM)
minix | MINIX文件系统
msdos | 微软的FAT16
ncp | Netware文件系统
nfs | 网络文件系统
ntfs | 支持Microsoft NT文件系统
proc | 访问系统信息
ReiserFS | 高级Linux文件系统,能提供更好的性能和硬盘恢复功能
smb | 支持网络访问的Samba SMB文件系统
sysv | 较早期的Unix文件系统
ufs | BSD文件系统
umsdos | 建立在msdos上的类Unix文件系统
vfat | Windows 95文件系统(FAT32)
XFS | 高性能64位日志文件系统
- Все жесткие диски, к которым обращается сервер Linux, должны быть отформатированы с использованием одного из типов файловой системы, перечисленных в Таблице 1-1.
- Ядро Linux использует виртуальную файловую систему (VFS) в качестве интерфейса для взаимодействия с каждой файловой системой. Это обеспечивает стандартный интерфейс для взаимодействия ядра Linux с любым типом файловой системы. Когда каждая файловая система монтируется и используется, VFS кэширует информацию в памяти.
2. Набор инструментов GNU
Организация GNU (GNU означает GNU's Not Unix) разработала полный набор инструментов Unix, но не имела системы ядра, на которой можно было бы их запускать. Эти инструменты разработаны в соответствии с концепцией программного обеспечения, называемой программным обеспечением с открытым исходным кодом (OSS).
Идея программного обеспечения с открытым исходным кодом позволяет программистам разрабатывать программное обеспечение и распространять его бесплатно. Любой желающий может использовать, модифицировать или интегрировать программное обеспечение в свои системы без уплаты каких-либо лицензионных сборов. Интеграция ядра Linux Linus с инструментами операционной системы GNU позволяет получить полную и многофункциональную бесплатную операционную систему.
- Хотя сочетание ядра Linux и инструментов GNU часто называют Linux, вы также увидите, что некоторые сторонники чистоты Linux в Интернете называют его системой GNU/Linux в знак уважения к вкладу, сделанному организацией GNU.
основные инструменты GNU
Пакет GNU coreutils состоит из трех частей:
- Инструменты для работы с файлами
- инструменты для работы с текстом
- инструменты для управления процессами
Shell
Оболочка GNU/Linux — это специальный интерактивный инструмент. Он предоставляет пользователям возможность запускать программы, управлять файлами в файловой системе и процессами, работающими в системе Linux. Ядром оболочки является приглашение командной строки. Приглашение командной строки — это часть оболочки, отвечающая за взаимодействие. Он позволяет вам вводить текстовые команды, которые затем интерпретируются и выполняются в ядре.
- Команды, которые мы вводим в командной строке, предоставляются набором инструментов GNU, а не ядром Linux.
- Оболочкой по умолчанию для всех дистрибутивов Linux является оболочка bash. Оболочка bash была разработана проектом GNU в качестве замены стандартной оболочки Unix, оболочки Bourne (названной в честь ее создателя).
- Несколько различных оболочек, обычно встречающихся в Linux
bash | 由GNU项目开发,被当作标准shell
ash | 运行在内存受限环境中简单的轻量级shell,但与bash shell完全兼容
korn | 与Bourne shell兼容的编程shell,但支持如关联数组和浮点运算等一些高级的编程特性
tcsh | 将C语言中的一些元素引入到shell脚本中的shell
zsh | 结合了bash、tcsh和korn的特性,同时提供高级编程特性、共享历史文件和主题化提示符的高级shell
3. Среда рабочего стола Linux
На заре Linux (начало 1990-х) был доступен только простой текстовый интерфейс операционной системы Linux. Этот текстовый интерфейс позволяет системным администраторам запускать программы, контролировать их выполнение и перемещать файлы по системе.
С ростом популярности Microsoft Windows пользователи компьютеров перестали удовлетворяться работой со старомодным текстовым интерфейсом. Это способствовало активизации деятельности по разработке в сообществе OSS, и появилась графическая среда рабочего стола Linux.
- X оконная система
Есть два основных элемента, которые определяют видеосреду: видеокарта и монитор. Чтобы отображать блестящие изображения на компьютере, программное обеспечение Linux должно знать, как взаимодействовать с ними. Система X Window является основной частью графического дисплея.
Система X Window — это базовая программа, которая напрямую взаимодействует с графической картой и монитором на ПК. Он контролирует, как программы Linux отображают красивые окна и графику на компьютере.
- Наиболее популярными средами рабочего стола являются
Unity
GNOME
Cinnamon
Xfce
Ждать
дистрибутив Linux
Теперь, когда вы знаете 4 ключевых компонента, составляющих полную систему Linux, вы можете подумать о том, как объединить их в систему Linux. К счастью, кто-то уже сделал это за вас
Основной дистрибутив Linux
Основной дистрибутив Linux содержит ядро, одну или несколько графических сред рабочего стола и предварительно скомпилированные почти все доступные приложения Linux. Он обеспечивает комплексную полную установку Linux.
Slackware | 最早的Linux发行版中的一员,在Linux极客中比较流行
Redhat | 主要用于Internet服务器的商业发行版
Gentoo | 为高级Linux用户设计的发行版,仅包含Linux源代码
openSUSE | 用于商用和家用的发行版
Debian | 在Linux专家和商用Linux产品中流行的发行版
системный каталог
|—— bin # 二进制目录,存放用户级的GNU工具(bash命令)
|—— boot # 启动目录,存放用于系统引导时使用的各种文件
|—— dev # 设备目录,存放硬件设备,创建设备节点
|—— etc # 系统配置文件目录,存放系统管理和配置文件
|—— home # 普通用户的主目录
|—— lib # 库目录,存放系统和应用程序的动态链接库
|—— lost+found # 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件
|—— media # 媒体目录,可移动媒体设备的常用挂载点
|—— mnt # 挂载目录,另一个可移动媒体设备的常用挂载点
|—— opt # 可选目录,常用于存放第三方软件包和数据文件
|—— proc # 进程目录,存放现有硬件及当前进程的相关信息,是系统内存的映射。可直接访问这个目录来获取系统信息
|—— root # 超级用户的主目录
|—— run # 运行目录,存放系统运作时的运行时数据
|—— sbin # 系统二进制目录,存放许多GNU管理员级工具
|—— srv # 服务目录,存放本地服务的相关文件
|—— sys # 系统目录,存放系统硬件信息的相关文件
|—— tmp # 临时目录,可以在该目录中创建和删除临时工作文件,重启后清空
|—— usr # 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
| |—— bin # 包含系统安装的可执行程序。通常,这个目录会包含许多程序
| |—— games #
| |—— include # 写程序需要使用到的一些头文件
| |—— lib # 包含由/usr/bin 目录中的程序所用的共享库
| |—— local # 是非系统发行版自带,却打算让系统使用的程序的安装目录。 通常,由源码编译的程序会安装在/usr/local/bin 目录下
| |—— sbin # 包含许多系统管理程序
| |—— share # 存放帮助文档和共享文件
| |—— src #
|—— var # 可变目录,用以存放经常变化的文件,比如日志文件
права доступа к файлам - символы разрешений
- Выполнение командной строки:
ls -l
drwxr-xr-x
# 文件类型 属主权限 成员权限 其他用户权限
d rwx r-x r-x
|—— 文件类型
| |—— - # 文件
| |—— d # 文件夹
| |—— l # 链接
| |—— c # 字符型设备
| |—— b # 块设备
| |—— n # 网络设备
|
|—— r # 可读权限
|—— w # 可写权限
|—— x # 可执行权限
Файловая система
- ext
Самая ранняя файловая система, представленная в операционной системе Linux, называется расширенной файловой системой (extended file system, сокращенно ext). Он предоставляет базовую Unix-подобную файловую систему для Linux: используйте виртуальные каталоги для работы с аппаратными устройствами и храните данные в блоках фиксированной длины на физических устройствах.
Файловая система ext использует систему, называемую inodes, для хранения информации о файлах, хранящихся в виртуальных каталогах. Система инодов создает отдельную таблицу (называемую таблицей инодов) на каждом физическом устройстве для хранения информации об этих файлах. Каждый файл, хранящийся в виртуальном каталоге, имеет запись в таблице инодов. Расширенная часть имени файловой системы ext исходит из дополнительных данных для каждого файла, который она отслеживает.
- 文件名
- 文件大小
- 文件的属主
- 文件的属组
- 文件的访问权限
- 指向存有文件数据的每个硬盘块的指针
Linux обращается к каждому иноду в таблице инодов по уникальному числовому значению (называемому номером инода), которое назначается файловой системой при создании файла. Файловая система идентифицирует файлы по их номерам инодов, а не по полным именам и путям.
- ext2
Самые ранние файловые системы ext имели ряд ограничений, таких как размер файла не более 2 ГБ. Вскоре после появления Linux файловая система ext была обновлена до расширенной файловой системы второго поколения под названием ext2.
файловая система журналирования
Журналируемая файловая система добавляет уровень безопасности в систему Linux. Он больше не использует практику записи данных непосредственно на устройство хранения с последующим обновлением таблицы инодов, а сначала записывает изменения файла во временный файл (называемый журналом).
После успешной записи данных на устройство хранения и в таблицу инодов соответствующая запись в журнале удаляется. Если система выйдет из строя или потеряет питание до того, как данные будут записаны на устройство хранения, журналируемая файловая система прочитает файл журнала в следующий раз и обработает незаписанные данные, оставшиеся с прошлого раза.
- ext3
Файловая система ext3 была введена в ядро Linux в 2001 году и до недавнего времени была файловой системой по умолчанию почти для всех дистрибутивов Linux. Он использует ту же структуру таблицы индексных дескрипторов, что и файловая система ext2, но добавляет файл журнала к каждому устройству хранения для регистрации данных, которые должны быть сначала записаны на устройство хранения.
- ext4
Файловая система ext4 была официально поддержана ядром Linux в 2008 году и теперь является файловой системой по умолчанию, используемой в большинстве популярных дистрибутивов Linux.
Помимо поддержки сжатия и шифрования данных, файловая система ext4 также поддерживает функцию, называемую экстентом. Экстенты выделяют место в блоках на устройстве хранения, но сохраняют только расположение начального блока в таблице инодов. Это экономит место в таблице инодов, поскольку не нужно перечислять все блоки, используемые для хранения данных в файле.
Ext4 также представила технологию предварительного выделения блоков (block preallocation). Если вы хотите зарезервировать место на устройстве хранения для файла, который, как вы знаете, станет больше, файловая система ext4 может выделить для файла все необходимые блоки, а не только те, которые уже используются. Файловая система ext4 заполняет зарезервированные блоки данных нулями и не выделяет их другим файлам.
LVM в Linux
Linux LVM был разработан Хайнцем Мауэльсхагеном и выпущен для сообщества Linux в 1998 году. Это позволяет вам управлять полной средой управления логическими томами в Linux с помощью простых команд командной строки.
- LVM1
Оригинальный пакет LVM был выпущен в 1998 году и был доступен только для ядра Linux версии 2.4. Он обеспечивает только базовую логику
- LVM2
Обновленная версия LVM, доступная для ядра Linux версии 2.6. Он предоставляет дополнительную функциональность помимо стандартной функциональности LVM1.
- снимок
Первоначальная Linux LVM позволяла копировать логический том на другое устройство, когда оно было подключено к сети. Эта функция называется моментальным снимком. Функция моментальных снимков очень полезна при резервном копировании важных данных, которые не могут быть заблокированы из-за высоких требований к надежности. Традиционные методы резервного копирования обычно блокируют файлы при их копировании на резервный носитель. Моментальные снимки позволяют выполнять репликацию, поддерживая работу критически важных веб-серверов или серверов баз данных. К сожалению, LVM1 позволяет создавать снимки только для чтения. После создания моментального снимка в него больше нельзя ничего записать.
LVM2 позволяет создавать моментальные снимки онлайновых логических томов с возможностью чтения и записи. С помощью моментального снимка для чтения и записи вы можете удалить исходный логический том и в качестве альтернативы смонтировать моментальный снимок. Эта функция полезна для быстрого восстановления после сбоя или программных экспериментов с измененными данными (в случае сбоя измененные данные необходимо восстановить).
- Полоска
Еще одна интересная функция, предоставляемая LVM2, — чередование. С помощью чередования логические тома можно создавать на нескольких физических жестких дисках. Когда Linux LVM записывает файл на логический том, блоки данных в файле распределяются по нескольким жестким дискам. Каждый последующий блок данных записывается на следующий жесткий диск. Чередование помогает повысить производительность жесткого диска, поскольку Linux может одновременно записывать несколько блоков данных файла на несколько жестких дисков, не дожидаясь, пока один жесткий диск переместит головки чтения и записи в несколько разных мест. Это улучшение также относится к чтению файлов с последовательным доступом, поскольку LVM может одновременно считывать данные с нескольких жестких дисков.
- зеркало
Монтирование файловой системы через LVM не означает, что файловая система не будет работать неправильно. Как и физические разделы, логические тома LVM подвержены перебоям в подаче электроэнергии и отказам дисков. Если файловая система повреждена, ее уже невозможно восстановить.
Функция моментальных снимков LVM обеспечивает некоторое удобство, поскольку вы можете создавать резервные копии логических томов в любое время, но для некоторых сред этого может быть недостаточно. Для систем, в которых происходят большие изменения данных, таких как серверы баз данных, могут храниться сотни или тысячи записей с момента последнего моментального снимка.
Одним из решений этой проблемы является зеркалирование LVM. Зеркало — это полная копия логического тома, которая обновляется в режиме реального времени. Когда вы создаете зеркальный логический том, LVM синхронизирует исходный логический том с зеркальной копией. В зависимости от размера исходного логического тома это может занять некоторое время.
После завершения исходной синхронизации LVM выполняет две записи для каждой записи в файловую систему — одну на первичный логический том и одну на зеркальную копию. Вполне возможно, что этот процесс снизит производительность записи системы. Даже если исходный логический том по какой-либо причине будет поврежден, у вас уже есть полная и актуальная копия!
резюме
Использование устройств хранения данных в Linux требует некоторых знаний о файловых системах. Знание того, как создавать и управлять файловыми системами из командной строки, может помочь вам при работе в Linux. Системы Linux отличаются от Windows тем, что первая поддерживает ряд различных методов хранения файлов и каталогов. Каждый метод файловой системы имеет разные характеристики, что делает его подходящим для разных сценариев.
Команда fdisk используется для разделения устройств хранения, чтобы можно было смонтировать файловые системы. При разбиении устройства хранения необходимо определить, какой тип файловой системы используется на нем. После разделения устройства хранения вы можете выбрать файловую систему для раздела. Популярные файловые системы Linux включают ext3 и ext4. Оба обеспечивают функциональность файловой системы журналирования, уменьшая вероятность возникновения ошибок или проблем при сбое системы Linux.
Одним из ограничивающих факторов при создании файловой системы непосредственно на разделе устройства хранения является то, что вы не можете легко изменить размер файловой системы, если у вас закончилось место на жестком диске. Но Linux поддерживает управление логическими томами, способ создания виртуальных разделов на нескольких устройствах хранения. Этот метод позволяет легко расширить существующую файловую систему без ее полной перестройки. Пакет Linux LVM предоставляет команды командной строки для создания логических томов на нескольких устройствах хранения.
如有写错或不对的地方,请指正