LVM в Linux – работа с логическими дисками

Цепочка команд Linux означает объединение нескольких команд и выполнение их на основе оператора, используемого между ними. Цепочка команд в Linux — это то, когда вы пишете короткие скрипты оболочки в самой оболочке и выполняете их непосредственно из терминала. Цепочка позволяет автоматизировать процесс. Более того, необслуживаемая машина может функционировать более систематически с помощью операторов цепочки.

Аргументы командной строки

Из урока №3 мы уже знаем, что при компиляции и линкинге, компилятор создает исполняемый файл. Когда программа запускается, выполнение начинается с первой строки функции main(). До этого урока мы объявляли main() следующим образом:

int main()

1 int main()

Обратите внимание, в этой версии функции main() никаких параметров нет. Тем не менее, многие программы нуждаются в некоторых входных данных. Например, предположим, что вы пишете программу под названием Picture, которая принимает изображение в качестве входных данных, а затем делает из этого изображения миниатюру (уменьшенная версия изображения). Как функция picture() узнает, какое изображение нужно принять и обработать? Пользователь должен сообщить программе, какой файл следует открыть. Это можно сделать следующим образом:

// Программа: Picture #include <iostream> #include <string> int main() { std::cout << «Enter name of image-file to create a thumbnail for: «; std::string filename; std::cin >> filename; // Открываем файл-изображение // Создаем миниатюру // Выводим миниатюру }

1234567891011121314 // Программа: Picture#include <iostream>#include <string> int main(){ std::cout << «Enter name of image-file to create a thumbnail for: «; std::string filename; std::cin >> filename; // Открываем файл-изображение // Создаем миниатюру // Выводим миниатюру }

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

Рассмотрим это детально. Например, вы хотите создать миниатюры для всех файлов-изображений, которые находятся в определенном каталоге. Как это сделать? Вы можете запускать эту программу столько раз, сколько есть изображений в каталоге, введя каждое имя файла вручную. Однако, если есть сотни изображений, такой подход будет, мягко говоря, не очень эффективным! Решением здесь будет написать программу, которая перебирала бы каждое имя файла в каталоге, вызывая каждый раз функцию picture() для каждого файла.

Читайте также:  Как остановить проникновение Win32 / Toolbar.Conduit Trojan?

Теперь рассмотрим случай, когда у вас есть веб-сайт, и вы хотите, чтобы он создавал миниатюру каждый раз, когда пользователь загружает изображение на сайт. Эта программа не может принимать входные данные из Интернета и следует логический вопрос: «Как тогда вводить имя файла?». Выходом является вызов веб-сервером функции picture() автоматически каждый раз после загрузки файла.

В обоих случаях нам нужно, чтобы внешняя программа передавала имя файла в качестве входных данных в нашу программу при её запуске, вместо того, чтобы функция picture() сама дожидалась, пока пользователь вручную введет имя файла.

Аргументы командной строки — это необязательные строковые аргументы, передаваемые операционной системой в программу при её запуске. Программа может их использовать в качестве входных данных, либо игнорировать. Подобно тому, как параметры одной функции предоставляют данные для параметров другой функции, так и аргументы командной строки предоставляют возможность людям или программам предоставлять входные данные для программы.

Что такое командная строка bash?

Bash расшифровывается как Bourne again shell (что возможно перевести как «Еще одна оболочка Борна»), название частично заимствованно от более ранешней версии командной оболочки UNIX, которая называлась просто Bourne shell («Оболочка Борна» – по имена разработчика Стивена Борна). Bash позволяет интерактивно взаимодействовать с компьютером, вводя некоторые команды и получая на них соответствующий отклик. Также этот командный процессор позволяет исполнять скрипты (команды из файла), может производить автодополнение названий файлов и директорий, благоволит использование переменных, операторов ветвления и цикла. Далее в статье будут приведены наиболее простые и необходимые для работы в bash команды, которые помогут вам сориентироваться и начать сами использовать командную строку для своих задач, но сначала необходимо перейти к интерфейсу инструктивной строки.

Командный интерпретатор bash – это один из нескольких интерпретаторов, доступных в Linux. Иное свое название – Bourne-again shell – интерпретатор bash получил в честь Стивена Борна (Stephen Bourne), творца его ранней версии (/bin/sh). По большей части bash совместим с sh, но содержит множество улучшений, касающихся как функциональность, так и возможности программирования. Bash сочетает возможности интерпретаторов Korn shell (ksh) и C shell (csh) и представляется POSIX-совместимым интерпретатором.

Читайте также:  Как посмотреть пароль под звездочками в браузере яндекс и гугл хром

Как использовать LVM

Итак, вот что мы имеем:

# fdisk -l

Устройство /dev/sda не трогаем, системное. Для других нужд. А вот sdb и sdc объемом 2 и 3 Гб соответственно будем объединять в одну логическую группу.

Шаг 1. Создадим разделы на устройствах

# fdisk /dev/sdb # fdisk /dev/sdc

Оба раздела настраиваются аналогично. Важно, чтобы тип раздела был Linux LVM (посмотреть типы можно нажав l после t в консоли fdisk).

Шаг 2. Создаем “Физические диски” Physical Volume

Для этого служит команда pvcreate и указание девайса.

# pvcreate /dev/sdb1 # pvcreate /dev/sdc1

Убедимся, что всё получилось. Просмотреть физические тома можно командой:

# pvs

Более подробная информация будет показана при команде

# pvdisplay

Шаг 3. Создаем группу томов (Volume Group)

Создать группу томов из физических томов можно посредством команды vgcreate и указании имени группы, а так же входящих в эту группу устройств (это, кстати, даёт возможность заводить несколько различных групп):

Как использовать LVM

# vgcreate litl_admin /dev/sdb1 /dev/sdc1

Просмотреть созданные группы можно командой:

# vgs

Как видим, здесь фиксируется имя группы, количество физических томов, логических томов, атрибуты, виртуальный размер и объем свободного виртуального места. Почему виртуального? Я уже упоминал о том, что размер можно менять динамически “на лету”?

Как и с физическими томами, у группы томов тоже есть команда display:

# vgdisplay

Как использовать LVM

Шаг 4. Создаем логический раздел (Logical Volume)

Пришло время “резать пирог”, то есть разделять группу томов на разделы по своему усмотрению. Оттяпаем 300 Мегабайт на первый логический том, а 4 с небольшим гигабайта – на второй логический том. Используем команду lvcreate с указанием размера, имени логического тома и имени группы, от которой “откусываем” кусок:

# lvcreate -L 300M -n disk_1 litl_admin

Этой командой мы выделим 300 мегабайт из группы litl_admin, и назовём этот логический том “disk_1”.

Аналогично создадим disk_2 из оставшегося места.

P.S. Для удаления ошибочно созданного объекта используем lvremove с указанием имени группы. Далее в диалоговом режиме удаляем неугодные нам разделы.

Как использовать LVM

Шаг 5. Размечаем файловые системы

Пришла пора разметить файловые системы, чтобы мы могли использовать эти логические тома.

# /dev/litl_admin/disk_1 # /dev/litl_admin/disk_2

Шаг 6. Подготовим каталоги для монтирования и пропишем их в файле /etc/fstab

# mkdir /vol1 # mkdir /vol2

имена могут быть любыми, эти каталоги будут выступать точками монтирования.

Как использовать LVM

Осталось внести изменения в файл /etc/fstab, чтобы эти точки монтировались автоматически.

# vi /etc/fstab

Допишем наши строки:

устройство, точка монтирования, файловая система, опции монтирования, порядок проверки fsck

У меня это две нижние строки.

Шаг 7. Подмонтируем наши файловые системы

Как использовать LVM

Теперь подмонтируем точки автоматически:

# mount -a # mount

Читайте также:  Зачистка прошлого. Кто и как убирает неугодную информацию из интернета

Готово! Можно пользоваться!

Вам так же понравится: Как расширить диск виртуальной машины на Linux LVM Исправляем брешь CVE-2015-0235 в Linux Квесты админа: #2. Права пользователей в Linux [BOOK] Операционная система Linux Курс лекций. Учебное пособие Работа с виртуализацией. OpenVZ или KVM? Работа с DD. Утилита для побайтового копирования. Начало

Оператор OR (||)

Оператор OR (||) очень похож на оператор «else» в программировании. Вышеуказанный оператор позволяет вам выполнять вторую команду только в случае сбоя при выполнении первой команды, то есть состояние выхода первой команды равно «1» — программа выполнена НЕ успешно».

Например, я хочу выполнить «apt-get update» из учетной записи без полномочий root, и если первая команда не будет выполнена, тогда будет выполнена вторая команда «links ».

sudo apt update || links

В приведенной выше команде, поскольку пользователю не было разрешено обновить систему, это означает, что состояние выхода первой команды равно «1» и, следовательно, выполняется последняя команда «links ».

Что, если первая команда выполнена успешно, со статусом выхода ««? Очевидно! Вторая команда не будет выполнена.

mkdir test || links

Здесь пользователь создает папку «test» в своем домашнем каталоге, где ему это разрешено. Команда выполнена успешно, что дает статус выхода ««, и, следовательно, последняя часть команды не выполняется.

Типы файлов Linux

Перечислим поддерживаемые типы файлов в ОС Linux

  • Файлы (тексты, исходники, картинки, скрипты)
  • Каталоги
  • Блочные устройства (жесткие диски, дискеты)
  • Символьные устройства (терминалы, принтеры)
  • символические ссылки
  • PIPE
  • Гнезда

Тип файла в каталоге можно посмотреть командой:

ls -l

Посмотреть список блочных устройств можно командой:

ls-l /dev/sd*

Буквой «b» помечаются блочные устройства.

Посмотреть список дисков можно командой

fdisk –l

Вывести информацию о жестком диске можно так

hdparm-I /dev/sdХ

Замена текста и данных в файлах Linux

Для взаимодействия с текстом внутри файлов есть команда sed. Команд множество, но чаще всего может понадобится команда по замене определенного текста в конкретном файле.

Например:

sed ‘s/odin/dva/g’

Заменяет в файле все слова «odin» на слова «dva».

Иногда требуется раскомментировать какую-то строчку в файле и для этого не обязательно открывать файл и редактировать его. Достаточно знать данные в нём, которые нужно раскомментировать.

sed -i "s/^#znachenie/znachenie/g" /etc/

где «^» — означает начало строки, # — символ, отвечающий за разрешение/запрещение чтения команд определенного языка программирования в выполняющем для этого файле.