Работа с дисками в 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.
- Инициализация дисков:
pvcreate /dev/sd{b,c}
- Создаем LVM группу:
vgcreate mirror1 /dev/sd{b,c}
- Создадим зеркальный LVM том:
lvcreate -L 5g -m1 -n lvMirr1 VGmirror1
Инструменты LVM очень удобны для работы, с помощью них можно легко управлять томами, нарезать их на нужные вам размеры и с легкостью использовать под свои нужды. В данной статье я постарался затронуть все основные моменты в работе с LVM.
Работа с дисками в Linux Ubuntu/Mint
Если на одном экземпляре nginx работает много сайтов, то в один прекрасный момент после добавления очередного сайта при перезапуске nginx …
DNS ( Domain Name System — система доменных имён) — компьютерная распределённая система преобразование символьного имени в IP-адрес и наоборот. …
В PostgreSQL каждая таблица, кроме колонок указанных пользователем при ее создании, имеет несколько системных колонок, которые неявно создаются СУБД при …
Файловая система CIFS, встроенная в ядро Linux обычно предпочтительный метод для монтирования расшаренных сетевых ресурсов SMB/CIFS. CIFS VFS является виртуальной …
Программа mysqlcheck используется для проверки целостности (-c, -m, -C), восстановления (-r), анализа (-a) или оптимизации (-o) таблиц базы данных MySQL. …
GRUB (GRand Unified Bootloader1) — программа-загрузчик операционных систем. GRUB является эталонной реализацией загрузчика, соответствующего спецификации Multiboot и может загрузить любую …
Enigmail – дополнение к Thunderbird. С его помощью можно интегрировать возможности шифрования GnuPG в Thunderbird. Чтобы использовать Enigmail, надо установить …
Иногда в Ubuntu начиная с версии 14.04 в grub меню загрузки отсутствует memtest86+. Обычно это не замечают, пока не понадобится …
Переключение кодировок Чтобы иметь возможность переключения кодировок, необходимо собрать Midnight Commander с параметром —enable-charset. Переключение кодировок работает в файловых панелях, …
Установка Groupoffice версии 5.0.29 достаточно простая и проверена на Ubuntu server 64 13. 10 Добавляем в файл /etc/apt/sources.list следующую строчку: deb …
Первые устройства для счёта В настоящее время вычислительная техника уже настолько вошла в нашу повседневную жизнь, что уже трудно поверить, …
При сохранении статей и их черновиков в WordPress по умолчанию автоматически создаются новые версии или редакции (revisions) этих записей. При …
В Ubuntu изначально архиватор zip не установлен. Устанавливается из репозитория: sudo apt-get install zip Основные, наиболее часто используемые команды: Создание …
Для настройки автоматической очистки кэша в WordPress необходимо установить и активировать плагин Nginx Helper на сайте WordPress. Затем перейдите к …
Для работы с сервисами в 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 имеет смысли это то, что ядро делает по умолчанию. Эта страница |
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 система обычно загружается следующим образом:
- загрузчик загружает ядро и начальный RAM-диск
- ядро преобразует initrd в «нормальный» RAM-диск и
освобождает память, используемую initrd- , если корневое устройство не
/ dev / ram0
, старое (устарело)
процедура change_root соблюдается. см. «Устаревшее изменение корня
механизм »ниже.Установлено корневое устройство
- .если это
/ dev / ram0
, образ initrd
затем смонтировал как root- / sbin / init (это может быть любой допустимый исполняемый файл, включая
сценарии оболочки; он запускается с uid 0 и может делать практически все
init может сделать).- init монтирует «настоящую» корневую файловую систему
- init помещает корневую файловую систему в корневой каталог, используя
системный вызов pivot_root- init исполняет
/ sbin / init
в новой корневой файловой системе, выполняя
обычная последовательность загрузки- файловая система 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-диск (быстрый, но выделяет физическую память)
- устройство обратной петли (наиболее элегантное решение)
Опишем метод устройства обратной петли:
убедитесь, что блочные устройства обратной петли настроены в ядре
создать пустую файловую систему подходящего размера, т.е.г .:
# dd if = / dev / zero of = initrd bs = 300k count = 1 # mke2fs -F -m0 initrd(если пространство критично, вы можете использовать Minix FS вместо Ext2)
смонтировать файловую систему, например:
# монтировать -t ext2 -o цикл initrd / mntсоздать консольное устройство:
# mkdir / mnt / dev # mknod / mnt / dev / console c 5 1скопируйте все файлы, необходимые для правильного использования initrd
Окружающая среда.Не забудьте самый важный файл,/ sbin / init
Примечание
/ sbin / init
разрешения должны включать «x» (выполнение).правильная работа среды initrd может часто проверяться
даже без перезагрузки командой:Это, конечно, ограничено инициализацией, которая не мешает работе
общее состояние системы (например, путем перенастройки сетевых интерфейсов,
перезапись смонтированных устройств, попытка запустить уже запущенных демонов,
и т.п.Однако обратите внимание, что обычно можно использовать pivot_root в
такая chroot-окружение initrd.)размонтировать файловую систему:
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 было обеспечение модульной
конфигурация ядра при установке системы. Процедура будет работать
следующим образом:
- система загружается с дискеты или другого носителя с минимальным ядром
(например, поддержка RAM-дисков, initrd, a.out и Ext2 FS) и
загружает initrd/ sbin / init
определяет, что необходимо для (1) монтирования «настоящей» корневой файловой системы.
(т.е. тип устройства, драйверы устройств, файловая система) и (2)
средства распространения (например,грамм. CD-ROM, сеть, лента,…). Это может быть
выполняется путем запроса пользователя, автоматического зондирования или использования гибридного
подход./ sbin / init
загружает необходимые модули ядра/ sbin / init
создает и заполняет корневую файловую систему (это не
еще должна быть очень удобная система)/ sbin / init
вызываетpivot_root
для изменения корневой файловой системы и
execs — через chroot — программа, продолжающая установку- установлен загрузчик
- загрузчик настроен на загрузку initrd с набором
модули, которые использовались для запуска системы (например,грамм./ initrd
может быть
модифицированный, затем размонтированный, и, наконец, образ записывается с
/ dev / ram0
или/ dev / rd / 0
в файл)- теперь система загрузочная и можно выполнить дополнительные задачи по установке.
выполнено
Ключевая роль 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. Сначала вам необходимо загрузить и установить Linux Reader ™.
Linux Reader — окно настройки
- 2. Затем запустите Linux Reader ™ и выберите диск, который хотите открыть.
Linux Reader — выберите диск
- 3.Linux Reader ™ показывает все доступные файлы, включая изображения, видео, документы и другие файлы. Выберите любой файл для предварительного просмотра его содержимого, щелкнув правой кнопкой мыши и выбрав «Предварительный просмотр в новом окне». Предварительный просмотр абсолютно бесплатен и ни к чему не обязывает.
Linux Reader — откройте диск для предварительного просмотра файлов
Linux Reader — файлы предварительного просмотра
- 4. Вы можете сохранять файлы из Linux в Windows:
Шаг 1 — как сохранить файлы Linux на компьютере с Windows
Шаг 2 — как сохранить файлы Linux на компьютере с Windows
Шаг 3 — как сохранить файлы Linux на компьютере с Windows
Шаг 4 — файлы Linux, сохраненные на компьютере с Windows
- 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.
Спасибо, что прочитали эту статью.
.