ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Работа с жесткими дисками в Linux
Как оно хранится?
10 минут чтения
В статье, мы разберем как работать в операционной системе Linux с HDD, Logical Volume и все что с этим связанно. А также рассмотрим утилиты для работы с HDD. Разберем, что такое LVM.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Вводная
Те, кто читал пред идущие стати должны понимать, что в операционной системе есть определенные папки. Это стандартный набор папок. Сейчас обратим внимание на те папки, в которые могут быть смонтированы отдельные разделы. Это значит, что если мы видим в корневом разделе какую-либо папку, то не факт, что данная папка находится на том же жестком диске, что и соседние папки или даже сама корневая файловая система. Это могут быть отдельные жесткие диски или разделы жестких дисков, которые смонтированы в корневую файловую систему. Самый большой раздел — это сама корневая файловая система, обозначается символом «/» . Следующий раздел, который обычно находится отдельно — это «/boot«, загрузочный раздел, обычно он мегабайт на 100. Там хранятся файлы необходимые для загрузки операционной системы и само ядро. Можно данную директорию оставить на корневом разделе, но если у нас большой жесткий диск хотя бы на 1 ТБ, то старые диски его могут не увидеть при загрузке, поэтому хороший тон создавать отдельный раздел на жестком диске размером от 100 МБ.
Директория «/home» — это домашние папки пользователей. Это некий аналог папки в операционной системе Windows, такой как Documents and Settings или c:\users. Это директория, где хранятся все папки пользователя. Его можно монтировать, как сетевую папку. Например, если у вас используются какие-нибудь перемещаемые профили. Пользователь работает на нескольких компьютерах и ему необходимо, что бы везде был одинаковый рабочий стол. Вот в таком случае было бы правильно хранить его домашнюю папку где-нибудь на сервере и просто ее монтировать как сетевую папку, предоставляя доступ к файлам.
Следующая папка, которая находится в корне — это «/root» она является домашней папкой суперпользователя, очень важная папка поэтому она хранится отдельно.
Папка «/etc» — в ней находится конфигурация нашей операционной системы и ее компонент. Так же бывает, что она находится на отдельных дисковых разделах. Мы конечно сами определяем при установке как разбить жесткий диск, но, если при установке мы ставим галочку в установщике, чтобы он автоматически разбил жесткий диск и создал разделы так, как он считает нужным.
Директория «/opt» в данной директории находится программное обеспечение от третьих поставщиков. Некоторые серверные дистрибутивы тоже хранят ее на отдельном логическом разделе.
Директория «/var» здесь хранятся все часто меняющиеся данные. Например, логи различного программного обеспечения или изменяющиеся программные данные. Возможно для этой директории имеет смысл использовать быстрые диски, например, SSD. Потому, что к ним будет идти очень частое обращение программного обеспечения.
Директория «/usr» в ней находятся все установленные пакеты программ, документация и исходный код ядра. Чаще всего данная директория смонтирована вообще в режиме «только чтения» и в принципе она может быть расположена вообще на каком ни будь медленном диске или папке в сети.
Директория «/tmp» предназначена для хранения временных файлов. Важной особенностью данной папки является то, что хранящиеся файлы в ней, будут удалены в случае перезагрузки машины. Т.е при перезагрузки данная папка очищается автоматически. Существует еще один отдельный раздел подкачки swap. Обычно операционная система windows использует файл подкачки, то Linux чаще всего использует раздел подкачки, хотя может использовать и файл. Данный раздел не монтируется в нашу файловую систему, он просто существует отдельно.
Как это выглядит в консоли.
Переходим в корневую директорию cd / . Вводим команду ls и видим, как все директории у нас отображаются. Все те папки о которых шла речь мы видим находятся в корневой директории, кроме раздела swap. Для того, чтобы посмотреть, что и куда смонтировано, то необходимо посмотреть специальный конфигурационный файл cat /etc/fstab
Для упрощения объяснения, мы под жестким диском будем понимать единое пространство, которое мы можем разбить на несколько частей. Изначально, компьютер не видел более 4-х разделов — этого считалось достаточно. Поэтому сейчас, изначально по умолчанию жесткий диск не может быть разбит на более чем 4 раздела. Если нам необходимо больше разделов, то необходимо создать так называемый расширенный раздел. И этот расширенный раздел уже будет содержать в себе несколько логических разделов.
В старых версиях Linux диски назывались hd0, hd1 и т.д, сейчас жесткие диски называются sda, т.е буквами. USB устройства у нас так же идентифицируются как жесткие диски. Разделы у нас нумеруются по порядку sda1, sda2 и т.д. Т.е. название раздела у нас состоит из буквы диска и номера раздела по порядку. Следовательно, первые 4 цифры зарезервированы и даются только основным разделам, именно поэтому логические разделы нумерация начинается с 5-ки. Основной утилитой для работы с разделами является утилита FDISK. Это утилита используется для разбивки жесткого диска. Так же есть утилита MKFS. Данная утилита используется для создания файловой системы. Мы можем посмотреть все существующие жесткие диски командой fdisk -l. При выводе данной команды мы можем видеть, что у нас 2 подключенных жестких диска sda и sdb. В выводе мы можем так же увидеть их физический объем. На первом диске sda, мы так же можем увидеть 2 раздела sda1 и sda2.
Начать работать со вторым жестким диском, необходимо сначала указать, как определенный файл. Устройства лежат в директории «/dev«. Пишем команду fdisk /dev/sdb
Получается следующая картина:
А нажав букву m мы можем получить доступ к справке по работе с данной утилитой. Как можно заметить функционал утилиты достаточно обширен. Можно добавлять партиции, можно удалять партиции. Следующим шагом необходимо создать новый раздел. Выбираем опцию n. Далее предлагается выбор primary или extended. Мы выбираем primary ключ p. Далее выбираем номер раздела 1-4. Например, 1. Далее система спрашивает где будет (на каком секторе) начинаться разметка раздела. Можно выбрать по умолчанию. На следующем шаге мы можем указать сектор, но это крайне неудобно, проще указать сколько мы хотим выделить под размер, например, +10G. И этот раздел станет 10 гигабайт.
Попробуем второй вариант с созданием раздела, он будет расширенный (extended). Выбираем ключ e, выбираем 2 раздел. Выбираем с какого сектора он начнется. Следующим шагом +8G. Мы создали расширенный диск на 8 GB. Далее создаем sdb3 на оставшихся 2 GB. А также 8GB расширенного диска разбиваем на 2 логических по 4 GB каждый. Все операции одинаковые. В после создания последнего раздела выбираем опцию w. Которая записывает все изменения.
В итоге
Прежде чем использовать эти разделы их необходимо отформатировать.
Если посмотреть на вывод команды, мы можем увидеть еще одно интересное поле с информацией Id — это метка этого раздела. Необходимо разобраться, как эти id менять. Используем опять утилиту fdisk /dev/sdb. Далее используем ключ t. Утилита предлагает выбрать номер раздела. Выбираем 1. Затем необходимо ввести id в шестнадцатеричном формате, список всех вариаций и их описание можно вывести командой L.
Можно заметить, что везде стоял по умолчанию 83 т.е. linux, мы можем изменить на любую метку, например, на 86 NTFS — windows раздел. 3 раздел пометим а5. Записываем изменения w. И можно все изменения увидеть через fdisk -l. Далее, чтобы пользоваться этими разделами, нам сначала их надо отформатировать. Чтобы это сделать используем утилиту mkfs. Набираем mkfs.ext4 , после точки указываем целевую , будет переформатирован раздел , а через пробел собственно сам раздел. Например mkfs.ext4 /dev/sdb5.
Теперь немного, о разделе подкачки swap.
Для работы с ним используется swapon и swapoff. Через первую команду мы можем включать раздел подкачки, добавлять разделы подкачки, а через вторую команду выключать. Так же есть утилита mkswap — которая позволяет создавать т.е. форматировать раздел, как раздел подкачки. А также у нас есть конфигурационный файл, расположенный в следующем месте /etc/fstab, в данном конфигурационном файле описывается монтирование файловых систем. Соответственно можно примонтировать разделы в ручном режиме, но если мы хотим, чтобы при загрузке разделы сами монтировались, то необходимо конфигурировать файл /etc/fstab/
Командой swapon -s, мы можем посмотреть информацию по своп разделу.
Чтобы добавить новый своп раздел, то нам необходимо через команду fdisk создать новый раздел и указать , что он именно своповский раздел, потом его необходимо отфарматировать и примонтировать раздел.
Командой cat /etc/fstab мы можем посмотреть, какие разделы монтируются при загрузке. Выглядит это примерно так:
Мы видим, что вот этот раздел с uuid 50cee6ca-cbd2-454b-a835-2614bf2e9d5d монтируется в корень, знак «/» об этом говорит и имеет файловую систему ext4. Uuid смотрим с помощью команды blkid. Раздел подкачки, как и файл подкачки — это место на диске, которое используется, как RAM. Если у нас не хватает оперативной памяти, то компьютер может пользоваться этим разделом, как оперативной памятью.
Создадим новую директорию командой mkdir mounted и смонтируем туда раздел. Например, /dev/sdb5. Используем команду mount /dev/sdb5 /mounted. Чтобы отмонтировать используем команду umount /mounted.
LVM — это система управления томами для Linux.
Она позволяет создать поверх физических разделов , Logical Volume, которые будут видны операционной системе , как обычные блочные устройства с томами.
- Мы можем в одну группу Logical Volume можем добавить разное количество физических дисков.
- Мы можем менять размеры этих разделов прям во время работы операционной системы.
В данном случае на картинке есть, 3 HDD, на каждом есть определенное количество разделов. И мы можем из них собрать группу томов vg1. Которая будет видеть свои разделы, как физические тома, те объединяются в группу томов, а внутри этой группы мы можем создавать логические тома, вообще не указывая где они находятся, и они сами распределяются между дисками. Соответственно на каждом логическом томе будет какая-то файловая система.
Чтобы посмотреть физические тома пользуемся командой pvdisplay. Посмотреть volume group, команда vgdisplay. Посмотреть логические тома lvdisplay.
Удаляем, через fdisk все разделы на жестком диске /dev/sdb. Создаем 2 раздела по 4 ГБ основных с типом 8e, т.е. LVM тип. Создадим физический том командой pvcreate /dev/sdb1, аналогично делаем для второго раздела.
Далее необходимо создать виртуальную группу vgcreate vg1 /dev/sdb1 /dev/sdb2, т.е. оба раздела. В группе можем создать пару логических томов командой lvcreate -n lv1 -L 2G vg1, где -n новый раздел, -L — объем и последний параметр в какой виртуальной группе. И можно создать второй lvcreate -n lv2 -L 3G vg1. Появились новые блочные устройства lv1 и lv2. Осталось их отформатировать. Команда mkfs.ext4 /dev/vg2/lv1 и аналогично второй. Данная группа позволяет легко добавлять и удалять HDD. Возможно добавление нового жесткого диска и на увеличение размера наших томов. Чтобы изменить размер команда lvresize -L 4G vg1/lv2. Система LVM позволяет делать снимки состояний, т.е. снапшоты. Они используются для систем резервного копирования, например.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
LVM — это просто!
Собственно, хочется просто и доступно рассказать про такую замечательную вещь как Logical Volume Management или Управление Логическими Томами.
Поскольку уже давно пользуюсь LVM-ом, расскажу что он значит именно для меня, не подглядывая в мануалы и не выдёргивая цитаты из wiki, своими словами, чтобы было понятно именно тем кто ничего о нем не знает. Постараюсь сразу не рассказывать о всяческих «продвинутых» функциях типа страйпов, снапшотов и т.п.
LVM — это дополнительный слой абстракции от железа, позволяющий собрать кучи разнородных дисков в один, и затем снова разбить этот один именно так как нам хочется.
есть 3 уровня абстракции:
1. PV (Physical Volume) — физические тома (это могут быть разделы или целые «неразбитые» диски)
2. VG (Volume Group) — группа томов (объединяем физические тома (PV) в группу, создаём единый диск, который будем дальше разбивать так, как нам хочется)
3. LV (Logical Volume) — логические разделы, собственно раздел нашего нового «единого диска» ака Группы Томов, который мы потом форматируем и используем как обычный раздел, обычного жёсткого диска.
это пожалуй вся теория. 🙂 теперь практика:
для работы нужны пакеты lvm2 и возможность работать с привелегиями root поэтому:
$ sudo bash
# apt-get install lvm2
допустим у нас в компе есть жёсткий диск на 40Гб и нам удалось наскрести немного денег и наконец-то купить себе ТЕРАБАЙТНИК! :))) Система уже стоит и работает, и первый диск разбит одним разделом (/dev/sda1 как / ), второй — самый большой, который мы только подключили — вообще не разбит /dev/sdb…
Предлагаю немножко разгрузить корневой диск, а заодно ускорить (новый диск работает быстрее старого) и «обезопасить» систему с помощью lvm.
Можно делать на втором диске разделы и добавлять их в группы томов (если нам нужно несколько групп томов),
а можно вообще не делать на диске разделы и всё устройство сделать физическим разделом (PV)
# pvcreate /dev/sdb
Physical volume «/dev/sdb» successfully created
Создаём группу томов с говорящим названием, например по имени машины «ws», чтобы когда мы перетащим данный диск на другую машину небыло конфликтов с именами групп томов:
# vgcreate ws /dev/sdb
Volume group «vg0» successfully created
желательно внести с корневого раздела такие папки как /usr /var /tmp /home, чтобы не дефрагментировать лишний раз корневой раздел и ни в коем случае его не переполнить, поэтому создаём разделы:
# lvcreate -n usr -L10G ws # здесь мы создаём раздел с именем «usr», размером 10Gb
Logical volume «usr» created
по аналогии делаем то же для /var, /tmp, /home:
root@ws:
# lvcreate -n var -L10G ws
root@ws:
# lvcreate -n tmp -L2G ws
root@ws:
# lvcreate -n home -L500G ws
у нас ещё осталось немного свободного места в группе томов (например для будущего раздела под бэкап)
посмотреть сколько именно можно командой:
root@ws:
# vgdisplay
информацию по созданным логическим томам
root@ws:
# lvdisplay
информацию по физическим томам
root@ws:
разделы что мы создали появятся в папке /dev/[имя_vg]/, точнее там будут ссылки на файлы,
lrwxrwxrwx 1 root root 22 2009-08-10 18:35 swap -> /dev/mapper/ws-swap
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 tmp -> /dev/mapper/ws-tmp
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 usr -> /dev/mapper/ws-usr
lrwxrwxrwx 1 root root 21 2009-08-10 18:35 var -> /dev/mapper/ws-var
и т.д…
дальше lvm уже почти кончается… форматируем наши разделы в любимые файловые системы:
root@ws:
# mkfs.ext2 -L tmp /dev/ws/tmp
root@ws:
# mkfs.ext4 -L usr /dev/ws/usr
root@ws:
# mkfs.ext4 -L var /dev/ws/var
root@ws:
# mkfs.ext4 -L home /dev/ws/home
кстати, не плохо было бы сделать раздел подкачки:
root@ws:
# lvcreate -n swap -L2G ws
root@ws:
# mkswap -L swap /dev/ws/swap
root@ws:
создаём папку и подключая по очереди новообразовавшиеся тома, копируем в них нужное содержимое:
root@ws:
# mkdir /mnt/target
root@ws:
# mount /dev/ws/home /mnt/target
копируем туда всё из папки /home своим любимым файловым менеджером (с сохранением прав доступа), например так ;):
root@ws:
# cp -a /home/* /mnt/target/
root@ws:
# umount /mnt/target/
кстати, для папки temp необходимо только поправить права, копировать туда что-либо необязательно:
root@ws:
На вкусное, хочу предложить более продвинутую штуку:
допустим у нас есть система с разделом на LVM, а жёсткий диск начал сбоить, тогда мы можем без перезагрузки переместить всю систему на другой жёсткий диск/раздел:
# On-line добавление/удаление жёстких дисков с помощью LVM (пример)
# pvcreate /dev/sda1 # наш эмулятор сбойного диска
Physical volume «/dev/sda1» successfully created
# pvcreate /dev/sdb1 # наш эмулятор спасательного диска
Physical volume «/dev/sdb1» successfully created
# vgcreate vg0 /dev/sda1 # создаю группу томов vg0
Volume group «vg0» successfully created
# lvcreate -n test -L10G vg0 #создаю раздел для «важной» инфы
Logical volume «test» created
# mkfs.ext2 /dev/vg0/test # создаю файловую систему на разделе
root@ws:
# mount /dev/mapper/vg0-test /mnt/tmp/ #монтирую раздел
… # заполняю его информацией, открываю на нем несколько файлов и т.п.
# vgextend vg0 /dev/sdb1 # расширяю нашу групу томов на «спасательный» диск
Volume group «vg0» successfully extended
# pvmove /dev/sda1 /dev/sdb1 #передвигаю содержимое с «умирающего» диска на «спасательный»
/dev/sda1: Moved: 0.9%
/dev/sda1: Moved: 1.8%
…
/dev/sda1: Moved: 99.7%
/dev/sda1: Moved: 100.0%
# vgreduce vg0 /dev/sda1 # убираю «умирающий» диск из группы томов.
Removed «/dev/sda1» from volume group «vg0»
Итого:
Я создал логический раздел, отформатировал его, примонтировал и заполнил нужными данными, затем переместил его с одного устройства на другое, при этом раздел остался примонтирован и данные всё время оставались доступны!
Подобным образом мне удавалось без перезагрузки перенести всю систему с умирающего диска на рэид-массив. 🙂
Источник