Разное

Работа с дисками в linux: Управление дисками. Программы для Linux

Содержание

Работа с файловой системой Linux

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

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

В этой статье мы рассмотрим как выполняется работа с файловой системой Linux в терминале. За основу возьмем семейство файловых систем ext2/3/4, так как они самые распространенные среди большого многообразия дистрибутивов Linux.

Содержание статьи:

Основные команды

Для управления файловой системой ext в Linux используется целый набор команд из пакета e2progs. Сюда входят как команды для управления флагами файлов, создания и изменения файловых систем, так и утилиты для отладки файловой системы.

Рассмотрим основные утилиты, которые будем использовать:

  • badblocks — если у вас старый жесткий диск и на нем накопилось много битых блоков, вы можете с помощью этой утилиты пометить их все на уровне файловой системы, чтобы больше не использовать.
  • e2label — позволяет изменить метку раздела с файловой системой ext.
  • fsck — проверка файловой системы linux и исправление найденных ошибок
  • mkfs — позволяет создать файловую систему Linux.
  • resize2fs — изменить размер раздела с файловой системой
  • tune2fs — позволяет изменить файловую систему Linux, настроить ее параметры.

А теперь будет рассмотрена работа с файловой системой linux на примерах.

Работа с файловой системой в Linux

Перед тем как переходить к работе с реальным жестким диском важно попрактиковаться. Если сменить метку или проверить на битые сектора можно и рабочий диск, то создавать новую файловую систему, изменять ее размер, рискуя потерять данные на реальном диске не рекомендуется. Можно отделить небольшой раздел диска для экспериментов с помощью Gparted и выполнять все действия в нем. Допустим, у нас этот раздел будет называться /dev/sda6.

Создание файловой системы

Создать файловую систему linux, семейства ext, на устройстве можно с помощью команды mkfs. Ее синтаксис выглядит следующим образом:

sudo mkfs -t тип устройство

Доступны дополнительные параметры:

  • — проверить устройство на наличие битых секторов
  • -b — размер блока файловой системы
  • -j — использовать журналирование для ext3
  • -L — задать метку раздела
  • -v — показать подробную информацию о процессе работы
  • -V — версия программы

Создаем файловую систему на нашем устройстве. Будем создавать ext3:

 sudo mkfs -t ext4 -L root /dev/sda6

Creating filesystem with 7847168 4k blocks and 1962240 inodes
Filesystem UUID: 3ba3f7f5-1fb2-47af-b22c-fa4ca227744a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Изменение метки файловой системы

Утилита e2label позволяет изменить или посмотреть метку раздела диска. Принимает всего два параметра — устройство и новую метку если нужно.

Смотрим метку:

sudo e2label /dev/sda6

root

Устанавливаем новую:

sudo e2label /dev/sda6 root1

Настройка файловой системы linux

Различные параметры файловой системы, такие как размер блока данных, иноды или зарезервированное место под данные пользователя root можно настроить. Для этого существует утилита tune2fs.

Синтаксис команды очень прост:

$ tune2fs опции устройство

Поддерживаются следующие опции:

  • -j — создать файл журнала. Позволяет превратить файловую систему ext2 в ext3.
  • -J — настроить параметры журнала
  • -l — получить содержимое суперблока
  • -L — изменить метку раздела
  • -m — изменить процент дискового пространства, зарезервированного для суперпользователя
  • -M — изменить последнюю папку монтирования
  • -U — задать UUID файловой системы
  • -C — изменить значение счетчика монтирования
  • -T — изменить последнюю дату проверки файловой системы
  • — изменить периодичность проверок файловой системы с помощью fsck
  • -O — изменить опции файловой системы.

Изменить размер зарезервированного места для суперпользователя до пяти процентов:

sudo tune2fs -m 5 /dev/sda6

Setting reserved blocks percentage to 5% (392358 blocks)

Посмотреть информацию из суперблока, эта команда показывает всю доступную информацию параметрах файловой системы:

Filesystem volume name:   root
Last mounted on:          /
Filesystem UUID:          3ba3f7f5-1fb2-47af-b22c-fa4ca227744a
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype extent flex_bg spar
se_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux

Изменить счетчик количества монитрований:

tune2fs -C 0 /dev/sda6

Setting current mount count to 0

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

С помощью опции -O мы вообще можем превратить нашу ext3 в ext4 следующей командой:

sudo tune2fs -O extents,uninit_bg,dir_index

После этого действия нужно выполнить проверку файловой системы на ошибки в fsck. Подробнее об этом поговорим ниже.

sudo fsck -np /dev/sda6

Таким образом вы можете изменить файловую систему linux, и настроить по своему усмотрению любые ее параметры.

Изменение размера файловой системы Linux

Раньше такая функция поддерживалась в утилите parted, но потом ее убрали и для этого действия приходится использовать утилиту из набора e2fsprogs — resize2fs.

Запустить утилиту очень просто. Ей нужно передать всего два параметра:

$ resize2fs [опции] устройство размер

Доступны также опции:

  • -M уменьшить файловую систему до минимального размера
  • -f — принудительное изменение, не смотря на потерю данных
  • -F — очистить буфер файловой системы

Размер передается, как и во многих других утилитах, целым числом с указанием единиц измерения, например, 100М или 1G.

Для примера уменьшим размер нашего раздела до 400 Мегабайт:

sudo resize2fs /dev/sda6 400M

Resizing the filesystem on /dev/sda7 to 102400 (4k) blocks.
The filesystem on /dev/sda7 is now 102400 blocks long

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

При неправильном отключении носителей или неожиданном отключении питания, файловая система Linux может быть повреждена. Обычно проверка корневой файловой системы и домашнего каталога на ошибки выполняется во время загрузки. Но если эта проверка не была выполнена или нужно поверить другой носитель, придется все делать вручную. Для этого есть утилита fsck.

Синтаксис fsck:

$ fsck [опции] устройство

Опции программы:

  • -p — автоматическое восстановление
  • -n — только проверка, без восстановления
  • -y — ответить да на все запросы программы
  • — проверить на битые сектора (аналог badblocks
  • -f — принудительная проверка, даже если раздел помечен как чистый
  • -j — внешний журнал файловой системы

Проверка файловой системы Linux выполняется такой командой, проверим диск /dev/sda6, заметьте, что диск должен быть не примонтирован:

sudo fsck -a /dev/sda6

root: clean, 11/32704 files, 37901/102400 blocks

 Дефрагментация файловой системы

Хотя и фрагментация нехарактерное явление для файловых систем семейства ext, при очень интенсивном использовании может накапливаться фрагментированость, что будет замедлять работу файловой системы. Для дефрагментации можно использовать стандартную утилиту e4defrag. Просто выполните:

e4defrag /dev/sda6

Чтобы проверить нужна ли дефрагментация в Linux выполните эту же команду с опцией -c:

Total/best extents                             26247/24953
Average size per extent                        1432 KB
Fragmentation score                            0
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This device (/dev/sda6) does not need defragmentation.
Done.

В поле Fragmentation score отображен процент фрагментации, как видите, у меня 0, нормой считается до 30, 31-55 небольшие проблемы, и больше 56 — нужна дефрагментация.

Выводы

В одной из предыдущих статей мы рассмотрели как выполняется разметка диска с помощью parted. Из этой статьи вы узнали все что нужно о работе с файловой системой. Теперь у вас не возникнет проблем если у вас вдруг не будет доступа к графическим утилитам и нужно будет исправлять ошибки или настраивать файловую систему. Если остались вопросы, спрашивайте в комментариях!

Оцените статью:

Загрузка…

Работа с HDD через терминал на Ubuntu/Debian

Сегодня рассмотрим ряд команд для работы с HDD через терминал на Ubuntu/Debian и других Linux системах.

Прочитав несколько статей я конечно нашел нужную информацию о том как работать с HDD через терминал, но она была раскидана по просторам интернета и если вам дорого ваше время, то вы пришли по адресу. В данной статье я решил объединить команды и написать удобную шпаргалку для администрирования Ubuntu/Debian систем.

Как посмотреть UUID для HDD через терминал на Ubuntu/Debian

Посмотреть uuid диска для разделов можно с помощью команды:

sudo blkid

Вывод должен быть приблизительно такой:

/dev/sda5: UUID="461a03a9-a5f1-449a-8775-43afa0f455b6" TYPE="ext4" PARTUUID="62f972de-05"
/dev/sda6: UUID="572889de-8528-4e42-8a9d-1066e121b8de" TYPE="ext4" PARTUUID="62f972de-06"
/dev/sdb2: UUID="42fdec1c-3e51-11e9-b09f-1078d27639b3" TYPE="ext4" PARTUUID="32432dfd-0a2a-4c71-bf6c-2d207ae9b6b2"
/dev/sdb1: PARTUUID="a6d316f4-7282-4420-9cf5-56cb14878f22"

Как посмотреть список дисков через терминал на Ubuntu/Debian

Самый простой способ увидеть все подключённые диски — это посмотреть содержимое каталога /dev/ и отфильтровать устройства по начальному названию sd или vd. Ну это уже зависит от того, какой диск и на какой системе выищите.

sudo ls -l /dev | grep sd
brw-rw---- 1 root disk      8,   0 сен 17 08:41 sda
brw-rw---- 1 root disk      8,   2 сен 17 08:41 sda2
brw-rw---- 1 root disk      8,   5 сен 17 08:41 sda5
brw-rw---- 1 root disk      8,   6 сен 17 08:41 sda6
brw-rw---- 1 root disk      8,  16 сен 17 08:41 sdb
brw-rw---- 1 root disk      8,  17 сен 17 08:41 sdb1
brw-rw---- 1 root disk      8,  18 сен 17 08:41 sdb2

Смотрим подключенные HDD с выводом информации о размере через терминал

Посмотреть подключённые диски с выводом информации о размере, точке монтирования и свободном пространстве на Ubuntu/Debian, можно с помощью утилиты df:

sudo df -h
udev            898M     0  898M   0% /dev
/dev/sdb2       110G   11G   93G  11% /
tmpfs           187M     0  187M   0% /run/user/1000
/dev/sda6       184G   60M  174G   1% /home/Music
/dev/sda5       719G  357G  326G  53% /home/Fims

Или так:

lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931,5G  0 disk 
├─sda2   8:2    0     1K  0 part 
├─sda5   8:5    0 730,2G  0 part /home/Fims
└─sda6   8:6    0 186,3G  0 part /home/Music
sdb      8:16   0 111,8G  0 disk 
├─sdb1   8:17   0     1M  0 part 
└─sdb2   8:18   0 111,8G  0 part /

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

sudo fdisk -l
. ...
Device     Boot     Start        End    Sectors   Size Id Type
 /dev/sda2        19535870 1951168511 1931632642 921,1G  5 Extended
 /dev/sda5       419919872 1951168511 1531248640 730,2G 83 Linux
 /dev/sda6        29296640  419907583  390610944 186,3G 83 Linux
....
Device     Start       End   Sectors   Size Type
 /dev/sdb1   2048      4095      2048     1M BIOS boot
 /dev/sdb2   4096 234438655 234434560 111,8G Linux filesystem

Форматирование HDD через терминал на Ubuntu/Debian

Для форматирования разделов дисков в системе используем команду parted.

Будьте внимательны с данной командой, т.к. она может затереть весь ваш диск.

sudo parted /dev/sdb

Далее создаем новую таблицу разделов:

(parted) mklabel msdos

После можно создавать разделы. Если вам нужно создать один большой раздел, который будет занимать весь объем диска, то команда будет такой:

(parted) mkpart primary ext4 1MiB 100%

Если же вы хотите создать несколько разделов на диске, то последовательность команд будет следующей:

(parted) mkpart primary ext4 1MibGB 5GB
(parted) mkpart primary ext4 5GB 20GB
(parted) mkpart primary ext4 20GB 100%

После данной команды у вас будут три раздела с соответствующими размерами в 5 Гб, 15 Гб, а третий займет все оставшееся пространство на данном диске.

Для вывода информации набираем:

(parted) print

Если вас все устраивает, то выходим из программы форматирования:

(parted) quit

Давайте теперь отформатируем получившиеся разделы в файловую систему ext4:

sudo mkfs.ext4 /dev/sda1
sudo mkfs.ext4 /dev/sda2
sudo mkfs.ext4 /dev/sda3

После данной процедуры разделы готовы к использованию. Только не забудьте предварительно примонтировать их к системе.

Монтирование HDD через терминал на Ubuntu/Debian

Ручное монтирование дисков через терминал

Для монтирования дисков через терминал набираем следующую команду:

sudo mount /dev/sda1 /home/Music

Директория /home/Music должна существовать.

Монтирование директорий

Если при монтировании директорий терминал выдает следующее

mount: /home/Music: /home/old/Music is not a block device.

Значит Вы пытаетесь примонтировать одну директорию в другую. Для исправления данной ошибки наберите следующую команду используя опцию —bind:

sudo mount --bind /home/old/Music /home/Music

Монтирование файлов

Возможно, не только монтирование разделов linux, но и монтирование
файлов, если они содержат файловую систему, например, образов дисков.
Монтирование образа диска linux работает точно так же:

sudo mount ~/file.iso /home/user/iso

Автоматическое монтирование диска при загрузке системы

Для автоматического монтирования разделов диска воспользуемся файлом fstab. Также вам необходимо знать UUID вашего диска.

sudo nano /etc/fstab

и редактируем в соответствии с моим листингом:

....
UUID=Ваш_UUID_диска /home/Music ext4 defaults 0 0
  • Ваш_UUID_диска — смотрим командой в начале статьи

Чтобы неперезагружать систему набираем команду:

sudo mount -a

Теперь после перезагрузки системы раздел диска автоматически будет примонтирован в директорию /home/Music.

Восстановление дисков через терминал

Восстановление файловой системы

Если ваша файловая система находится на разделе с адресом /dev/sda1 выполните:

sudo fsck -y /dev/sda1

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

Восстановление поврежденного суперблока

Обычно эта команда справляется со всеми повреждениями на ура. Но если
вы сделали что-то серьезное и повредили суперблок, то тут fsck может не
помочь. Суперблок — это начало файловой системы. Без него ничего
работать не будет.

Но не спешите прощаться с вашими данными, все еще можно восстановить.
С помощью такой команды смотрим куда были записаны резервные
суперблоки:

sudo mkfs -t ext4 -n /dev/sda1

На самом деле эта команда создает новую файловую систему. Вместо ext4
подставьте ту файловую систему, в которую был отформатирован раздел,
размер блока тоже должен совпадать иначе ничего не сработает. С опцией
-n никаких изменений на диск не вноситься, а только выводится
информация, в том числе о суперблоках.

Теперь у нас есть резервные адреса суперблоков и мы можем попытаться восстановить файловую систему с помощью каждого из них, например:

sudo fsck -b 98304 /dev/sda

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

Битые сектора

Или еще мы можем найти битые сектора и больше в них ничего не писать:

sudo fsck -c /dev/sda1

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

Вывод

И так, сегодня мы научились работать с HDD через терминал на Ubuntu/Debian подобных системах.

Если есть вопросы, то пишем в комментариях.

Также можете помочь проекту, заранее всем СПАСИБО!!!

.

RSS

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0
0
vote

Рейтинг статьи

Разбивка дисков в Linux для самых маленьких / Хабр

У многих начинающих пользователей линукс возникают сомнения, как правильно разбить жесткий диск. Постараюсь немного облегчить муки выбора нашим коллегам.

У нас в распоряжении есть — физическая разбивка дисков на разделы(fdisk, gparted), соф-RAID (mdadm), менеджер логических дисков (LVM), ширование dm-crypt (остальным не стоит забивать голову).

Пути разбивки дисков неисповедимы, поэтому мы начнем с самого простого.

1. Физическая разбивка дисков

Это самый простой, надежный и совместимый «дедовский» метод. Он позволяет четко очертить границы разделов и их взаимное положение на диске.

При разбивке диска можно учесть его физические особенности и получить некоторый прирост производительности. Дело в том, что ближе к краю диска скорость чтения может быть в несколько раз выше, чем ближе к центру. Соответственно, если расположить например /boot(128 мб), swap (memory * 2 or 2. 5), /(root) то мы получаем хорошую скорость загрузки и работы с разделом подкачки. Если есть несколько дисков, то можно расположить swap в начале каждого. Но парится со swap есть смысл, если вы работаете с большими объемами данных — linux не использует swap без крайней нужды. (проверьте free -m). Отказываться от использования swap крайне не рекомендуется, так как linux хорошая система, но чудес не бывает. Открыв файл на 1ГБ можно заблокировать систему намертво без возможности разблокирования.

Разбивка диска на большое количество разделов оправдана только, если это делается для какой-то особой цели. В других случаях — достаточно обойтись простейшим / (root) и swap.

Очень часто пользователи отделяют /home от / (root) — это не имеет никакого практического смысла в однопользовательских системах. Обычно, / (root), /var, /home разделяют на серверах, чтобы пользователи со злым умыслом не заполнили логи или свою домашнюю директорию. Кстати, смонтировать /home с noexec можно и не делая отдельного раздела (man mount).

Если вы пользуетесь парралельно windows то я рекомендую использовать FAT32 для разделов с музыкой/фильмами, к которым вы хотите иметь доступ в обоих системах (и ни в коем случае не делать /home или домашнюю папку в FAT32!!). NTFS хорошо поддерживается, но недостаточно, чтобы ей пользоваться каждый день (чтобы снять unclean shutdown который не дает смонтировать раздел- нужно грузить windows), ошибки в файловой системе могут вызывать подвисания и потерю данных (привет жадному Биллу).

Запомните: черезмерная разбивка — корень всех бед. Разбивать диски «особым» образом нужно только под КОНКРЕТНУЮ задачу.

2. Логическая разбивка дисков

Не бойтесь LVM — он не такой страшный. С его помощью можно переразбивать диски, расширять партиции, добавлять физические устройства и расширяться на них, делать теневое копирование, бекап аналогичный «time machine» появился еще примерно в 2002 году. Не бойтесь, делайте бекап и пользуйтесь гибкостью LVM.

Для работы LVM, MD, DM обязательно нужен физический раздел /boot который позволит загрузчику(grub, Lilo etc) скачать минимальный образ системы (initrd) с необходимыми драйверами и конфигами для старта основной системы.

С логической разбивкой все сложнее. Вложенность разделов может быть произвольная.

Например как делается полное шифрование в ubuntu: /boot DM-CRYPT[LVM[/(root) swap]] — физический раздел /boot, затем физический раздел с dm-crypt, в котором находится LVM в свою очередь в котором два логических раздела /(root) и swap.

С вложенностью шифрования и raid можно играться как угодно.

Пример из жизни параноика:

/boot DM-CRYPT[ LVM[ /root DM-CRYPT-random[/tmp] DM-CRYPT-random[/home] DM-CRYPT-random[/var/log] DM-CRYPT-random[swap] ]]

При каждой загрузке /tmp /home /var/log и swap инициализируются с рандомным ключом. Конечно это ставит жирный крест на hibernate но при каждой загрузке- система абсолютно чистая от логов и временных файлов. Вполне сгодится для студентов или любителей побродить по порносайтам.

3. Советы по оптимизации

/boot можно сделать в файловой системе ext2 — она быстрей, чем ext3 и этого будет достаточно.

На активно использующемся разделе можно отключить access time — флаг noatime. Так часто делают на веб-серверах для уменьшения нагрузки на жесткий диск.

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

(советуйте, добавлю)

В linux можно сделать абсолютно все, что угодно и это будет работать. Главное, руководствоваться здравым смыслом и не брезговать читать man вместо довольно часто вредных и устаревших howto.

Итак, резюмируем:

Для десктопов и ноутбуков оптимальный метод разбивки — полное отсутствие разбивки.

Для тех, кто не любит бекапиться, использовать «сложные методы» вроде LVM. Может подойти вариант:

swap (memory * 2), / (остальное)

Для юзеров убунты достаточно выбрать: Использовать все свободное место под LVM, тогда у вас останется много возможностей «на вырост».

Если разбивать /, /home то вы рано или поздно столкнетесь с нехваткой места на одном из разделов.

Монтирование разделов | Русскоязычная документация по Ubuntu

Немного теории

  • Если вы раньше использовали ОС Windows, то вы, скорее всего, привыкли к дискам с именами (C:), (D:) и т.д. В ОС Ubuntu Linux все иначе. Если в Windows для каждого раздела винчестера, CD-привода, флешки или картридера, назначалась определенная буква, к примеру (E:), то в Linux содержимое всех подключаемых и внутренних дисков отображается в виде папок, которые монтируются (подключаются) в корень файловой системы (/) По началу это может показаться очень неудобным, но при постепенном осваивании системы Linux, вы поймете что так правильней и даже удобней.

В Linux подключение диска в основную файловую систему называется монтирование.

  • Список всех смонтированных устройств можно узнать командой mount

  • На данный момент Ubuntu Linux выполняет автоматическое монтирование всех обнаруженных подключаемых устройств (внешние винчестеры, флешки, фотоаппараты и т.д.) в корень файловой системы в директорию /media/. Например, если вы вставите флешку с меткой «Flash_card», то система смонтирует ее в каталог /media/Flash_card. В любом случае вам не надо задумываться куда и как монтировать внешние носители, т.к. они автоматически становятся доступны на панели рабочего стола в меню «Переход».

Однако ситуация с NTFS, FAT и FAT32 разделами основного (внутреннего) винчестера несколько иная. Чтобы каждый раз при попытке зайти на NTFS или FAT32 раздел не вводить пароль нужно выполнить действия рассмотренные ниже:

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

Монтирование через идентификатор диска UUID является наиболее надёжным, работает во всех версиях Ubuntu (и не только Ubuntu).

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

Узнаем UUID разделов, для этого

  • в терминале выполняем команду:

    sudo blkid

Примерный вывод:

/dev/sda1: UUID="00a4ad8e-dbcc-4c32-a0b4-074b5ee2bfb4" TYPE="ext4" 
/dev/sda2: LABEL="Win7" UUID="0E42D6D242D6BE21" TYPE="ntfs" 
/dev/sda3: LABEL="Shared" UUID="7ECCC7F5CCC7A62D" TYPE="ntfs" 
/dev/sda4: UUID="1050e484-896f-42a9-bdb3-49eb1255cc77" TYPE="swap" 
/dev/sr0: LABEL="DrWebLiveCD" TYPE="iso9660" 
/dev/sdb1: LABEL="TRENDNET8GB" UUID="355B-FE37" TYPE="vfat"

Предположим, мы хотим подключить раздел «Shared» (NTFS-раздел, находящийся на основном диске компьютера) и «TRENDNET8GB» (флэшка, отформатированная в FAT32).

Бонус использования команды blkid по сравнению с инспекцией каталога /dev/disk/by-uuid/ в том,что вы сразу видите тип файловой системы на блочном устройстве, если ядру удалось его определить.

  • Создаём каталоги для монтирования:

    sudo mkdir /mnt/Shared /mnt/TrendNet8Gb
  • Открываем от имени администратора файл /etc/fstab, содержащий информацию о всех монтируемых при загрузке разделах:

    sudo nano /etc/fstab
  • Добавляем в конец файла,
    для NTFS:

    UUID="7ECCC7F5CCC7A62D" /mnt/Shared ntfs rw,nls=utf8,gid=plugdev,umask=0002 0 0


    для FAT и FAT32:

    UUID="355B-FE37" /mnt/TrendNet8Gb vfat rw,exec,codepage=866,nls=utf8,gid=plugdev,umask=0002,nofail,users 0 0
  • Монтируем только что вписанные разделы диска:

    sudo mount -a

Способ 2: монтирование через имена устройств

Монтирование с помощью таблицы разделов поддерживается практически во всех версиях всех *nix-подобных операционных систем.

Считается устаревшим и строго не рекомендуется к постоянному использованию.

Единственным заметным плюсом является небольшая длина имён устройств, что удобно при прямой работе с консолью. Например, во время реанимации умершей системы.

  • Узнаём имена разделов. Для этого можно, опять же, воспользоваться командой blkid, либо обратиться к помощи системы:

    cat /proc/partitions

Примерный вывод:

# cat /proc/partitions
major minor  #blocks  name

   8     0  488386584 sda
   8     1   20971520 sda1
   8     2    2097152 sda2
   8     3  464519168 sda3
   8    16  488386584 sdb
   8    17   20971520 sdb1
   8    18    2097152 sdb2
   8    19  464519168 sdb3
   9     1   10538496 md1
   9     0    6289344 md0

Разделы, оканчивающиеся цифрой — файловые системы. Разделы без цифры на конце — реальные физические устройства. В данном примере участвуют два физических диска (/dev/sda и /dev/sdb) и два рейд-массива (по сути — две файловые системы, не привязанные напрямую к какому-то одному физическому носителю).

Больше информации (как то точная геометрия и серийные номера физических дисков, что бывает нужно в целях более точной идентификации разделов) можно получить, воспользовавшись утилитами fdisk, sfdisk (для дисков, размеченных в MBR), parted (рекомендуется, понимает как разметку MBR, так и более современную GPT, используемую в системах с UEFI BIOS).

Пример вывода команды fdisk (вывод parted отличается очень незначительно):

# fdisk -u -l /dev/sd?

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x8543ab30

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    41945087    20971520   83  Linux
/dev/sda2        41945088    46139391     2097152   83  Linux
/dev/sda3        46139392   975177727   464519168   83  Linux

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x84a90046

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048    41945087    20971520   83  Linux
/dev/sdb2        41945088    46139391     2097152   83  Linux
/dev/sdb3        46139392   975177727   464519168   83  Linux

Попробуем достучаться до массива md0.

  • Как и прежде, создаём каталог для монтирования файловой системы:

    sudo mkdir /mnt/raid0
  • Предположим, мы не знаем, какая файловая система на диске. К счастью, в большинстве случаев вполне можно положиться на автоматическое определение системы.

    $ sudo mount /dev/md0 /mnt/raid0 -t auto -o rw,nls=utf8,noatime
    
    $ mount
    ....
    /dev/md0 on /mnt/raid0 type ext3 (rw,noatime,nls=utf8)

Я не стал загружать основной текст статьи расшифровкой опций монтирования, но несколько слов пояснения сказать необходимо.

Если вы хотите предотвратить любую запись на файловую систему вообще, указание одной только опции ro (read-only, только чтение) вас не спасёт — такие действия, как восстановление целостности системы по записям из журнала, будут проведены при подключении систем, поддерживающих журналирование. При необходимости предотвратить любую запись на файловую систему пользуйтесь другими средствами для монтирования, либо внимательно читайте документацию на утилиту монтирования для соответствующей файловой системы, если она допускает принудительное отключение подобных действий.

  • exec — все файлы на подключемой системе будут считаться исполнимыми, если система не поддерживает других механизмов указания исполнимости файла. Альтернативно, noexec запрещает исполнение любых бинарных файлов вообще.

  • codepage=866 — указывает, какую кодировку использовать для трансляции имён файлов на файловой системе. Кириллическая русская кодовая страница для файловой системы FAT — 866. Длинные имена на файловой системе (VFAT) сохраняются в уникоде, реально эта настройка нужна только для дисков, записанных на отличных от Windows системах, не поддерживающих соглашения VFAT.

  • nls=utf8 — указывает модулю файловой системы, какую кодировку использовать при передаче данных системе (и пользователю). Старое название этой опции — iocharset использовать запрещено — она будет удалена в следующих версиях программы.

Схематично взаимодействие этих двух опций можно представить как:

FS <=charset=> OS <=nls=> Applications <=> Operator
  • uid (gid) — указывает, какой пользователь (группа) будет владеть точкой подключения (и файлами на ней, если нет других способов определить владельца). gid=plugdev указывает, что все пользователи в группе 46(plugdev) могут обращаться к этому устройству. Локальные пользователи в Ubuntu обычно входят в эту группу.

  • umask=0002 — подробности смотрите в __man chmod__
  • nofail — если указанный том недоступен в момент загрузки, это не создаст ошибок и загрузка нормально продолжится.
    Внимание: настольная (desktop) версия Ubuntu всё равно выдаст предупреждение и будет ждать ввода пользователя.

  • users — допускает монтирование и размонтирование устройства обычными пользователями, причём, в отличие от user, размонтировать устройство может любой пользователь, не обязательно тот, что его монтировал.

Теперь диски стали подключаться автоматически, но так как это делается от имени root, у нас пропала возможность на подключенных дисках давать права на общий доступ, чтобы восстановить эту возможность добавим настройку в Samba:

sudo gedit /etc/samba/smb. conf

добавим в секцию [global]:

usershare owner only = false

Это ОЧЕНЬ ГРУБЫЙ ХАК. Для нормальной работы с пользователями на NTFS дисках — создайте на NTFS разделе файл .NTFS-3G/UserMapping

Настройка и управление LVM разделами в Linux

LVM (Logical Volume Manager) – подсистема операционных систем Linux, позволяющая использовать разные области физического жесткого диска или разных жестких дисков как один логический том. LVM встроена в ядро Linux и реализуется на базе device mapper.

Главные преимущества LVM – высокий уровень абстракции от физических дисков, гибкость и масштабируемость. Вы можете на лету изменять размер логического тома, добавлять (и удалять) новые диски. Для LVM томов поддерживается зекалирование, снапшоты (persistent snapshot) и striping (расслоение данных между несколькими дисками с целью увеличения производительности).

В данной статье мы рассмотрим использование LVM разделов на примере Linux CentOS 8, покажем процесс объединения двух дисков в одну группу LVM, посмотрим как создавать группы, тома, монтировать, расширять и уменьшать размер LVM разделов.

Прежде всего нужно разобраться с уровнями дисковых абстракций LVM.

  • Physical Volume (PV) – физический уровень. Физические диски инициализируются для использования в LVM.
  • Volume Group (VG) – уровень группы томов. Инициализированные диски объединяются в логические группы с именем.
  • Logical Volume (LV) — создается логический том на группе томов, на котором размещается файловая система и данные.

Установка утилиты lvm2

Чтобы начать работу с LVM, нужно установить утилиту lvm2. Выполним следующие команды:

apt-get install lvm2 — для Ubuntu, Mint, Debian

yum install lvm2 – для Centos, Red-Hat, Fedora

В разных версиях Linux отличается только способ установки утилиты lvm2 (установка через yum/dnf или apt-get), дальнейшие команды для работы с LVM, одинаковы.

Создание LVM разделов

Итак, у нас имеется виртуальная машина KVM, к которой подключены два дополнительных диска. Проверим, что они доступны в системе, используя команду:

fdisk -l

Как вы видите, у меня доступны два диска /dev/vdb и /dev/vdc.

При настройке LVM на своем виртуальном или физическом сервере, используйте свою маркировку дисков.

Чтобы диски были доступны для LVM, их нужно пометить (инициализировать) утилитой pvcreate:

pvcreate /dev/vdb /dev/vdc

Теперь, чтобы убедиться, что данные диски можно использовать для LVM, введите команду pvdisplay:

Как видим, оба диска отображаются. Разберем информацию из вывода команды:

  • PV Name – имя диска или раздела
  • VG Name – группа томов, в которую данный диск входит (мы пока группу не создали)
  • PV Size – размер диска или размера
  • Allocatable – распределение по группам. В нашем случае распределения не было, поэтому указано NO
  • PE Size – размер физического фрагмента. Если диск не добавлен ни в одну группу, значение всегда будет 0
  • Total PE – количество физических фрагментов
  • Free PE — количество свободных физических фрагментов
  • Allocated PE – распределенные фрагменты
  • PV UUID – идентификатор раздела

С помощью команды pvscan вы можете просканировать диски на предмет PV.

Следующий этап – создание группы томов. Для создания групп томов используется команда vgcreate. Чтобы объединить ранее помеченные диски, воспользуемся командой:
# vgcreate test /dev/vdb /dev/vdc

Volume group "test" successfully created

Чтобы проверить результат введите vgdisplay:

Как видим, диски объединены в группу test и VG Size показывает общий размер дисков.

Разберем информацию из листинга команды vgdisplay:

  • VG Name – группа томов, в которую данный диск входит.
  • Format – версия подсистемы lvm, которая используется для создание группы (в нашем случае версия 2)
  • Metadata Areas – область метаданных
  • VG Access – уровень доступа к группе логических томов
  • VG Size – общий объем дисков, которые входят в группу
  • PE Size — размер физического фрагмента
  • Alloc PE / Size – распределенное пространство(количество и объем фрагментов)
  • VG UUID – идентификатор группы

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

Чтобы в вашей группе создать логический том определенного размера и именем, используйте команду:

# lvcreate -L 5G test

Logical volume "lvol0" created.

Как видим из листинга, в группе test был создан логический том с именем lvol0 и размером 5G.

Если вы хотите сами задать имя, используйте флаг -n:

# lvcreate -L 5G -n test1 test

Logical volume "test1" created

Несколько примеров для создания логических томов с разными размерами:

lvcreate -l 40%VG test – 40% от дискового пространства группы test

lvcreate -l 100%FREE test – использовать все свободное пространство группы test

Чтобы вывести информацию о логическом томе, используйте lvdisplay:

Так же разберем листинг данной команды:

  • LV Path – путь к устройству логического тома (к диску или разделу)
  • LV Name – имя логического тома
  • VG Name – имя группы томов
  • LV UUID – идентификатор логического тома
  • LV Write Access – уровень доступа к логическому тому
  • LV Creation host, time — информация о хосте, дата когда был создан логический том
  • LV Size – размер диска, доступный для использования логическому тому
  • Current LE – количество логических фрагментов

LVM: создание файловой системы, монтирование логического тома

Чтобы создать файловую систему на логическом томе, воспользуйтесь утилитой mkfs:

Создадим файловую систему ext4 на LVM томе:

mkfs. ext4 /dev/test/test1

Файловая система была создана без ошибок.

Теперь создадим тестовую директорию и примонтируем логический том к данной директории:

# mkdir /var/www/home
# mount /dev/test/test1 /var/www/home/

Как видите, все прошло без ошибок и теперь директория /var/www/home существует как отдельный раздел.

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

Откроем файл:
nano /etc/fstab

И добавим в него следующую информацию:

/dev/test/test1 /var/www/home ext4 defaults 1 2

После чего примонтировать том можно будет через mount -a:

# mount -a
# df -h

Filesystem Size Used Avail Use% Mounted on
devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 6.7M 489M 2% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 20G 1. 3G 19G 7% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/mapper/test-test1 4.8G 20M 4.6G 1% /var/www/home

Чтобы проверить общую информацию по дискам, разделам и томам, введите команду lsblk:

Как видим, наш созданный том отображается, и указана директория к которой он примонтирован.

Команда lvmdiskscan позволяет просканировать доступные диски, показывает их размер и принадлежность к LVM.

Увеличение логического тома LVM

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

pvcreate /dev/нашдиск — инициализация диска для lvm

vgextend test /dev/нашдиск — добавление диска в группу томов

Чтобы расширить логический том, воспользуйтесь следующей схемой:

lvextend -L10G /dev/test/test1

Данным способом вы расширите раздел на 10 Гб.

Еще несколько примеров расширения LVM раздела:

lvextend -L+10G /dev/test/test1 — добавите 10 Гб к вашему тому

lvextend -l +100%FREE /dev/test/test1 — выделите все нераспределенное пространство в группе test

Осталось увеличить раздел файловой системы:

resize2fs /dev/test/test1 – для ext4

xfs_growfs /dev/test/test1 – для xfs

Уменьшение LVM томов

LVM позволяют уменьшать размер тома. Но для безопасности умеьшения размера раздела его нужно отключить.

Отмонтируем том от директории:

umount /var/www/home/

Выполним проверку диска:

e2fsck -fy /dev/test/test1

Уменьшим раздел файловой системы на 4 Гб:

# resize2fs /dev/test/test1 4G

resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/test/test1 to 1048576 (4k) blocks.
The filesystem on /dev/test/test1 is now 1048576 blocks long.

# lvreduce -L-4G /dev/test/test1

WARNING: Reducing active logical volume to 6.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce test/test1? [y/n]: y
Size of logical volume test/test1 changed from 10.00 GiB (2560 extents) to 6.00 GiB (1536 extents).
Logical volume test/test1 successfully resized.

Теперь уменьшим размер самого LVM тома:

lvreduce -L-4G /dev/test/test1

После чего, нужно примонтировать том обратно и проверить текущий размер:

Как видим, размер уменьшился до 4 Гб.

Удаление LVM групп и томов

Для удаления LVM томов, используется команда lvremove:

lvremove /dev/test/test1

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

# vgremove test

Volume group "test" successfully removed

Убрать метки с LVM дисков:

# pvremove /dev/vdb /dev/vdc

Labels on physical volume "/dev/vdb" successfully wiped.
Labels on physical volume "/dev/vdc" successfully wiped.

Создание зеркальных томов LVM

LVM позволяет создать зеркальные тома для повышения отказоустойчивости хранения данных. В LVM зеркале данные одновременно хранятся на двух (или более) физических дисках (подобие RAID-1). Процедура создания зеркального тома в LVM.

  1. Инициализация дисков: pvcreate /dev/sd{b,c}
  2. Создаем LVM группу: vgcreate mirror1 /dev/sd{b,c}
  3. Создадим зеркальный LVM том: lvcreate -L 5g -m1 -n lvMirr1 VGmirror1

Инструменты LVM очень удобны для работы, с помощью них можно легко управлять томами, нарезать их на нужные вам размеры и с легкостью использовать под свои нужды. В данной статье я постарался затронуть все основные моменты в работе с LVM.

Работа с дисками в Linux Ubuntu/Mint

  • nginx: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32

    Если на одном экземпляре nginx работает много сайтов, то в один прекрасный момент после добавления очередного сайта при перезапуске nginx …

  • Основные сведения о DNS. Введение.

    DNS ( Domain Name System — система доменных имён) — компьютерная распределённая система преобразование символьного имени в IP-адрес  и наоборот. …

  • Системные колонки таблиц PostgreSQL

    В PostgreSQL каждая таблица, кроме колонок указанных пользователем при ее создании, имеет несколько системных колонок, которые неявно создаются СУБД при …

  • Монтирование расшаренных сетевых папок в Ubuntu

    Файловая система CIFS, встроенная в ядро Linux обычно предпочтительный метод для монтирования расшаренных сетевых ресурсов SMB/CIFS. CIFS VFS является виртуальной …

  • Проверка, восстановление и оптимизация баз MySQL

    Программа mysqlcheck используется для проверки целостности (-c, -m, -C), восстановления (-r), анализа (-a) или оптимизации (-o) таблиц базы данных MySQL.

  • Введение в GRUB2

    GRUB (GRand Unified Bootloader1) — программа-загрузчик операционных систем. GRUB является эталонной реализацией загрузчика, соответствующего спецификации Multiboot и может загрузить любую …

  • Enigmail – дополнение Thunderbird для шифрования почтовых сообщений

    Enigmail – дополнение к Thunderbird. С его помощью можно интегрировать возможности шифрования GnuPG в Thunderbird. Чтобы использовать Enigmail, надо установить …

  • Почему в меню загрузки ubuntu нет memtest86

    Иногда в Ubuntu начиная с версии 14.04 в grub меню загрузки отсутствует memtest86+. Обычно это не замечают, пока не понадобится …

  • Переключение кодировок в MC

    Переключение кодировок Чтобы иметь возможность переключения кодировок, необходимо собрать Midnight Commander с параметром —enable-charset. Переключение кодировок работает в файловых панелях, …

  • Установка GroupOffice

    Установка Groupoffice версии 5.0.29 достаточно простая и проверена на Ubuntu server 64 13. 10 Добавляем в файл /etc/apt/sources.list следующую строчку: deb …

  • Заря компьютерной эры

    Первые устройства для счёта В настоящее время вычислительная техника уже настолько вошла в нашу повседневную жизнь, что уже трудно поверить, …

  • Настройка редакций записей в WordPress

    При  сохранении статей и их черновиков в WordPress по умолчанию автоматически создаются новые версии или  редакции (revisions) этих записей. При …

  • Шпаргалка по архиватору zip

    В Ubuntu изначально архиватор zip не установлен. Устанавливается из репозитория: sudo apt-get install zip Основные, наиболее часто используемые команды: Создание …

  • Как автоматически очищать кэш в WordPress

    Для настройки автоматической очистки кэша в WordPress необходимо установить и активировать плагин Nginx Helper на сайте WordPress. Затем перейдите к …

  • Работа с сервисами в Ubuntu 16.04

    Для работы с сервисами в Ubuntu 16.04 в основном рекомендуется использовать команду systemctl. Для того, чтобы посмотреть все загруженные/активные сервисы …

  • Disk I / O — Настройка производительности в Linux

    Настройка дискового ввода-вывода

    Диски — это блочных устройств, и мы можем
    доступ к связанным структурам данных ядра через
    Sysfs.

    Мы можем использовать структуры данных ядра под / sys
    для выбора и настройки алгоритмов очередей ввода / вывода для блока
    устройств.
    «Блок» и «символ» — это вводящие в заблуждение названия типов устройств.
    Важное различие заключается в том, что «характер» без буферизации
    устройства обеспечивают прямой доступ к устройству,
    в то время как буферизованные «блочные» устройства доступны через
    буфер, который может значительно улучшить производительность.Вопреки своим общим названиям,
    «символьные» устройства могут устанавливать границы блоков, и вы
    может читать или записывать «блочные» устройства в блоки любого размера
    включая по одному байту за раз.

    Операционная система использует ОЗУ как для буфера записи , так и для буфера записи
    и кэш чтения.
    Идея состоит в том, что данные для хранения записываются в
    буфер записи, где он может быть отсортирован или сгруппирован.
    На механическом диске необходимо упорядочить данные, чтобы
    последовательность операций записи может происходить при движении руки
    в одном направлении по тарелке, вместо
    ищу туда-сюда и значительно увеличивая общее время.Если система хранения — RAID, то данные должны быть
    сгруппированы по полосам RAID, так что одна полоса может быть записана в
    одна операция.

    Что касается чтения, то недавно прочитанные данные файловой системы хранятся в ОЗУ.
    Если блоки «чистые», не измененные с момента последнего чтения,
    тогда данные могут быть прочитаны непосредственно из кеш-памяти вместо
    доступ к гораздо более медленным механическим дискам.
    Правильные решения делают чтение более эффективным
    о том, какие блоки хранить, а какие отбросить.

    Алгоритмы организации очереди на диск

    Ожидающие события ввода-вывода планируются или сортируются по
    алгоритм организации очереди, также называемый лифтом
    потому что аналогичные алгоритмы можно использовать
    для наиболее эффективного планирования лифтов.
    Единого лучшего алгоритма не существует, выбор зависит от
    некоторые на вашем оборудовании и многое другое на рабочей нагрузке.

    Настройка выполняется по диску, а не по разделам,
    поэтому, если на вашем первом диске есть разделы, содержащие
    /, г.
    / загрузка и
    / загрузочный / efi ,
    все три файловые системы должны обрабатываться одинаково.Так как вещи под / boot нужны только
    редко после загрузки, если вообще, то рассмотрите
    использование корневого раздела для выбора алгоритма
    для всех / dev / sda .
    Это предвещает предстоящее обсуждение файловой системы, где
    мы хотим ограничить ввод-вывод на физическое устройство.

    Настройка выполняется с помощью объекта ядра
    / sys / block / sd * / очередь / планировщик .
    Вы можете прочитать его текущее содержимое с помощью cat
    или похожие.
    В выходных данных перечислены все алгоритмы организации очередей, поддерживаемые ядром.Тот, который сейчас используется, заключен в квадратные скобки.

    # grep. / системный / блок / SD * / очередь / планировщик
    / sys / block / sda / queue / scheduler: крайний срок нет [cfq]
    / sys / block / sdb / queue / scheduler: крайний срок нет [cfq]
    / sys / block / sdc / queue / scheduler: крайний срок нет [cfq]
    / sys / block / sdd / queue / scheduler: крайний срок noop [cfq] 

    Вы можете изменить содержимое объекта ядра
    и измените алгоритм на echo .

    # кошка / система / блок / SDD / очередь / планировщик
    крайний срок noop [cfq]
    # эхо крайний срок> / sys / block / sdd / queue / scheduler
    # кошка / система / блок / SDD / очередь / планировщик
    noop [крайний срок] cfq
     

    Если вы ищете информацию об упреждающем вводе-выводе
    scheduler, вы используете старые ссылки.Было удалено
    из ядра 2.6.33.

    Кратчайшее объяснение: Срок использования
    для интерактивных систем и
    NOOP для автоматического вычисления.

    Но читайте подробности о том, почему, и о других параметрах, которые нужно настроить.

    Планировщик сроков

    Крайний срок Алгоритм пытается ограничить
    максимальную задержку и сделать людей счастливыми.
    Каждому запросу ввода-вывода назначается собственный крайний срок и
    он должен быть завершен до истечения этого таймера.

    Для каждого устройства поддерживаются две очереди, одна сортируется по
    сектор, а другой — к сроку.
    Пока крайние сроки не истекают, запросы ввода-вывода
    выполняются в секторах, чтобы минимизировать движение головы и
    обеспечить лучшую пропускную способность.

    Причины использования планировщика крайних сроков включают:

    1: Люди используют вашу систему в интерактивном режиме.
    В вашей рабочей нагрузке преобладают интерактивные
    приложения, либо пользователи, которые в противном случае могут
    жалуются на вялую работу
    или базы данных с большим количеством операций ввода-вывода.

    2: операции чтения выполняются значительно чаще
    чем операции записи, поскольку приложения больше
    вероятно заблокирует ожидание чтения данных.

    3. Ваше оборудование для хранения данных — это SAN (сеть хранения данных)
    или RAID-массив с глубокими буферами ввода-вывода.

    Red Hat по умолчанию использует крайний срок для дисков без SATA
    начиная с RHEL 7.
    IBM System z по умолчанию использует крайний срок для всех дисков.

    Планировщик CFQ

    CFQ или алгоритм полностью справедливой организации очереди
    сначала делит процессы на три класса реального времени,
    Лучшее усилие и отдых.Процессы в реальном времени обслуживаются перед процессами Best Effort,
    которые, в свою очередь, обслуживаются перед неактивными процессами.
    Внутри каждого класса ядро ​​пытается дать каждому потоку
    такое же количество временных отрезков.
    По умолчанию процессы относятся к классу Best Effort,
    вы можете изменить приоритет ввода-вывода для процесса с помощью
    ionice .
    Ядро использует последние шаблоны ввода-вывода, чтобы предвидеть,
    в ближайшем будущем приложение будет выдавать больше запросов,
    и если ожидается больше операций ввода-вывода, ядро ​​будет ждать
    даже если у других процессов есть отложенные операции ввода-вывода.

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

    Причины использовать планировщик CFQ:

    1: Люди не используют вашу систему в интерактивном режиме,
    по крайней мере, не сильно.

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

    2: Вы не используете XFS.

    Согласно xfs.org,
    планировщик CFQ подавляет большую часть распараллеливания в XFS.

    Red Hat использует это по умолчанию для дисков SATA.
    начиная с RHEL 7.
    и по умолчанию используют XFS …

    Планировщик NOOP

    Планировщик NOOP ничего не делает, чтобы изменить
    порядок или приоритет, он просто обрабатывает запросы в
    порядок, в котором они были отправлены.

    Это может обеспечить лучшую пропускную способность, особенно при хранении
    подсистемы, которые предоставляют свои собственные очереди, такие как
    твердотельные накопители, интеллектуальные RAID-контроллеры с их
    собственный буфер и кэш, а также сети хранения данных.

    Обычно это приводит к наихудшей задержке, поэтому было бы
    плохой выбор для интерактивного использования.

    Причины использования планировщика noop включают:

    1: Пропускная способность — ваша главная задача,
    вам наплевать на задержку.

    Пользователи не используют систему в интерактивном режиме.

    2: Ваша рабочая нагрузка зависит от ЦП: в большинстве случаев мы
    ожидая, пока ЦП что-то закончит, события ввода-вывода
    относительно небольшие и широко расставленные.

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

    Настройка планировщиков

    Напомним (или узнайте здесь)
    что Sysfs является иерархией под / sys и
    отображает внутренние конструкции ядра в файловую систему таким образом, чтобы:

    • Каталоги представляют объекты ядра,
    • Файлы представляют собой атрибуты этих объектов, и
    • Символические ссылки представляют отношения (обычно
      идентичность) между объектами

    Различные файлы (атрибуты) появляются в
    очередь / подкаталог iosched (объект)
    при изменении содержимого (настройки)
    файла (атрибут) очереди / планировщика .На это легче смотреть, чем объяснять.
    Каталоги для самих дисков содержат одинаковые
    файлы и подкаталоги, включая файл
    очередь / планировщик и подкаталог
    очередь / iosched / :

    # ls -F / sys / block / sdb /
    alignment_offset discard_alignment держатели / съемный стат
    bdi @ события в воздухе ro подсистема @
    возможность events_async power / sdb1 / trace /
    dev events_poll_msecs очередь / размер uevent
    устройство @ ext_range диапазон подчиненных устройств /
    
    # ls -F / sys / block / sdb / очередь
    add_random max_hw_sectors_kb optim_io_size
    discard_granularity max_integrity_segments physical_block_size
    discard_max_bytes max_sectors_kb read_ahead_kb
    discard_zeroes_data max_segment_size вращательный
    hw_sector_size max_segments rq_affinity
    планировщик iosched / minimum_io_size
    iostats nomerges write_same_max_bytes
    логический_ размер_блока nr_request 

    Назначим три разных планировщика и посмотрим, какие настраиваемые
    параметры появляются в их очереди / iosched
    подкаталоги:

    # эхо cfq> / sys / block / sdb / queue / scheduler
    # эхо крайний срок> / sys / block / sdc / queue / scheduler
    # echo noop> / sys / block / sdd / queue / scheduler
    
    # ls -F / sys / block / sd [bcd] / queue / iosched /
    / системный / блок / SDB / очередь / iosched /:
    back_seek_max fifo_expire_sync квант slice_idle
    back_seek_penalty group_idle slice_async slice_sync
    fifo_expire_async low_latency slice_async_rq target_latency
    
    / системный / блок / SDC / очередь / iosched /:
    fifo_batch front_merges read_expire write_expire пишет_starved
    
    / системный / блок / SDD / очередь / iosched /: 

    Итак, мы видим, что планировщик cfq имеет двенадцать читаемых
    и настраиваемые параметры,
    в планировщике крайнего срока их пять,
    а в планировщике noop их нет (что имеет смысл
    поскольку это не планировщик).

    Настройка планировщика CFQ

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

    Атрибут Значение и предлагаемые настройки
    fifo_expire_async Количество миллисекунд асинхронного
    запрос (буферизованная запись) может оставаться
    необслуживаемый.
    При пониженной буферизации записи
    задержка необходима, либо
    уменьшение по умолчанию 250 мс
    или подумайте о переходе на
    планировщик сроков.
    fifo_expire_sync Количество миллисекунд в синхронном
    запрос (чтение или O_DIRECT без буферизации
    пишите) может остаться без обслуживания.

    Если снижена задержка чтения
    необходимо, либо уменьшение
    по умолчанию 125 мс или
    рассмотреть возможность перехода на
    планировщик сроков.
    low_latency 0 = отключено:
    Задержка игнорируется, дайте каждому процессу
    полный рабочий день.

    1 = включено:
    Ставьте справедливость выше производительности,
    установить максимальное время ожидания
    300 миллисекунд на каждый процесс
    выдача запросов ввода-вывода для устройства.

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

    Увеличьте это, чтобы улучшить
    пропускная способность оборудования хранения
    с собственным глубоким буфером ввода / вывода
    такие как SAN и RAID,
    за счет увеличения
    задержка.
    slice_idle Время в миллисекундах, в течение которого cfq
    будет простаивать в ожидании дальнейшего
    Запросы.

    Установить на 0 для твердотельных накопителей
    или для внешнего RAID с его
    собственный кеш.Оставьте значение по умолчанию 8
    миллисекунды для внутренних
    хранилище без RAID для уменьшения
    искать операции.
    Настройка планировщика крайнего срока

    Помните, что это для интерактивной работы, когда задержка
    более 100 миллисекунд действительно будут беспокоить ваших пользователей.
    Пропускная способность была бы хорошей, но мы должны уменьшить задержку.

    Атрибут Значение и предлагаемые настройки
    fifo_batch Количество операций чтения или записи в
    выпуск одной партией.
    Более низкие значения могут
    уменьшить задержку.


    Более высокие значения могут увеличить пропускную способность
    на вращающихся механических дисках,
    но за счет ухудшения задержки.

    Вы выбрали срок
    планировщик для ограничения задержки,
    так что ты, вероятно, не хочешь
    увеличивать это, по крайней мере, не
    очень сильно.
    read_expire Количество миллисекунд, в течение которых
    запрос на чтение должен быть обслужен.
    Уменьшить значение по умолчанию
    от 500 до 100 в системе с
    интерактивные пользователи.
    write_expire Количество миллисекунд, в течение которых
    запрос на запись должен быть обслужен.

    Оставить по умолчанию 5000, пусть
    операции записи должны быть выполнены
    асинхронно в фоновом режиме
    если ваше специализированное приложение
    использует много синхронных записей.
    записывает_содержание Число прочитанных пакетов, которые могут быть обработаны
    перед обработкой пакета записи.
    Увеличить по умолчанию 2
    уделять приоритетное внимание
    читать операции.
    Настройка планировщика NOOP

    Помните, что это полностью не интерактивная работа, когда
    пропускная способность — это все, что имеет значение.
    Интеллектуальный анализ данных, высокопроизводительные вычисления и рендеринг,
    и системы с привязкой к ЦП с быстрым хранилищем.

    Все дело в том, что NOOP — это не планировщик,
    Запросы ввода-вывода обрабатываются строго в порядке очереди.Все, что мы можем настроить, это некоторые параметры блочного слоя в
    / sys / block / sd * / queue / * , который также может быть
    настроен для других планировщиков, так что …

    Настройка общих параметров ввода-вывода блока

    Они находятся в / sys / block / sd * / queue / .

    Атрибут Значение и предлагаемые настройки
    max_sectors_kb Максимально допустимый размер запроса ввода-вывода
    в килобайтах, которые должны быть в пределах
    эти границы:

    Мин. Значение = макс (1, размер_ логического_блока /1024)

    Макс. Значение = max_hw_sectors_kb
    nr_requests Максимальное количество запросов на чтение и запись
    которые можно поставить в очередь за один раз перед
    следующий процесс, запрашивающий чтение или
    писать усыпляет.Значение по умолчанию 128 означает чтение 128
    запрашивает и 128 запись
    запросы можно ставить в очередь сразу.

    Большие значения могут увеличиваться
    пропускная способность для рабочих нагрузок
    писать много маленьких файлов,
    меньшие значения увеличиваются
    пропускная способность с большей
    Операции ввода-вывода.


    Вы можете уменьшить
    это, если вы используете
    приложения, чувствительные к задержкам,
    но тогда вы не должны использовать
    NOOP, если задержка чувствительна!
    optim_io_size Если ненулевое значение, запоминающее устройство сообщило
    собственный оптимальный размер ввода / вывода.
    Если вы разрабатываете свой
    собственные приложения, сделать свой ввод / вывод
    запросов, кратных этому
    размер, если возможно.
    read_ahead_kb Количество килобайт, которое будет читать ядро
    вперед во время последовательного чтения
    операция.
    128 кбайт по умолчанию, если диск
    используется с LVM, устройство отображения может
    извлекайте выгоду из более высокого значения.

    Если ваша рабочая нагрузка много
    больших потоковых чтений,
    большие значения могут улучшить
    производительность.
    поворотный Должно быть 0 (нет) для твердотельных дисков,
    но некоторые не правильно сообщают
    их статус к ядру.

    Если неправильно установлено 1 для
    SSD, установите значение 0, чтобы отключить
    ненужная логика планировщика означает
    уменьшить количество поисков.

    Автоматическая настройка планировщиков

    Sysfs — это файловая система в памяти, все возвращается назад
    к значениям по умолчанию при следующей загрузке.Вы можете добавить настройки в /etc/rc.d/rc.local :

    ... предыдущие строки опущены ...
    
    ## Добавлен для настройки диска эта интерактивная система с большим объемом чтения
    для ДИСКА в sda sdb sdc sdd
    делать
    # Сначала выберите планировщик крайнего срока
    echo deadline> / sys / block / $ {DISK} / queue / scheduler
    # Теперь установите параметры планировщика крайнего срока
    эхо 100> / sys / block / $ {DISK} / queue / iosched / read_expire
    эхо 4> / sys / block / $ {DISK} / queue / iosched / write_starved
    сделано 

    Настройте управление виртуальной памятью для повышения производительности ввода-вывода

    Эта работа выполняется в Procfs под номером / proc .
    и, в частности, в / proc / sys / vm / * .Вы можете интерактивно экспериментировать с echo
    и sysctl .
    Когда вы определились с набором параметров настройки,
    создайте новый файл с именем /etc/sysctl.d/
    и введите свои настройки там.
    Оставьте файл /etc/sysctl.conf с
    настройки по умолчанию, файлы, которые вы добавляете, перезаписывают эти
    изменения.

    Новый файл должен называться * .conf ,
    рекомендуется, чтобы его имя состояло из двух цифр, тире,
    имя, а затем требуемый .conf .
    Итак, что-то вроде:

    # ls / etc / sysctl *
    /etc/sysctl.conf
    
    /etc/sysctl.d:
    01-diskIO.conf 02-netIO.conf
    
    # cat /etc/sysctl.d/01-diskIO.conf
    vm.dirty_ratio = 6
    vm.dirty_background_ratio = 3
    vm.vfs_cache_pressure = 50 

    Теперь для структур данных виртуальной памяти мы могли бы
    конструктивно манипулировать:

    Атрибут Значение и предлагаемые настройки
    dirty_ratio «Грязная» память — это то, что ждет
    записано на диск. dirty_ratio — это число
    страниц памяти, на которых обрабатывает
    начнет записывать грязные данные,
    выражается в процентах от
    общее количество бесплатных и восстанавливаемых страниц.
    Значение по умолчанию 20 является разумным.
    Увеличьте до 40, чтобы улучшить
    пропускную способность, уменьшите ее до
    От 5 до 10 для уменьшения задержки,
    еще ниже в системах с
    много памяти.
    dirty_background_ratio Аналогично, но это номер
    страниц памяти, на которых
    Нить для промывки фона ядра
    начнет записывать грязные данные,
    выражается в процентах от
    общее количество бесплатных и восстанавливаемых страниц.Установите это значение ниже dirty_ratio ,
    dirty_ratio /2 имеет смысл
    и это то, что ядро ​​делает по умолчанию.

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

    overcommit_memory Позволяет использовать плохо разработанные программы, которые
    malloc () огромное количество
    память «на всякий случай», но никогда по-настоящему
    используй это. Установите значение 0 (отключено), если
    вам это действительно нужно.
    vfs_cache_pressure Устанавливает «давление» или важность
    ядро помещается при утилизации
    память, используемая для кеширования каталога
    и объекты inode.
    По умолчанию 100 или относительное «справедливое»
    подходит для вычислительных серверов.
    Установите значение ниже 100 для файла
    сервера на которых кеш
    должно быть приоритетом.Установите выше, может быть, от 500 до 1000,
    для интерактивных систем.

    Дополнительная информация в

    Red Hat Enterprise Linux
    Руководство по настройке производительности.

    Также см

    /usr/src/linux/Documentation/sysctl/vm.txt .

    Измерение дискового ввода-вывода

    После того, как вы выбрали и создали файловые системы как
    обсуждается в
    следующая страница,
    у вас может быть выбор инструментов для тестирования ввода-вывода файловой системы.

    Бонни

    Бонни ++

    Тест IOzone

    SPEC SFS 2014

    А дальше …

    Следующим шагом будет выбор подходящего
    файловые системы
    и варианты их создания и использования.

    На страницу Linux / Unix


    Размер области просмотра:
    ×

    Протокол: HTTP / 1.1
    Крипто: TLSv1.2 / ECDHE-ECDSA-AES256-GCM-SHA384

    © автор
    Боб Кромвель
    Ноябрь 2020 г. Создано с
    vim
    а также
    ImageMagick,
    размещен на
    FreeBSD
    с участием
    Nginx.
    Как партнер Amazon, я зарабатываю на соответствующих покупках.

    Связаться |
    Политика конфиденциальности |
    Пароль root

    Использование начального RAM-диска (initrd) — Документация ядра Linux

    Написано в 1996,2000 Вернером Альмесбергером и
    Ханс Лермен

    initrd предоставляет возможность загрузки RAM-диска загрузчиком.
    Затем этот RAM-диск можно смонтировать как корневую файловую систему и программы.
    от него можно убежать.После этого можно смонтировать новую корневую файловую систему.
    с другого устройства. Затем предыдущий корень (из initrd) перемещается
    в каталог и впоследствии может быть размонтирован.

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

    Этот документ дает краткий обзор использования initrd. Более подробный
    обсуждение процесса загрузки можно найти в.

    Операция

    При использовании initrd система обычно загружается следующим образом:

    1. загрузчик загружает ядро ​​и начальный RAM-диск
    2. ядро ​​преобразует initrd в «нормальный» RAM-диск и
      освобождает память, используемую initrd
    3. , если корневое устройство не / dev / ram0 , старое (устарело)
      процедура change_root соблюдается. см. «Устаревшее изменение корня
      механизм »ниже.
    4. Установлено корневое устройство

    5. .если это / dev / ram0 , образ initrd
      затем смонтировал как root
    6. / sbin / init (это может быть любой допустимый исполняемый файл, включая
      сценарии оболочки; он запускается с uid 0 и может делать практически все
      init может сделать).
    7. init монтирует «настоящую» корневую файловую систему
    8. init помещает корневую файловую систему в корневой каталог, используя
      системный вызов pivot_root
    9. init исполняет / sbin / init в новой корневой файловой системе, выполняя
      обычная последовательность загрузки
    10. файловая система initrd удалена

    Обратите внимание, что изменение корневого каталога не требует его размонтирования.Следовательно, можно оставить процессы запущенными на initrd во время этого
    процедура. Также обратите внимание, что файловые системы, смонтированные под initrd, продолжают
    быть доступным.

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

    initrd добавляет следующие новые параметры:

     initrd = <путь> (например, LOADLIN)
    
      Загружает указанный файл как начальный RAM-диск. При использовании LILO вы
      необходимо указать файл образа RAM-диска в /etc/lilo.conf, используя
      Переменная конфигурации INITRD.
    
    noinitrd
    
      Данные initrd сохраняются, но не преобразуются в RAM-диск и
      монтируется "обычная" корневая файловая система.данные initrd можно прочитать
      из / dev / initrd. Обратите внимание, что данные в initrd могут иметь любую структуру
      в этом случае и не обязательно должен быть образом файловой системы.
      Эта опция используется в основном для отладки.
    
      Примечание: / dev / initrd доступен только для чтения и может использоваться только один раз. Как только
      поскольку последний процесс закрыл его, все данные будут освобождены и / dev / initrd
      больше не открывается.
    
    корень = / dev / ram0
    
      initrd монтируется как root, и выполняется обычная процедура загрузки,
      с RAM-диском, установленным как root.

    Сжатые изображения cpio

    В последних ядрах есть поддержка заполнения ramdisk из сжатого cpio
    архив. В таких системах создание образа виртуального диска не требуется.
    задействовать специальные блочные устройства или шлейфы; вы просто создаете каталог на
    диск с желаемым содержимым initrd, перейдите в этот каталог и запустите (как
    пример):

     находка. | cpio --quiet -H newc -o | gzip -9 -n> /boot/imagefile.img
     

    Так же просто изучить содержимое существующего файла изображения:

     mkdir / tmp / файл изображения
    cd / tmp / imagefile
    gzip -cd / boot / файл образа.img | cpio -imd --quiet
     

    Установка

    Во-первых, необходимо создать каталог для файловой системы initrd на
    «Обычная» корневая файловая система, например:

    Имя не актуально. Более подробную информацию можно найти на
    pivot_root (2) справочная страница.

    Если корневая файловая система создается во время процедуры загрузки (т.е. если
    вы создаете установочную дискету), создание корневой файловой системы
    процедура должна создать каталог / initrd .

    Если initrd не будет смонтирован в некоторых случаях, его содержимое все еще
    доступен, если было создано следующее устройство:

     # mknod / dev / initrd b 1250
    # chmod 400 / dev / initrd
     

    Во-вторых, ядро ​​должно быть скомпилировано с поддержкой RAM-диска и
    включена поддержка начального RAM-диска.Кроме того, по крайней мере, все компоненты
    необходимо для выполнения программ из initrd (например, исполняемый формат и файл
    system) должен быть скомпилирован в ядро.

    В-третьих, вам необходимо создать образ RAM-диска. Это делается путем создания
    файловую систему на блочном устройстве, копируя на нее файлы по мере необходимости, а затем
    копирование содержимого блочного устройства в файл initrd. С недавним
    ядра, для этого подходят как минимум три типа устройств:

    • дискета (работает везде, но очень медленно)
    • RAM-диск (быстрый, но выделяет физическую память)
    • устройство обратной петли (наиболее элегантное решение)

    Опишем метод устройства обратной петли:

    1. убедитесь, что блочные устройства обратной петли настроены в ядре

    2. создать пустую файловую систему подходящего размера, т.е.г .:

       # dd if = / dev / zero of = initrd bs = 300k count = 1
      # mke2fs -F -m0 initrd
       

      (если пространство критично, вы можете использовать Minix FS вместо Ext2)

    3. смонтировать файловую систему, например:

       # монтировать -t ext2 -o цикл initrd / mnt
       
    4. создать консольное устройство:

       # mkdir / mnt / dev
      # mknod / mnt / dev / console c 5 1
       
    5. скопируйте все файлы, необходимые для правильного использования initrd
      Окружающая среда.Не забудьте самый важный файл, / sbin / init

      Примечание

      / sbin / init разрешения должны включать «x» (выполнение).

    6. правильная работа среды initrd может часто проверяться
      даже без перезагрузки командой:

      Это, конечно, ограничено инициализацией, которая не мешает работе
      общее состояние системы (например, путем перенастройки сетевых интерфейсов,
      перезапись смонтированных устройств, попытка запустить уже запущенных демонов,
      и т.п.Однако обратите внимание, что обычно можно использовать pivot_root в
      такая chroot-окружение initrd.)

    7. размонтировать файловую систему:

    8. initrd теперь находится в файле «initrd». По желанию, теперь это может быть
      сжатый:

    Для экспериментов с initrd вы можете взять спасательную дискету и
    добавьте только символическую ссылку с / sbin / init на / bin / sh . В качестве альтернативы вы
    можете попробовать экспериментальную среду newlib, чтобы создать небольшой
    initrd.

    Наконец, вам нужно загрузить ядро ​​и загрузить initrd. Почти все Linux
    загрузчики поддерживают initrd. Поскольку процесс загрузки по-прежнему совместим
    со старым механизмом следующие параметры командной строки загрузки
    необходимо предоставить:

    (rw требуется только при записи в файловую систему initrd.)

    С помощью LOADLIN вы просто выполняете:

     LOADLIN <ядро> initrd = <образ_диска>
     

    например:

     ЗАГРУЗИТЬ C: \ LINUX \ BZIMAGE initrd = C: \ LINUX \ INITRD.GZ корень = / dev / ram0 rw
     

    С LILO вы добавляете опцию INITRD = в глобальный раздел
    или в раздел соответствующего ядра в /etc/lilo.conf и передать
    параметры с использованием APPEND, например:

     изображение = / bzImage
      initrd = /boot/initrd.gz
      append = "корень = / dev / ram0 rw"
     

    и запустите / sbin / lilo

    Для других загрузчиков см. Соответствующую документацию.

    Теперь вы можете загрузиться и наслаждаться использованием initrd.

    Изменение корневого устройства

    По окончании выполнения своих обязанностей init обычно меняет корневое устройство.
    и приступает к запуску системы Linux на «реальном» корневом устройстве.

    Процедура включает следующие шаги:
    • монтирование новой корневой файловой системы
    • превращая его в корневую файловую систему
    • удаление всех обращений к старой (initrd) корневой файловой системе
    • размонтирование файловой системы initrd и освобождение RAM-диска

    Установить новую корневую файловую систему просто: ее просто нужно смонтировать
    каталог под текущим корнем.Пример:

     # mkdir / новый корень
    # монтировать -o ro / dev / hda1 / новый-корень
     

    Корневое изменение выполняется системным вызовом pivot_root, который
    также доступен через утилиту pivot_root (см. pivot_root (8)
    страница руководства; pivot_root распространяется с util-linux версии 2.10h или выше
    ). pivot_root перемещает текущий корень в каталог под новым
    root и помещает новый корень на его место. Каталог для старого корня
    должен существовать до вызова pivot_root .Пример:

     # cd / новый корень
    # mkdir initrd
    # pivot_root. initrd
     

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

     # exec chroot. что следует  dev / console 2> & 1
     

    Далее следует программа под новым корнем, например / sbin / init
    Если новая корневая файловая система будет использоваться с udev и не имеет действительных
    / dev , udev необходимо инициализировать перед вызовом chroot по порядку
    чтобы предоставить / dev / console .

    Примечание: детали реализации pivot_root могут изменяться со временем. Для того, чтобы
    для обеспечения совместимости необходимо соблюдать следующие пункты:

    • перед вызовом pivot_root, текущий каталог вызывающего
      процесс должен указывать на новый корневой каталог
    • использовать. в качестве первого аргумента и _относительный_ путь к каталогу
      для старого корня в качестве второго аргумента
    • программа chroot должна быть доступна под старым и новым корнем
    • chroot к новому корню впоследствии
    • используйте относительные пути для dev / console в команде exec

    Теперь initrd может быть размонтирован, а память выделена RAM
    диск можно освободить:

     # umount / initrd
    # blockdev --flushbufs / dev / ram0
     

    Также возможно использовать initrd с корнем, смонтированным по NFS, см.
    pivot_root (8) справочная страница для подробностей.

    Сценарии использования

    Основной мотивацией для реализации initrd было обеспечение модульной
    конфигурация ядра при установке системы. Процедура будет работать
    следующим образом:

    1. система загружается с дискеты или другого носителя с минимальным ядром
      (например, поддержка RAM-дисков, initrd, a.out и Ext2 FS) и
      загружает initrd
    2. / sbin / init определяет, что необходимо для (1) монтирования «настоящей» корневой файловой системы.
      (т.е. тип устройства, драйверы устройств, файловая система) и (2)
      средства распространения (например,грамм. CD-ROM, сеть, лента,…). Это может быть
      выполняется путем запроса пользователя, автоматического зондирования или использования гибридного
      подход.
    3. / sbin / init загружает необходимые модули ядра
    4. / sbin / init создает и заполняет корневую файловую систему (это не
      еще должна быть очень удобная система)
    5. / sbin / init вызывает pivot_root для изменения корневой файловой системы и
      execs — через chroot — программа, продолжающая установку
    6. установлен загрузчик
    7. загрузчик настроен на загрузку initrd с набором
      модули, которые использовались для запуска системы (например,грамм. / initrd может быть
      модифицированный, затем размонтированный, и, наконец, образ записывается с
      / dev / ram0 или / dev / rd / 0 в файл)
    8. теперь система загрузочная и можно выполнить дополнительные задачи по установке.
      выполнено

    Ключевая роль initrd здесь заключается в повторном использовании данных конфигурации во время
    нормальная работа системы без необходимости использования раздутого «универсального»
    ядро или перекомпилировать или повторно связать ядро.

    Второй сценарий — для установок, в которых Linux работает в системах с
    различные конфигурации оборудования в одном административном домене.В
    в таких случаях желательно генерировать только небольшой набор ядер
    (в идеале только один) и сохранить системную часть конфигурации
    информация как можно меньше. В этом случае обычный initrd может быть
    генерируется со всеми необходимыми модулями. Тогда только / sbin / init или файл
    читать по нему должно быть иначе.

    Третий сценарий — более удобные диски восстановления, потому что информация
    например, расположение корневого раздела FS не обязательно указывать по адресу
    время загрузки, но система, загруженная из initrd, может вызывать удобный для пользователя
    диалог, а также может выполнять некоторые проверки работоспособности (или даже некоторую форму
    автоопределение).

    Наконец, что не менее важно, распространители CD-ROM могут использовать его для лучшей установки.
    с компакт-диска, например используя загрузочную дискету и загрузив RAM-диск большего размера
    через initrd с компакт-диска; или загрузившись через загрузчик, например LOADLIN , или напрямую
    с компакт-диска и загрузка RAM-диска с компакт-диска без необходимости
    дискеты.

    Устаревший механизм изменения корня

    До введения pivot_root использовался следующий механизм.
    Текущие ядра по-прежнему поддерживают его, но вы не должны _не_ полагаться на его
    постоянная доступность.

    Он работает путем установки «настоящего» корневого устройства (то есть того, которое установлено с помощью rdev
    в образе ядра или с root =… в командной строке загрузки) в качестве
    корневая файловая система при выходе из linuxrc. Файловая система initrd тогда
    размонтирован, или, если он все еще занят, перемещен в каталог / initrd , если
    такой каталог существует в новой корневой файловой системе.

    Для использования этого механизма необязательно указывать загрузочную
    параметры команды root, init или rw. (Если указано, они повлияют на
    настоящая корневая файловая система, а не среда initrd.)

    Если / proc смонтирован, «реальное» корневое устройство можно изменить изнутри.
    linuxrc, записав номер нового корневого устройства FS в специальный
    файл / proc / sys / kernel / real-root-dev, например:

     # эхо 0x301> / proc / sys / kernel / real-root-dev
     

    Обратите внимание, что механизм несовместим с NFS и подобными файлами.
    системы.

    Этот старый, устаревший механизм обычно называется change_root , а
    новый поддерживаемый механизм называется pivot_root .

    Смешанный механизм change_root и pivot_root

    Если вы не хотите использовать root = / dev / ram0 для запуска pivot_root
    механизм, вы можете создать как / linuxrc , так и / sbin / init в своем initrd
    образ.

    / linuxrc будет содержать только следующее:

     #! / bin / sh
    монтировать -n -t proc proc / proc
    эхо 0x0100> / proc / sys / kernel / real-root-dev
    umount -n / proc
     

    После выхода из linuxrc ядро ​​снова смонтирует ваш initrd как root,
    на этот раз выполняем / sbin / init .Опять же, этот init
    для создания правильной среды (возможно, используя корень = устройство , переданное на
    cmdline) перед окончательным выполнением реального / sbin / init .

    Доступ к Ext 2/3/4, HFS и ReiserFS из Windows | DiskInternals

    Linux Reader ™ — популярный и бесплатный программный продукт, который остается некоммерческим бесплатным программным обеспечением. Начиная с версии 4.0, в Linux Reader Pro ™ доступны дополнительные функции.

    С помощью Linux Reader Pro ™ вы можете читать файлы из еще большего числа файловых систем, получать удаленный доступ через соединение SSH, создавать виртуальные диски, экспортировать файлы через FTP и многое другое.

    Все важные функции Linux Reader ™ остаются бесплатными: без назойливой рекламы, без пробного режима, без ограничений.

    Важно знать

    И Linux Reader ™, и Linux Reader Pro ™ предоставляют безопасный доступ только для чтения к исходному диску. Более того, Linux Reader ™ и Linux Reader Pro ™ обходят политики безопасности файлов, поэтому вы можете получить доступ к любому файлу на диске Linux.

    Этот простой в использовании инструмент работает под Windows и позволяет просматривать файловые системы Ext2 / 3/4, HFS и ReiserFS.

    Системные требования для Linux Reader ™ и Linux Reader Pro ™: Windows 7, 8 или 10.

    Linux Reader ™ Технические характеристики

    Linux Reader ™ и Linux Reader Pro ™ предоставляют вам доступ к файлам в следующих файловых системах:

    • Внешний 2/3/4
    • ReiserFS, Reiser4
    • HFS, HFS + (считыватель)
    • FAT, exFAT
    • NTFS, ReFS
    • УФС2
    • RomFS (считыватель)
    • RAID 0, 1, 4, 5, 50, 10 и JBOD
    • APFS (режим чтения)
    • ZFS (только предварительная версия *)
    • XFS (только предварительная версия *)
    • Hikvision NAS и DVR (только предварительная версия *)

    * Для получения полного доступа к файлам требуется лицензия Linux Reader Pro ™.

    Linux Reader Pro ™ Технические характеристики

    В дополнение к упомянутым выше файловым системам Linux Reader Pro ™ обеспечивает полный доступ к этим дополнительным файловым системам:

    • ZFS
    • Зашифрованный APFS
    • XFS
    • NAS и DVR Hikvision
    • Зашифрованные диски BitLocker

    С помощью Linux Reader Pro ™ вы также можете получить удаленный доступ к файлам через SSH в Linux, FreeBSD, NetBSD, QNX, Mac OS и других Unix-подобных файловых системах.

    Великолепные возможности Linux Reader Pro ™ позволяют:

    Подключите любой диск или файлы к новой букве диска

    Linux Reader ™ и Linux Reader Pro ™ Essentials

    И Linux Reader ™, и Linux Reader Pro ™ имеют следующие функции:

    • Чтение файлов со всех типов жестких дисков, включая SSD, HDD, флэш-накопители, карты памяти и другие.
    • Доступ только для чтения к файлам на дисках Linux с сохранением исходных файлов.
    • Бесплатный предварительный просмотр содержимого файлов для обеспечения целостности.
    • Доступ к любым файлам в системе Linux в обход политик безопасности.
    • Создайте образ диска для дисков, к которым у вас есть доступ. В случае потери данных вы можете восстановить весь диск из этого образа. По мнению пользователей Linux Reader ™, это самая популярная функция и самый простой способ восстановить диск.

    На данный момент DiskInternals Linux Reader ™ является ведущим программным инструментом на рынке, обеспечивающим доступ из Windows к различным файловым системам Linux, таким как Ext2 / Ext3 / Ext4, HFS, ReiserFS и другим.

    Вы можете скачать бесплатную версию Linux Reader ™ прямо сейчас. Эта версия позволяет вам обновиться до Linux Reader Pro ™.

    Как читать файлы Linux в Windows

    Пошаговая инструкция:

    1. 1. Сначала вам необходимо загрузить и установить Linux Reader ™.

    Linux Reader — окно настройки

    1. 2. Затем запустите Linux Reader ™ и выберите диск, который хотите открыть.

    Linux Reader — выберите диск

    1. 3.Linux Reader ™ показывает все доступные файлы, включая изображения, видео, документы и другие файлы. Выберите любой файл для предварительного просмотра его содержимого, щелкнув правой кнопкой мыши и выбрав «Предварительный просмотр в новом окне». Предварительный просмотр абсолютно бесплатен и ни к чему не обязывает.

    Linux Reader — откройте диск для предварительного просмотра файлов

    Linux Reader — файлы предварительного просмотра

    1. 4. Вы можете сохранять файлы из Linux в Windows:

    Шаг 1 — как сохранить файлы Linux на компьютере с Windows

    Шаг 2 — как сохранить файлы Linux на компьютере с Windows

    Шаг 3 — как сохранить файлы Linux на компьютере с Windows

    Шаг 4 — файлы Linux, сохраненные на компьютере с Windows

    1. 5.Для удаленного доступа к файлам по протоколу SSH, для экспорта файлов из файловых систем, поддерживаемых только Linux Reader Pro ™, для отображения файлов в виде виртуального диска или для экспорта файлов на FTP-сервер, вам потребуется лицензия Linux Reader Pro ™, которая вы можете легко сделать покупку в Интернете. Лицензия также дает вам бесплатные обновления программного обеспечения Linux Reader Pro ™ в течение 12 месяцев и приоритет в технической поддержке.

    Загрузите полностью бесплатную версию Linux Reader ™ с возможностью обновления до Linux Reader Pro ™.

    Создание виртуальных дисков с помощью командной строки Linux

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

    ПРИМЕЧАНИЕ. В этом руководстве рассматривается только создание образов дисков фиксированного размера, разделы которых можно смонтировать с помощью Linux. Программы виртуальных машин, такие как VirtualBox, позволяют создавать динамически расширяющиеся виртуальные диски, размер которых увеличивается по мере необходимости.Если ваша цель — создавать диски для таких программ, как VirtualBox, вам необходимо использовать его инструменты.

    Требования к инструментам

    Вам потребуются следующие команды:

    • ‘dd’ для создания файла. Вы также можете использовать bximage (часть эмулятора ПК Bochs), если хотите.
    • «fdisk» для создания разделов или любой другой программы, которая вам нравится.
    • «mkfs» для форматирования разделов.
    • «losetup» для настройки кольцевых устройств для каждого раздела.

    Конечно, вы можете использовать любой удобный вам инструмент для достижения той же цели.

    Создание разделов образа и форматирования

    Создать образ просто с помощью «dd». Все, что это будет делать, — это записывать нули в файл указанного размера. Например, давайте создадим образ размером 1 ГБ: $ dd if = / dev / zero of = 1GB_HDD.img bs = 1M count = 1024 Это займет немного времени. При желании вы можете выбрать меньший или больший размер.

    После завершения необходимо создать раздел с помощью fdisk.Поскольку таблицы разделов нет, она будет создана. Это таблица разделов DOS. Давайте переключимся на таблицу GPT, введя «g» в подсказку, чтобы создать ее. Теперь создайте раздел, введя «n». Примите все значения по умолчанию. Созданный раздел будет в собственном формате Linux, который может быть ext2, ext3 или ext4. Затем запишите изменения в изображение, введя «w».

    fdisk linux tooling tool

    После того, как изменения записаны и fdisk закрывается, все, что требуется сделать, это отформатировать раздел, на котором выполняется «mkfs».ext4 ’в самом файле образа для создания раздела ext4. Он может спросить вас, хотите ли вы продолжить, если будет найден раздел GPT. Если да, скажите «да».

     $ mkfs.ext4 1GB_HDD.img 

    mkfs linux tool

    Если все прошло хорошо, вы можете приступить к настройке устройства петли для вашего образа. Это требует использования «losetup» (то есть настройки цикла). Команда, которую мы хотим запустить, назначит доступное устройство цикла (параметр -f для его поиска) разделу на образе и покажет имя указанного устройства цикла (параметр –show): $ sudo losetup -Pf –show 1GB_HDD .img

    В случае успеха вы сможете получить доступ к разделу либо с помощью «mount», либо через файловый менеджер.

    Образы с несколькими разделами

    Вот как вы создаете виртуальные диски с одним разделом. А как насчет изображений с двумя и более разделами? Необходимо выполнить несколько дополнительных шагов, но как только вы знаете, что делать, все должно быть довольно просто. Начните с создания образа размером 4 ГБ:

     $ dd if = / dev / zero of = 4GB_HDD.img bs = 1M count = 4096 

    Используйте fdisk для создания трех разделов Linux с таблицей разделов GPT.Размер своих разделов я выбрал случайным образом. Не стесняйтесь выбирать размер каждого раздела самостоятельно.

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

     $ sudo losetup -Pf --show 4GB_HDD.img 

    Как и раньше, мы хотели посмотреть, какое устройство петли было выбрано. Однако на этот раз параметр «-P» был полезен в этом случае, потому что он сообщает «losetup» сканировать образ на предмет любых разделов, для которых необходимо создать устройства петли. После создания интерфейсов петель взгляните на «lsblk», чтобы увидеть созданные устройства.

    После этого каждый раздел необходимо отформатировать перед использованием, поэтому запустите «mkfs» для их создания. Попробуйте запустить mkfs.ext2 на первом разделе, чтобы создать файловую систему ext2. Затем запустите «mkfs.ext4» на двух других, чтобы создать файловую систему ext4 в образе. После форматирования вы сможете смонтировать их через командную строку или файловый менеджер.

    Завершить разделы

    Если вы закончили с разделами, просто запустите «losetup», чтобы удалить нужное устройство петли.

    Заключение

    Создание виртуального диска с разделами в Linux — очень простой процесс.Если у вас возникнут проблемы, дайте мне знать в разделе комментариев под этой статьей. Я отвечу как можно скорее.

    Хостинг LinuxAndUbuntu спонсируется MassiveGRID

    Как сканировать новые FC LUNS и SCSI диски в Linux?

    2. Узнайте, сколько адаптеров главной шины сконфигурировано в Linux. Вы можете использовать «systool -fc_host -v» для проверки наличия FC в системе.

    В этом случае вам необходимо просканировать HBA host0 и host1.

    3.Если системной виртуальной памяти слишком мало, не продолжайте дальше.Если у вас достаточно свободной виртуальной памяти, вы можете выполнить следующую команду для сканирования новых LUNS.

     # echo "1"> / sys / class / fc_host / host0 / issue_lip
    # echo "- - -"> / sys / class / scsi_host / host0 / scan
    # echo "1"> / sys / class / fc_host / host1 / issue_lip
    # echo "- - -"> / sys / class / scsi_host / host1 / scan 
     

    Примечание: Вам необходимо отслеживать «issue_lip» в / var / log / messages, чтобы определить, когда сканирование завершится. Эта операция является асинхронной.Диск ‘| egrep -v’ dm- ‘ Диск / dev / sda: 21,5 ГБ, 21474836480 байт

    2. Узнайте, сколько контроллеров SCSI сконфигурировано.

     [корень @ mylinz1 ~] # ls / sys / class / scsi_host / host
    хост0 хост1 хост2 

    В этом случае вам нужно просканировать host0, host1 и host2.

    3. Просканируйте диски SCSI, используя команду ниже.

     [root @ mylinz1 ~] # echo "- - -"> / sys / class / scsi_host / host0 / scan
    [root @ mylinz1 ~] # echo "- - -"> / sys / class / scsi_host / host1 / scan
    [root @ mylinz1 ~] # echo "- - -"> / sys / class / scsi_host / host2 / scan
    
     

    4.Диск ‘| egrep -v’ dm- ‘
    Диск / dev / sda: 21,5 ГБ, 21474836480 байт
    Диск / dev / sdb: 1073 МБ, 1073741824 байта
    Диск / dev / sdc: 1073 МБ, 1073741824 байта

    Начиная с Redhat Linux 5.4, Red Hat представила сценарий «/usr/bin/rescan-scsi-bus.sh» для сканирования всей шины SCSI и обновления уровня SCSI для отображения новых устройств.

    Но в большинстве случаев сценарий не может сканировать новые диски, и вам нужно использовать команду echo.

    Pro Совет . Загружайте и получайте доступ к вашим любимым приложениям Windows удаленно из любого места, используя вашу систему Linux с виртуальными ПК с помощью CloudDesktopOnline.Чтобы узнать о других более инновационных облачных продуктах, посетите сайт www.Apps4Rent.com.

    Не забудьте ознакомиться с Руководством по Redhat Enterprise Linux 7.

    Вот пошаговое руководство по сканированию FC LUNS в Solaris.

    Спасибо, что прочитали эту статью.

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *