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

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

Что такое LVM

Суть его состоит в том, что физические диски ‘Physical Volume’ (возможно различного размера, на разных устройствах) объединяются в ‘Volume Groups’ – группы томов. Группы томов могут уже разделяться на логические тома ‘Logical Volumes’, которые в свою очередь содержат конечные файловые системы. Звучит немного запутанно, но на самом деле всё просто и очень круто. Сейчас объясню на картинке:

Допустим, имеем два жестких диска. Старенький Seagate Barracuda на 80 Гб. И более новый WD на 640 Гб. Мы можем объединить их в единую группу Volume Group 1, суммарный объем которой составит 720 Гб. Затем, эту группу мы “пилим” по своему усмотрению на логические тома. Допустим, два тома по 360 Гб каждый. А затем монтируем первый как /home, второй как /var.

Что такое LVM

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

Что такое файловая система простыми словами

Термин «файловая система» можно понимать двояко. С одной стороны — это архитектура хранения битов на жестком диске, с другой — это организация каталогов в соответствии с идеологией Unix. В этой статье мы более подробно обсудим первую сторону.

Файловая система (сокращенно ФС, англ. «file system») — это архитектура хранения данных в системе, хранение данных в оперативной памяти и доступа к конфигурации ядра. ФС устанавливает физическую и логическую структуру файлов, правила их создания и управления ими.

Читайте также:  5 вопросов, которые помогут выбрать компьютерный стол для дома

В физическом смысле файловая система Linux/UNIX представляет собой пространство раздела диска разбитое на блоки фиксированного размера. Их размер кратен размеру сектора: 1024, 2048, 4096 или 8120 байт. Размер блока известен заранее.

Как происходит обмен данными между ядром, приложениями и жестким диском? Для этого существуют 2 технологии:

  1. Виртуальная файловая система (VFS). Некий интерфейс, между ядром и файловой системой (ext2, ext4 и т.д.). Это позволяет взаимодействовать ядру и приложениям без особенностей работы конкретного типа ФС. Иногда VFS называют «виртуальным коммутатором файловых систем».
  2. Драйверы файловых систем. Специальные программы, которые устанавливают «мост» (интерфейс) взаимодействия между аппаратурой и программой.

Список поддерживаемых ядром файловых систем находится в файле /proc/filesystems:

[email protected]:~$ cat /proc/filesystems nodev sysfs nodev rootfs nodev ramfs nodev bdev nodev proc nodev cpuset nodev cgroup nodev cgroup2 nodev tmpfs nodev devtmpfs nodev debugfs nodev tracefs nodev securityfs nodev sockfs nodev bpf nodev pipefs nodev hugetlbfs nodev devpts ext3 ext2 ext4 squashfs vfat nodev ecryptfs fuseblk nodev fuse nodev fusectl nodev pstore nodev mqueue nodev autofsИерархия файловой системы

Как мы уже сказали выше, есть вторая сторона ФС, которая состоит в определении ее с точки зрения организации расположения файлов в Linux. В этом случае можно сказать, что: файловая система — это иерархическая структура, которая начинается с корневого каталога «/» (корневой каталог) и дальше ветвится в соответствие с работой системы.

В этой статье мы будем говорить подробнее про типы файловых систем. Про организацию и структуру каталогов в Linux можно отдельно прочитать в статье:

  • Каталоги Linux — организация файловой системы

Что такое командная строка 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-совместимым интерпретатором.

Передача аргументов командной строки

Исполняемые программы могут запускаться в командной строке через вызов. Например, для запуска исполняемого файла MyProgram, который находится в корневом каталоге диска C в ОС Windows, вам нужно ввести:

C:\>MyProgram

Передача аргументов командной строки

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

C:\>MyProgram

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

C:\>MyProgram

Передача аргументов командной строки

Это также работает и с ОС Linux (хотя структура каталогов будет отличаться от структуры каталогов в ОС Windows).

Если вы запускаете свою программу из среды IDE, то ваша IDE должна предоставить способ ввода аргументов командной строки.

Для пользователей Visual Studio: Щелкните правой кнопкой мыши по нужному проекту в меню «Обозреватель Решений» > «Свойства»:

Затем выберите «Свойства конфигурации» > «Отладка». На правой панели будет строка «Аргументы команды». Вы сможете здесь ввести аргументы командной строки, и они будут автоматически переданы вашей программе при её запуске:

Передача аргументов командной строки

Пользователям Code::Blocks: Выберите «Project» > «Set program`s arguments»:

Просмотр файлов и папок в Linux

Проверяем свободное место на всём диске:

df -h

Узнаём какие файлы хранятся в директории

Список папок с занимаемыми размерами в корне сервера (сортировка директорий по алфавиту):

Читайте также:  CHKDSK Как проверить и исправить ошибки жесткого диска

du -hs /*

Выводит список директорий и файлов построчно, сортируя их по возрастанию размера, а также показывает права доступа, размер файлов и дату изменения:

ls -lSr |more

Показывает размер и имена директорий и файлов (сортировка по размеру). В примере сортировка по размеру директории var.

du -sk /var/* | sort -rn

Ещё одна команда (показывает в мб) сортирует по размеру (в данном случае сортировка каталога с логами):

du -k /var/log/* | sort -nr | cut -f2 | xargs -d ‘\n’ du -sh

Оператор NOT (!)

Оператор NOT (!) очень похож на оператор «кроме«. Эта команда выполнит все, кроме предоставленного условия. Чтобы понять как это работает, создайте каталог «sedicomm» в вашем домашнем каталоге и перейдите к нему с помощью команды «cd«.

mkdir sedicomm cd sedicomm

Затем создайте несколько типов файлов в папке «sedicomm».

touch

Смотрите, мы создали все новые файлы в папке «sedicomm».

ls

Теперь удалите все файлы, за исключением файла «html»одновременно, умным способом.

rm -r !(*.html)

Просто чтобы проверить, последнее исполнение. Перечислите все доступные файлы с помощью команды ls.

ls