Что такое /dev/sd?
Что такое /dev/sd? Без буквы, не /dev/sda, /dev/sdb, а /dev/sd.
ch1p ★
14.02.17 18:32:01 MSK
SD — абривиатура для SCSI Disc
Самого SD устройства насколько мне известно не существует
zaz ★★★★
( 14.02.17 18:41:41 MSK )
Смотришь major номер устройства. В доках ядра по номеру смотришь что это такое.
no-such-file ★★★★★
( 14.02.17 19:21:50 MSK )
Ответ на: комментарий от no-such-file 14.02.17 19:21:50 MSK
Дело в том что я случайно сделал dd if=.. of=/dev/sd, и мне интересно, куда это я записал 🙂 Через 10 мегабайт стало no space left of device. Пока не перезагружался.
ch1p ★
( 14.02.17 19:29:06 MSK ) автор топика
Ответ на: комментарий от ch1p 14.02.17 19:29:06 MSK
и мне интересно, куда это я записал
Никуда. Ты создал обычный файл.
Через 10 мегабайт стало no space left of device
Потому что в /dev монтируется devtmpfs которая вообще не предполагает что файлы будут иметь какой-то размер. ЕМНИП там как-раз 10Мб общий размер ФС, на всякий случай.
no-such-file ★★★★★
( 14.02.17 19:34:57 MSK )
Ответ на: комментарий от no-such-file 14.02.17 19:34:57 MSK
Спасибо. А то я думал случайно перезаписал какое-то устройство.
Что означает dev sdg1
Имена дисков и разделов в Linux могут отличаться от имён в других операционных системах. Для того чтобы создавать и монтировать разделы вам нужно знать какие имена используются в Linux. Вот основы схемы именования:
- Первый обнаруженный жёсткий диск называется /dev/sda .
- Второй обнаруженный жёсткий диск называется /dev/sdb и так далее.
- Первый SCSI CD-ROM называется /dev/scd0 , также можно использовать /dev/sr0 .
Имена разделов диска получаются добавлением к имени диска десятичного числа: sda1 и sda2 представляют первый и второй разделы на первом диске SCSI в системе.
Вот реальный пример. Предположим, что вы имеете систему с 2-мя SCSI дисками, один имеет SCSI адрес 2, а другой SCSI адрес 4. Первый диск (с адресом 2) называется sda , а второй sdb . Если диск sda содержит 3 раздела, то их имена будут sda1 , sda2 и sda3 . То же относится к диску sdb и его разделам.
Заметим, что если вы имеете два адаптера SCSI (то есть, контроллера), то порядок дисков может показаться непонятным. Лучшее решение в этом случае посмотреть загрузочные сообщения; предполагается, что вы знаете модели дисков и/или их объём.
C.3. Рекомендуемые схемы разметки | C.5. Программы разметки в Debian |
Управление файловым хранилищем в Linux
Статья также доступна на украинском (перейти к просмотру).
Оглавление
- Типы устройств в ОС Linux
- Создание и форматирование разделов дисков
- Монтирование файловых систем
- Временная монтировка
- Автоматическая монтировка
Операционная система Linux предоставляет широкие возможности для работы с различными типами файловых хранилищ, каждое из которых может иметь свою файловую систему. Для возможности управления такими хранилищами существует набор соответствующих команд/утилит, которые могут применяться Администратором в зависимости от ситуации. Рассмотрим основные программы и продемонстрируем работу с ними на конкретных примерах.
Типы устройств в ОС Linux
Можно выделить две основные категории устройств, с которыми мы имеем дело, работая с Linux. Это блочные и псевдоустройства, или временные. Блочные устройства представляют собой различные типы физических дисковых накопителей, которые обеспечивают запись и хранение информации в виде блоков. Это, например, HDD, SSD-накопители и другие. Такие накопители энергонезависимы, поскольку при выключении питания информация на них хранится и никуда не исчезает. В терминах Linux-подобных систем они могут обозначаться, в частности, как /dev/vda или /dev/sda в зависимости от типа устройства. В любом случае метка /dev является признаком устройства любого типа
Псевдоустройства обычно создаются для временного хранения информации и являются энергозависимыми. Наиболее распространенное обозначение для них tmpfs или devtmpfs.
Каждое из физических устройств должно иметь хотя бы один раздел, названия которых чаще всего обозначаются как /dev/hd* или /dev/sd*. Но маркер раздела можно установить практически любой с помощью соответствующей команды, что будет показано ниже. Это, кстати, иногда может быть очень полезным, поскольку если раздел монтируется временно при загрузке ОС, то может подключиться не тот раздел, который нужен. Поэтому желательно названия разделов устанавливать постоянными, например disk_one и тому подобные названия.
Утилиты для работы с устройствами Linux можно разделить следующим образом: утилиты для создания разделов и их форматирование; утилиты для отображения информации по всем или выбранным устройствам; утилиты для монтирования файловых систем в определенные точки (каталоги). Рассмотрим работу с командами каждой группы утилит.
Создание и форматирование разделов дисков
Для начала обновим установленные в ОС Linux пакеты программного обеспечения. Это можно сделать с помощью следующих команд:
$ sudo apt update
Эта команда используется для синхронизации индекса пакетов репозитория.
$ sudo apt upgrade
Команда выполняет непосредственное обновление пакетов.
После подтверждения согласия на выделение 2890 kB начинается процесс обновления пакетов, показанный ниже.
Завершающее окно выхода команды выглядит следующим образом:
После этого установим утилиту Parted, предназначенную для работы с разделами физических устройств, поскольку указанная утилита, в отличие от других, не всегда присутствует в дистрибутивах Linux.
$ sudo apt install parted
Можем убедиться, что утилита уже присутствует в нашей ОС и потому не нуждается в установке. То есть можно начинать работу с ней.
Для определения в системе нового устройства используется следующая команда:
$ sudo parted -l | grep Error
Команда проверяет схемы разделов существующих дисков, и в случае присутствия дисков, не имеющих соответствующей схемы разделов, выдается ошибка. Таким образом, диск идентифицируется как новый. В нашем случае, как видно из изображения, ошибка не разглашается, а значит, новые диски отсутствуют в системе.
Для просмотра имеющихся в системе блочных устройств используем следующую команду:
$ lsblk
Команду желательно использовать при последующих подключениях к серверу перед внесением изменений с целью контроля реально подключенных дисков, поскольку их идентификаторы могут изменяться между загрузками.
Для демонстрации работы утилиты Parted установим для устройства /dev/vda один раздел вместо имеющихся двух. Для этого введем в терминале:
$ sudo parted /dev/vda mklabel gpt
В команде использован параметр gpt, служащий для обозначения стандарта разбиения диска. Наиболее распространены GPT и устаревший MBR. Ниже приведен процесс обработки диска в соответствии с указанными в команде параметрами.
После этого можно сделать один раздел для всего диска. Для этого необходимо использовать следующую команду:
$ sudo parted -a opt /dev/vda mkpart primary ext4 0% 100%
Эта команда создаст загрузочный раздел с файловой системой ext4. Параметры 0% 100% указывают на размер создаваемого раздела. В этом случае это весь диск.
Для просмотра созданного раздела введем в терминале:
$ lsblk
Теперь диск имеет раздел /dev/vda2 и мы можем инициализировать его как файловую систему, например Ext4, как более гибкую и распространенную. Для этого используем следующую команду:
$ sudo mkfs.ext4 -L datapartition /dev/vda2
Процесс завершен. Как уже отмечалось выше, мы можем изменить маркер раздела. Для этого используем следующую команду:
$ sudo e2label /dev/vda2 disk77
Теперь просмотрим характеристики диска с использованием параметра —fs. Введем в терминале:
$ sudo lsblk --fs
Можно убедиться, что все внесенные нами настройки действуют. Также для просмотра нужных характеристик раздела можно воспользоваться другой формой команды lsblk:
$ sudo lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT
Здесь мы использовали параметр -o и названия нужных параметров раздела.
Монтирование файловых систем
Стандартом рекомендуется для монтирования файловых систем использовать каталог /mnt или его подкаталоги. Создадим каталог. Введем в терминале:
$ sudo mkdir -p /mnt/newdata
Временная монтировка
Для осуществления временной монтировки используем команду mount с соответствующими параметрами:
$ sudo mount -o defaults /dev/vda2 /mnt/newdata
Проверим сработала ли команда:
Как можно убедиться, команда сработала. Таким образом, точка временной монтировки файловой системы создана.
Команда mount имеет большое количество опций, позволяющих устанавливать дополнительные характеристики точки монтирования. В частности, такие опции, как noexec и nosuid, позволяют запретить выполнение и создание бинарных файлов соответственно.
Автоматическая монтировка
Для настройки автоматической монтировки файловой системы при каждой загрузке сервера необходимо добавить запись в файл /etc/fstab, в котором хранится информация обо всех монтируемых дисках. Введем в терминале команду вызова редактора:
$ sudo nano /etc/fstab
В открывшемся окне редактора в конец файла добавим значение параметра UUID, в котором впишем нужные нам настройки. В частности, это идентификатор раздела, полученный нами ранее посредством команды lsblk с параметром –о; каталог монтирования; тип файловой системы Параметр defaults указывает, что этот том должен быть смонтирован с параметрами по умолчанию, то есть с поддержкой записи и чтения. Параметр «0 2» указывает, что файловая система должна проверяться на ошибки сразу после корневого тома.
Для сохранения изменений нажмем клавиши ctrl+o и выйдем из редактора (ctrl+х). Таким образом мы произвели настройку автоматической монтировки файловой системы указанного раздела при каждой загрузке сервера.
Конечно, можно было сделать то же, указав не значение параметра UUID для идентификации раздела, а значение маркера LABEL. В таком случае запись в файле /etc/fstab выглядела бы следующим образом:
LABEL=disk77 /mnt/newdata ext4 defaults 0 2
Результат будет таким же, что и с параметром UUID.
Размонтирование файловой системы
Для размонтирования файловой системы существует команда umount. Формат команды предусматривает указание на точку монтирования смонтированной в настоящее время файловой системы. К примеру, для размонтирования нашей файловой системы введем в терминале:
$ sudo umount /mnt/newdata
Для проверки используем соответствующую команду в терминале:
$ lsblk
Можно убедиться, что команда работает.
Для учебы и работы отлично подходят виртуальные сервера FREEhost.UA. Создание сервера занимает всего несколько минут, большой список подготовленного ПО на выбор. Размещение на двух локациях — Украина и Польша.
22. Работа с дисками
В прошлый раз мы разобрались, что udev при виде определённых устройств создаёт для них специальные файлы в директории /dev:
ls /dev
через которые можно взаимодействовать с устройствами. И если с большинством устройств администратору не требуется ничего делать, то вот с устройствами хранения информации практически постоянно нужно работать. При работе с дисками нужно быть крайне осторожными, потому что на дисках данные, а какие-то ошибки могут привести к потере этих данных. Поэтому всегда делайте бэкапы и убеждайтесь, что они в рабочем состоянии.
Есть разные типы накопителей и они могут по разному подключаться к компьютеру – старые диски подключались по IDE, сейчас преимущество у SATA, набирают популярность nvme SSD, есть ещё всякие флешки, подключаемые по usb, во многих компаниях диски выдаются по сети хранения данных, называемой SAN, а в облачных средах вам выдаются виртуальные диски, детали подключения которых вас могут и не интересовать. В зависимости от некоторых факторов – типа подключения диска, правил udev, которые могут отличаться в зависимости от дистрибутива – дискам могут выдаваться различные названия. При этом, несмотря на различия, для работы с устройствами хранения используется протокол SCSI – это касается и USB флешек, и SATA дисков, и сетей хранения данных и многого другого.
Поэтому большая часть накопителей будет именоваться sd – т.е. scsi диск:
ls /dev/sd*
а дальше каждому устройству будет даваться буква по алфавиту – sda, sdb,sdc и т.п. Для cd приводов будет даваться название sr:
ls /dev/sr*
sr0, sr1 и т.п. А в облаках вы будете натыкаться на названия vda, vdb и т.д. Что объединяет все накопители? Операционная система обменивается с этими устройствами данными в виде блоков данных фиксированной длины. Команда:
ls -l /dev/sda stat /dev/sda
покажет перед правами символ b – указывающий, что это блочное устройство.
Кроме блочных устройств существуют символьные – такие устройства работают с потоком данных, а не с блоками. Допустим, та же мышка:
ls -l /dev/input/mouse0 stat /dev/input/mouse0
Перед такими файлами стоит символ c – character device – символьное устройство.
Но, как я уже сказал, чаще всего накопители работают через scsi протоколы – поэтому, как бы там не было написано в правилах udev, нам необязательно гадать – мы можем с помощью утилиты lsscsi увидеть наши диски:
lsscsi -s
Как видите, тут у меня подключены дисковод и диск на 20 гигабайт, который получил название sda. Но названия, которые даёт udev – sda, sdb и т.п. — не закрепляются за дисками навсегда. Каждый раз, когда вы запускаете систему или подключаете устройства, udev даёт название по порядку. Да, есть порядок обнаружения устройств и зачастую одни и те же диски будут называться одинаково, но ни в коем случае нельзя ориентироваться на эти названия. Допустим, если у вас 3 диска – sda, sdb и sdc и вы переподключите их, либо один перестанет работать – то sdc начнёт называться sdb. В теории это может привести к потере данных. Как? Мы разберём чуть позже. Просто запомните, что ориентироваться на эти буквы не стоит.
Из темы «О файловых системах» мы выяснили — чтобы мы могли создавать, хранить, изменять и в целом работать с файлами на диске — нам нужна файловая система. Для этого мы можем записать её на диск. В принципе, такая схема будет работать, но в целом это неудобно и может создать нам проблемы в будущем. Например, в будущем нам может понадобится переустановить систему. Как правило, это предполагает удаление старой файловой системы и создание новой – это называется форматированием файловой системы. Но, при этом, все файлы, которые мы хотели бы перенести на новую систему, также затрутся. Конечно, можно заранее закинуть всё на флешку и потом вернуть обратно – но это лишняя работа и потеря времени. Возможно, вы знаете как избежать этой проблемы – на том же Windows у вас может быть том D, на который вы кидаете файлы, и при форматировании эти данные не стираются – потому что стирается файловая система в томе C. На GNU/Linux файлы пользователей хранятся в директории /home, поэтому вам будет достаточно отделить /home от корня. Т.е. предполагается, что у вас две файловые системы на одном диске. Для этого нужно разделить диск на так называемые разделы, и на каждый раздел записать свою файловую систему. Но чтобы компьютер знал – где начинается один раздел, где он заканчивается и начинается другой – нужно специальное место в начале диска, где указывается эта информация – таблица разделов.
Есть разные типы таблиц разделов: MBR – которую также называют dos или ms-dos; GPT; у Apple и BSD свои таблицы разделов; есть ещё какие-то – но это нас не интересует, в основном вы будете иметь дело с MBR и GPT. У аббревиатуры MBR есть и другое значение – главная загрузочная запись – и сама таблица разделов хранится внутри этой записи. А загрузочная запись MBR была нужна для компьютеров раньше. Дело в том, что раньше на компьютерах был чип BIOS, в котором был ряд микропрограмм, и, кроме всего прочего, BIOS отвечал за включение компьютера. Но BIOS был сильно ограничен – он должен был быть не больше десятка килобайт, оперативки ему было доступно было максимум мегабайт – ну и в таких условиях сильно не разгуляешься. И BIOS должен был в итоге загрузить операционную систему – но ведь с такими ограничениями не добавить поддержку какой-то файловой системы и программы, загружающей операционную систему. Причём операционные системы то разные, у каждого своя файловая система, каждую по своему грузить. Поэтому BIOS просто обращался к нулевому сектору жёсткого диска, где и находилась главная загрузочная запись — MBR. А там у нас и загрузчик операционной системы и таблица разделов. При этом сам MBR тоже был ограничен – всего 512 байт, из которых 446 байт на загрузчик и 64 на таблицу разделов. Забегая вперёд, скажу, что там ещё первые 63 сектора оставались свободными, в которые и помещается основная часть загрузчика, а не только эти 446 байт, но это тема загрузки операционной системы, мы это рассмотрим в другой раз.
Так вот, MBR нам даёт 64 байта на то, чтобы поместить всю информацию о разделах. А на информацию о каждом разделе требуется 16 байт. В итоге – 4 раздела. Потом появилась расширенная загрузочная запись(VBR), благодаря чему можно было создавать расширенные разделы, которые позволяли обойти ограничение в 4 раздела. Грубо говоря, там вместо самой записи о разделе указывалась ссылка на другую таблицу, в которой указывались дополнительные разделы. Также в таблице разделов MBR не получилось бы указать разделы больше 2Тб, так как адрес не помещается в таблице. По итогу, BIOS своими ограничениями создавал кучу проблем с вынужденными обходными решениями. В нулевых же решили избавиться от этих ограничений и создали новый стандарт – UEFI. Тут уже разгулялись – UEFI может весить десяток мегабайт, понимает файловые системы, может работать с сетью, имеет графический интерфейс. Точнее, это всё можно реализовать в UEFI, но не каждый производитель это делает, разве что какой-то стандартный функционал. И, конечно же, отпала необходимость в загрузчике в MBR – зачем ограничиваться 446 байтами, когда можно в UEFI добавить поддержку файловой системы, где и будет лежать полноценный загрузчик? Плюс растут объёмы дисков – поэтому MBR заменили на GPT. Необходимость держать загрузчик в начальном секторе отпала – UEFI для этого использует специальный раздел EFI с файловой системой FAT32. Ограничение в 2 Tб тоже пропало, у GPT теоретическое ограничение почти в 10 Зеттабайт. Что касается количества разделов – то они, в принципе, не ограничены, разве что только со стороны операционной системы, но там речь про 128 разделов, чего с лихвой хватает. Но, при этом, UEFI в целях совместимости позволяет установить загрузчик в нулевой сектор, как это было в MBR.
Прежде чем пойдём дальше, давайте немного попрактикуемся с таблицами разделов. Но для начала нам понадобится добавить диски для нашей виртуальной машины. Поэтому выключаем виртуалку, открываем её настройки, переходим во вкладку Storage – Controller SATA и добавляем два жёстких диска, создаём их – по гигабайту будет достаточно, можно даже обойтись меньшим объёмом. Нажимаем OK и запускаем виртуалку. Теперь lsscsi -s покажет нам ещё два диска по гигабайту, с названиями sdb и sdc.
И так, диски у нас есть – sdb и sdc. Давайте создадим таблицу разделов и пару разделов. Для этого используем утилиту fdisk:
sudo fdisk /dev/sdb sudo fdisk /dev/sdc
И так, для начала, нас предупредили, что всё что мы делаем – не сразу происходит, а сохраняется в памяти, и если мы захотим – то пишем w и изменения вступают в силу. Дальше нас предупредили, что на диске не нашли никакой таблицы разделов, поэтому программа создала таблицу DOS – но опять же, без write-а ничего на деле не изменилось.
Ну и небольшая подсказка по командам с помощью m. Для начала выведем информацию – буква p. Наш диск – /dev/sdb, его размер – 1 Гибибайт, количество байт и секторов. Каждый сектор по 512 байт – умножаем на количество секторов – получаем количество байт. Буква o – создаёт таблицу разделов DOS, буква g – GPT.
И так, с помощью o создали таблицу разделов, теперь можем создавать разделы. Для этого буква n – new partition. В случае с DOS у нас спрашивает – будет ли это основной раздел или расширенный. Основных может быть 4, а для создания расширенного используется один из основных. Выберем основной – по умолчанию он и создаётся, поэтому просто enter. Дальше нужно выбрать его номер – допустим 1. Потом выбираем начальный сектор – пусть будет 2048 – оставляем по умолчанию. Дальше пишем последний сектор, либо необходимый размер для раздела через +, допустим +200M. Создалось. Теперь пишем p и видим новый раздел. Разделы называются как соответствующий диск – то есть sdb, а в конце указывается номер раздела — sdb1.
Давайте, для примера, создадим ещё один раздел. n — выберем extended – в качестве основного используем 4; первый сектор оставим как есть – это первый незанятый сектор; дальше просто нажмём enter – тогда используется всё доступное пространство. Опять p – видим наши разделы. Но сам по себе расширенный раздел мы использовать не будем – он просто позволит создавать внутри него другие разделы, называемые логическими разделами.
Поэтому опять n – оставляем первый сектор как есть, потом указываем размер раздела — +100M, и опять p. Теперь видим, что у нас есть 3 раздела: первый — sdb1 – это основной раздел; дальше у нас расширенный раздел – sdb4 – он у нас вроде платформы, внутри которой мы создаём логические разделы, к примеру — sdb5. Когда нас всё устраивает, мы пишем w и изменения сохраняются.
Теперь создадим разделы на диске sdc с таблицей разделов GPT. Для её создания — g. Для нового раздела – n. У нас спрашивают номер раздела – оставим 1. Первый сектор – оставляем как есть. Последний сектор — +200M. И p, чтобы вывести информацию о разделах. Как видите, никакой возни с расширенными и логическими разделами. Опять же — w – сохраняем изменения.
Для удаления какого-то раздела:
sudo fdisk /dev/sdb
буква d – выбираем раздел – 4, enter, а потом p. Как видите, sdb5, который был внутри sdb4, удалился в том числе. Поэтому просто нажимаем q и ничего не сохраняем.
Чтобы увидеть, что у нас с разделами в системе:
sudo fdisk -l
Тут у нас и то, что мы создали только что, а также sda1 и sda2 — там где у нас хранится система. Если посмотреть внимательнее на sda2:
sudo fdisk -l /dev/sda
то можно увидеть, что его тип – Linux LVM. Про LVM мы ещё поговорим.
Через командную строку вы также можете воспользоваться псевдографической утилитой cfdisk:
sudo cfdisk /dev/sdc
Также есть и другие утилиты – к примеру parted. В конечном счёте, чем пользоваться – решаете вы. Но в целом, практически на всех системах бывают предустановлены fdisk и parted. На старых системах можно наткнуться на fdisk, который не поддерживает GPT, но сейчас это не так актуально. В любом случае, знать много инструментов – хорошо, но зная основы можно разобраться с любой утилитой.
lsblk
покажет вам блочные устройства в древовидной форме, где прекрасно видно, что это за диск или раздел и к чему он относится.
Помните, названия дисков даются udev-ом и могут меняться? Однако у дисков и разделов могут быть свои идентификаторы, которые могут помочь вам опознать различные устройства. И это хорошо видно, если запустить команду:
ll -R /dev/disk
где по различным идентификаторам есть символические ссылки, указывающие на текущее название каждого диска и раздела. То есть, как бы не изменилась буква диска – sda, sdb или sdc – идентификатор всегда будет один и тот же, и обращаясь к диску или разделу по идентификатору, вы всегда будете обращаться к нужному диску или разделу.
Получилось довольно много информации, хотя пока мы не затронули тему файловых систем и LVM. Попрактикуйтесь с разделами – создавайте их, удаляйте, используйте различные утилиты – как графические – тот же Disks и Gparted, так и терминальные – fdisk, cfdisk, parted. Всё это позволит вам лучше закрепить материал и в дальнейшем более уверенно чувствовать себя при работе с дисками и разделами.
© Copyright 2021, GNU Linux Pro, CC-BY-SA-4.0. Ревизия 5f665cc2 .