diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 20:33:26 +0300 |
| commit | e5abc1fe99340b979b18864d978179f71fe8f5c5 (patch) | |
| tree | 98fd0ad7c6d0744894d6e74e446daacd9e6dd1b5 /LINUX/DISK | |
First
Diffstat (limited to 'LINUX/DISK')
| -rw-r--r-- | LINUX/DISK/DF, DU.md | 101 | ||||
| -rw-r--r-- | LINUX/DISK/FDISK.md | 217 | ||||
| -rw-r--r-- | LINUX/DISK/FSTAB.md | 100 | ||||
| -rw-r--r-- | LINUX/DISK/GPT-диск в Linux.md | 68 | ||||
| -rw-r--r-- | LINUX/DISK/GeeseFS ( Yandex Cloud диск ).md | 73 | ||||
| -rw-r--r-- | LINUX/DISK/HDPARM скорость диска.md | 133 | ||||
| -rw-r--r-- | LINUX/DISK/MDADM организация RAID.md | 535 | ||||
| -rw-r--r-- | LINUX/DISK/NTFS.md | 57 | ||||
| -rw-r--r-- | LINUX/DISK/SMARTMONTOOLS.md | 85 | ||||
| -rw-r--r-- | LINUX/DISK/SOFT RAID1 (mdadm) горячая замена диска.md | 26 | ||||
| -rw-r--r-- | LINUX/DISK/WD - автопарковка.md | 51 | ||||
| -rw-r--r-- | LINUX/DISK/Автоматическое монтирование USB накопителя в заданную папку.md | 34 | ||||
| -rw-r--r-- | LINUX/DISK/Программный raid в Linux.md | 169 |
13 files changed, 1649 insertions, 0 deletions
diff --git a/LINUX/DISK/DF, DU.md b/LINUX/DISK/DF, DU.md new file mode 100644 index 0000000..a06b473 --- /dev/null +++ b/LINUX/DISK/DF, DU.md @@ -0,0 +1,101 @@ +мгновенно создать пустой файл, не используя touch: +`>text.txt + +================================ + +команда `du` дает вам возможность исключить файлы определенного типа при расчете размера каталога + +`du -h --exclude="*.txt" tutorials + +================================ + +`df -help` +`df -h` - размер и информация о дисках +`df -i` - inode + +. du -help` +`du -h` - размер директории +`du -d1 / | sort -nr - с сортировкой по весу папки + +$ **du** **опции** **/путь/к/папке** + +А вот опции утилиты: + +_**-a, --all**_ - выводить размер для всех файлов, а не только для директорий, по умолчанию размер выводится только для папок; +_**-B, --block-size**_ - указать единицы вывода размера, доступно: K,M,G,T,P,E,Z,Y для 1024 и KB, MB и так далее для 1000; +_**-c, --total**_ - выводить в конце общий размер всех папок; +_**-d, --max-depth**_ - максимальная глубина вложенности директорий; +_**-h, --human-readable**_ - выводить размер в единицах измерения удобных для человека; +_**--inodes**_ - выводить информацию об использованию inode; +_**-L, --dereference**_ - следовать по всем символическим ссылкам; +_**-l, --count-links**_ - учитывать размер файла несколько раз для жестких ссылок; +_**-P, --no-dereference**_ - не следовать по символическим ссылкам, это поведение используется по умолчанию; +_**-S, --separate-dirs**_ - не включать размер подпапок в размер папки; +_**--si**_ - выводить размер файлов и папок в системе си, используется 1000 вместо 1024; +_**-s, --summarize**_ - выводить только общий размер; +_**-t, --threshold**_ - не учитывать файлы и папки с размером меньше указанного; +_**--time**_ - отображать время последней модификации для файла или папки, вместо времени модификации можно выводить такие метки: atime, access, use, ctime; +_**-X, --exclude**_ - исключить файлы из подсчёта; +_**-x, --one-file-system**_ - пропускать примонтированные файловые системы; +_**--version**_ - вывести версию утилиты. + +Здесь перечислены не все опции. Если вам надо больше, смотрите в: + +_**man du**_ + +## Bash скрипт мониторинга свободного места в Linux + +Рассмотрим простой bash скрипт, для мониторинга дискового пространства на сервере и отправке email уведомления администратору, если места недостаточно. + +```sh +#!/bin/bash +CURRENT=$(df /dev/sdd5 | grep / | awk '{ print $5}' | sed 's/%//g) +THRESHOLD=90 +if [ "$CURRENT" -gt "$THRESHOLD" ] ; then +echo "Осталось слишком мало дискового пространства. Используется: $CURRENT%" | mail -s 'Заканчивается дисковое пространство !' -r home@server.ru vlapa@yandex.ru +fi +``` + +При достижении заполняемости директории / до 90% к вам на почту будет отправляться уведомление. Добавьте данный скрипт в [cron](https://winitpro.ru/index.php/2020/04/21/planirovshhik-zadach-cron-v-linux/) и мониторьте вашу систему. Можно изменить скрипт, чтобы он смотрел за размером определенного раздела или каталога. + +=========================== +**du** — позволяет быстро и эффективно проанализировать использование дискового пространства, найти самые «тяжёлые» файлы и папки, чтобы освободить место. + +🟠 **Показать размер папки:** +`du -sh /path/to/folder +➡️ Выводит общий размер папки в удобном формате (МБ/ГБ). + +🟠 **Посмотреть размеры всех вложенных папок:** +`du -h /path/to/folder +➡️ Отлично подходит для поиска «тяжёлых» файлов. + +🟠 **Сортировка по размеру:** +`du -h /path/to/folder | sort -h +➡️ Самые большие файлы окажутся внизу списка. + +=========================== +**Быстрое удаление больших файлов в Linux** + +Когда на диске заканчивается место, полезно быстро находить и удалять самые "тяжелые" файлы. В Linux это можно сделать несколькими способами. + +**🟢 Найти файлы больше 1ГБ:** +find / -type f -size +1G 2>/dev/null +Отобразит файлы больше 1ГБ во всей системе. + +**🟢 Найти и удалить файлы больше 500МБ в указанной папке:** +find /var/log -type f -size +500M -delete +Удаляет файлы в /var/log, превышающие 500МБ. + +**🟢 Найти самые "тяжелые" каталоги:** +du -ah / | sort -rh | head -10 +Выведет 10 самых больших файлов и папок. + +🗣 **Полезно для очистки места на сервере, анализа логов и удаления ненужных файлов.** + +=========================== + +=========================== + +=========================== + +=========================== diff --git a/LINUX/DISK/FDISK.md b/LINUX/DISK/FDISK.md new file mode 100644 index 0000000..f034e53 --- /dev/null +++ b/LINUX/DISK/FDISK.md @@ -0,0 +1,217 @@ +## Разбить диск на разделы с помощью команды fdisk + +Выполните следующие действия, чтобы разбить диск в Linux с помощью команды `fdisk`. +#### Шаг 1. Список существующих разделов + +Выполните следующую команду, чтобы вывести список всех существующих разделов: +`sudo fdisk -l +Вывод содержит информацию о дисках и разделах хранилища: + +[](https://wiki.merionet.ru/images/kak-sozdavat-razdely-diska-v-linux/9.png) +#### Шаг 2: Выберите диск для хранения + +Выберите диск для хранения, на котором вы хотите создать разделы, выполнив следующую команду: +`sudo fdisk /dev/sdb + +Диск `/dev/sdbstorage` открыт: + +[](https://wiki.merionet.ru/images/kak-sozdavat-razdely-diska-v-linux/10.png) +Будет предложено ввести `m` для справки, вводим и смотрим какие есть возможности по работе с диском +Help: + + **GPT** + M enter protective/hybrid MBR + + **Generic** + d delete a partition + F list free unpartitioned space + l list known partition types + n add a new partition + p print the partition table + t change a partition type + v verify the partition table + i print information about a partition + + **Misc** + m print this menu + x extra functionality (experts only) + + **Script** + I load disk layout from sfdisk script file + O dump disk layout to sfdisk script file + + **Save & Exit** + w write table to disk and exit + q quit without saving changes + + **Create a new label** + g create a new empty GPT partition table + G create a new empty SGI (IRIX) partition table + o create a new empty MBR (DOS) partition table + s create a new empty Sun partition table + +#### Шаг 3: Создайте новый раздел + +1. Запустите команду `n`, чтобы создать новый раздел. +2. Выберите номер раздела, набрав номер по умолчанию (2). +3. После этого вас попросят указать начальный и конечный сектор вашего жесткого диска. Лучше всего ввести в этом разделе номер по умолчанию (3622912). +4. Последний запрос связан с размером раздела. Вы можете выбрать несколько секторов или установить размер в мегабайтах или гигабайтах. Введите `+ 2 GB`, чтобы установить размер раздела 2 ГБ. + +Появится сообщение, подтверждающее создание раздела. + +[](https://wiki.merionet.ru/images/kak-sozdavat-razdely-diska-v-linux/11.png) +#### Шаг 4: запись на диск + +Система создала раздел, но изменения не записываются на диск. +1. Чтобы записать изменения на диск, выполните команду `w`: + +[](https://wiki.merionet.ru/images/kak-sozdavat-razdely-diska-v-linux/12.png) +2. Убедитесь, что раздел создан, выполнив следующую команду: +`sudo fdisk -l +Как видите, раздел `/dev/sdb2` создан. + +### Отформатируйте раздел + +После создания раздела с помощью команды `parted` или `fdisk` отформатируйте его перед использованием. +Отформатируйте раздел, выполнив следующую команду: +`sudo mkfs -t ext4 /dev/sdb1 + +[](https://wiki.merionet.ru/images/kak-sozdavat-razdely-diska-v-linux/14.png) +#### Смонтировать раздел + +Чтобы начать взаимодействие с диском, создайте точку монтирования (mount point) и смонтируйте к ней раздел. + +1. Создайте точку монтирования, выполнив следующую команду: +`sudo mkdir -p /mt/sdb1 +2. После этого смонтируйте раздел, введя: +`sudo mount -t auto /dev/sbd1 /mt/sdb1 + +Терминал не распечатывает вывод, если команды выполнены успешно. +3. Убедитесь, что раздел смонтирован, с помощью команды `df hT`: +[](https://wiki.merionet.ru/images/kak-sozdavat-razdely-diska-v-linux/15.png) +========================================== +`lsblk` - диски со структурой + +`cat /proc/mdstat` - информация о RAID массивах в системе + +`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` + +`fdisk -u -l /dev/sd?` +`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)` + + +`$ mount опции -t файловая_система -o опции_монтирования файл_устройства папка_назначения` + +Опции задают различные дополнительные особенности работы утилиты. Опция -t необязательна, но она позволяет задать файловую систему, которая будет использована и иногда это очень полезно. С помощью опции -o вы можете задать различные параметры монтирования, например, монтировать только для чтения и т д. Последних два параметра - это файл устройства, например, /dev/sda1 и папка назначения, например, /mnt. + +Перед тем как перейти к рассмотрению примеров работы утилитой, давайте рассмотрим ее основные опции: + +- **-V** - вывести версию утилиты; +- **-h** - вывести справку; +- **-v** - подробный режим; +- **-a, --all** - примонтировать все устройства, описанные в fstab; +- **-F, --fork** - создавать отдельный экземпляр mount для каждого отдельного раздела; +- **-f, --fake** - не выполнять никаких действий, а только посмотреть что собирается делать утилита; +- **-n, --no-mtab** - не записывать данные о монтировании в /etc/mtab; +- **-l, --show-labels** - добавить метку диска к точке монтирования; +- **-c** - использовать только абсолютные пути; +- **-r, --read-only** - монтировать раздел только для чтения; +- **-w, --rw** - монтировать для чтения и записи; +- **-L, --label** - монтировать раздел по метке; +- **-U, --uuid** - монтировать раздел по UUID; +- **-T, --fstab** - использовать альтернативный fstab; +- **-B, --bind** - монтировать локальную папку; +- **-R, --rbind** - перемонтировать локальную папку. + +`sudo umount /home/vlapa/2Tb_ext` + +`lsof -w /mnt` + +`sudo umount -l /mnt` +-жесткое размонтирование + + +`lsblk ( -f )` + + +****N********AME**** ****-**** имя устройства +****M********AJ********:M********IN**** ****-**** Гланый и Минимальные Номера устройств +****RM**** - Является ли устройство съемным (1) или не (0) +****S********IZE**** - Объем устройства +****RO -**** устройство, только для чтения (1) или не (0) +****TYPE**** - типа устройства, т.е., если это - диск или разделы и т.д. +****M********OUNT POINT**** - точка монтирования устройства (если применимо). + +`sudo fdisk -l` +`sudo parted -l` + + +`sudo mkdir /mnt/name_folder` +`sudo mount /dev/имя_раздела /точка/монтирования` +`sudo chmod 0777 /mnt/name_folder` +`sudo umount /dev/имя_раздела` +`sudo umount /точка_монтирования` + +`sudo nano /etc/fstab` + +`/etc/fstab` +: static file system information. + + +Use =='blkid'== to print the universally unique identifier for a +device; this may be used with UUID= as a more robust way to name devices that works even if disks are added and removed. See fstab(5). + +<file system> <mount point> <type> <options> <dump> <pass> + + +/dev/disk/by-uuid/c1ca47b1-6f02-4cbb-a917-0bf76c7beae6 none swap sw 0 0 +# / was on /dev/sda3 during curtin installation +/dev/disk/by-uuid/2b69c1d7-9e7a-48bb-91f5-28cce8b4a0e2 / ext4 defaults 0 1 +# /home was on /dev/sda4 during curtin installation +/dev/disk/by-uuid/0c68c1b7-3621-454b-8a4a-02a5c3ce5e92 /home ext4 defaults 0 1 +# /home/1Tb +/dev/disk/by-uuid/1c513d3e-3aa1-4f67-b815-e62369251830 /home/vlapa/1Tb ext4 defaults 0 1 +# /home/2Tb-a +/dev/disk/by-uuid/caa5ad3b-4f1c-45ae-9cd9-d8011ad024e5 /home/vlapa/2Tb-a ext4 defaults 0 1 +# /home/2Tb-b +/dev/disk/by-uuid/e800aa0b-5217-42ad-bac0-5a3f07a748bf /home/vlapa/2Tb-b ext4 defaults 0 1 diff --git a/LINUX/DISK/FSTAB.md b/LINUX/DISK/FSTAB.md new file mode 100644 index 0000000..3d4d30f --- /dev/null +++ b/LINUX/DISK/FSTAB.md @@ -0,0 +1,100 @@ +```sh +# При загрузке Linux на определенном этапе выполняется чтение файла /etc/fstab, в котором описаны правила монтирования разделов. Рассмотрим синтаксис его заполнения. + +# Каждый раздел, который должен быть смонтирован записывается с новой строки: + +# <device> <dir> <type> <options> <dump> <fsck> + +# device — накопитель, который мы монтируем. Это может быть путь до устройства или его идентификатор. +# dir — каталог, в который выполняем монтирование **device**. +# type — файловая система. +# options — опции монтирования, например, владелец каталога или параметры аутентификации. +# dump — указываем, нужно ли создать резервную копию с помощью утилиты dump. +# fsck — нужно ли проверять файловую систему при помощи fsck. Стоит очень аккуратно относится к данному параметру, так как не со всеми файловыми системами утилита fsck корректно работает. Если нет уверенности, ставим 0. Доступны значения: + # 0 — не выполнять проверку. + # 1 — проверять с высоким приоритетом. Рекомендовано только для корневого раздела. + # 2 — проверять с низким приоритетом. + +# Пример файла fstab: + +# <file system> <mount point> <type> <options> <dump> <pass> +/dev/pve/root / ext4 errors=remount-ro 0 1 +/dev/pve/swap none swap sw 0 0 + +# в данном примере будут смонтированы 2 раздела: + +# /dev/pve/root — в корневой раздел с файловой системой ext4. +# /dev/pve/swap — файл подкачки. + +``` +## Монтирование по имени диска +```sh +vi /etc/fstab + +# добавляем в него следующую строчку: + +/dev/sda1 /db xfs defaults 0 0 + +# Где: +# /dev/sda1 — диск, который мы монтируем; +# /db — каталог, в который монтируем диск; +# xfs — файловая система; defaults — стандартные опции; +# 0 0 — первый отключает создание резервных копий при помощи утилиты dump, второй отключает проверку диска. + +# создаем каталог, в который монтируем диск (в данном примере, /db): +mkdir /db + +# И монтируем вручную диск, чтобы проверить правильность настроек fstab: +mount /db + +# Должен появиться новый диск. Это можно проверить следующей командой +mount +``` + +## Монтирование по идентификатору +```sh +# Данный способ не сильно отличается от монтирования по имени диска — вместо имени мы указываем идентификатор. Такой подход считается более надежным, так как при переподключении дисков к другим портам материнской платы может поменяться приоритет и, как следствие, имя устройства — это может привести к проблемам монтирования. UUID диска не меняется и поэтому, данная проблема при таком монтировании не страшна. +blkid + +# Мы получим ответ на подобие: +/dev/sdb: UUID="3e53fc7e-a417-4fa5-b034-b227bea2474c" BLOCK_SIZE="4096" TYPE="ext4" +/dev/sda1: UUID="358f032e-3efb-42ab-b3ba-05ddc82fedfd" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="0beca126-01" + +# допустим, диск который мы хотим примонтировать — sda1. Его идентификатор: 358f032e-3efb-42ab-b3ba-05ddc82fedfd + +vim /etc/fstab +# добавляем в него следующую строчку: +UUID=358f032e-3efb-42ab-b3ba-05ddc82fedfd /db xfs defaults 0 0 + +# Монтирование можно проверить командой: +mount -a + +# Пример монтирования сетевого диска + +192.168.0.1/network /mnt cifs user,rw,noauto,credentials=/root/.smbclient 0 0 + +# выполняется монтировние общей папки *network* на сервере с IP-адресом 192.168.0.1 в каталог /mnt. В качестве сетевой файловой системы используется *cifs (протокол SMB: сервер samba или общая папка Windows). Параметры для подключения: +# user - позволяет выполнить монтирование любому пользователю +# rw - с правом на чтение и запись +# noauto - не монтировать автоматически при старте системы +# credentials - файл, в котором написаны логин и пароль для подключения к общей папке + +# Теперь создадим файл аутентификации (credentials): +vim /root/.smbclient + +# и приведем его к следующему виду: +username=backup +password=backup + +# username - имя пользоватля +# password - пароль (Само собой, в вашем случае )указываются свои данные) + +# Теперь вводим следующую команду: +mount /mnt + +# Должна примонтироваться сетевая папка //192.168.0.1/network +# Это можно проверить следующей командой: + +mount +``` + diff --git a/LINUX/DISK/GPT-диск в Linux.md b/LINUX/DISK/GPT-диск в Linux.md new file mode 100644 index 0000000..8c313f4 --- /dev/null +++ b/LINUX/DISK/GPT-диск в Linux.md @@ -0,0 +1,68 @@ + (носитель более 2 ТБ) + +  Обновлено: 24.05.2024  Опубликовано: 17.01.2017 + +C [GPT](https://www.dmosk.ru/terminus.php?object=gpt) в системах [Linux](https://www.dmosk.ru/terminus.php?object=linux) работает [утилита](https://www.dmosk.ru/terminus.php?object=utility) **parted**. + +Чтобы узнать, какой именно тип диска (GPT или [MBR](https://www.dmosk.ru/terminus.php?object=mbr)) настроен вводим команду: + +fdisk /dev/sdb -l + +_* где sdb — наш [жесткий диск](https://www.dmosk.ru/terminus.php?object=hdd)._ + +Либо будет выведено предупреждение **WARNING: GPT (GUID Partition Table) detected**, значит используется GPT, либо мы увидим: + +Тип метки диска: gpt + +Также, для определения диска можно использовать **gdisk**: + +gdisk /dev/sdb + +Мы должны увидеть строку на подобие: + +Found valid GPT with protective MBR; using GPT. + +## Создаем GPT + +Открываем наш диск утилитой parted: + +parted /dev/sdb + +Откроется интерактивное меню утилиты — нажимаем **p:** + +(parted) p + +На экран будет выведена информация о разделах. Если они есть, удаляем командой **rm:** + +(parted) rm 1 + +_* где **1** — номер раздела. Команду нужно повторить для всех разделов. Их список мы смотрели на предыдущем шаге командой **p**. +* если на разделе есть важная информация, ее нужно скопировать на другой носитель._ + +Создаем разметку GPT: + +(parted) mklabel gpt + +И создаем новый раздел: + +(parted) mkpart primary 0 0 + +_* где **primary** указывает, что раздел является основным; **0** и **0** — использовать весь диск для создания раздела, но можно использовать часть диска, например, 0 2048GB._ + +Выходим из parted: + +(parted) q + +И форматируем диск: + +mkfs.ext4 /dev/sdb + +_* где в качестве файловой системы выбрана **ext4**._ + +Для проверки, монтируем отформатированный диск в директорию **/mnt**: + +mount /dev/sdb /mnt + +И выводим список дисков: + +df -h
\ No newline at end of file diff --git a/LINUX/DISK/GeeseFS ( Yandex Cloud диск ).md b/LINUX/DISK/GeeseFS ( Yandex Cloud диск ).md new file mode 100644 index 0000000..1539cc5 --- /dev/null +++ b/LINUX/DISK/GeeseFS ( Yandex Cloud диск ).md @@ -0,0 +1,73 @@ +### Установка компонентов + +Сначала устанавливаем утилиты fuse и wget. В зависимости + +а) Для Deb (Debian / Ubuntu): + +apt update + +apt install fuse wget + +б) Для RPM (Rocky / CentOS): + +yum install fuse fuse3 wget + +Скачиваем geesefs и сохраняем ее в /usr/bin/geesefs: + +wget https://github.com/yandex-cloud/geesefs/releases/latest/download/geesefs-linux-amd64 -O /usr/bin/geesefs + +Выставляем разрешение утилиты geesefs на запуск: + +chmod a+x /usr/bin/geesefs + +Проверяем работу утилиты, посмотрев ее версию: + +geesefs -v + +Мы должны увидеть что-то на подобие: + +geesefs version 0.36.2 + +### Авторизация + +Yandex Cloud для монтирования диска требует прохождение аутентификации с помощью токена. Его мы получаем в личном кабинете хостера. + +Для настройки доступа создаем каталог **.aws** в домашней директории пользователя, под которым будем монтировать диск. В моем случае, пользователь root: + +mkdir /root/.aws + +После создаем файл с токеном: + +vi /root/.aws/credentials + +[default] +aws_access_key_id = H.....D +aws_secret_access_key = H......7 + +### Ручное монтирование + +Для монтирования используем команду geesefs: + +geesefs <имя бакета> <точка монтирования> + +Например: + +geesefs testbacket /mnt + +### Автоматическое монтирование + +Чтобы раздел автоматически монтировался при перезапуске компьютера, открываем на редактирование файл fstab: + +vi /etc/fstab + +Добавляем строку: + +<имя бакета> <точка монтирования> fuse.geesefs _netdev,allow_other,--file-mode=0666,--dir-mode=0777 0 0 + +> Если мы хотим, чтобы точке монтирования назвачался определенный владелец и группы, указываем опции **uid** и **gid**: +> +> <имя бакета> <точка монтирования> fuse.geesefs _netdev,allow_other,--file-mode=0666,--dir-mode=0777,--uid=1024,--gid=1024 0 0 + +Чтобы применить настройку и проверить ее, вводим: + +mount -a
\ No newline at end of file diff --git a/LINUX/DISK/HDPARM скорость диска.md b/LINUX/DISK/HDPARM скорость диска.md new file mode 100644 index 0000000..866f5be --- /dev/null +++ b/LINUX/DISK/HDPARM скорость диска.md @@ -0,0 +1,133 @@ +```sh +hdparm -tT /dev/sda + +``` + +/dev/sda: + Timing cached reads: 24138 MB in 1.98 seconds = 12174.75 MB/sec + + Timing buffered disk reads: 1006 MB in 3.00 seconds = 335.09 MB/sec + + +`$ hdparm опция значение /dev/имя_файла_диска` + +Если опцию передать без значения, то как правило, она просто выводит текущее значения параметра, если передать значение, то оно устанавливается вместо старого. Давайте сначала рассмотрим основные опции утилиты, которые мы будем сегодня использовать: + +- ****-a**** - позволяет включить режим read-ahead, когда чтение выполняется в первую очередь. Этот режим позволяет улучшить производительность чтения больших объемов данных; + +- ****-A**** - позволяет включить режим read-look-ahead, когда диск просматривается перед чтением. По умолчанию включена; +- ****-b**** - остановить жесткий диск до следующего к нему обращения; +- ****-B**** - настройка управления питанием Advanced Power Management (APM), чем ниже значение, тем лучше энергосбережение. Чтобы отключить режим полностью установите значение в 255. +- ****-c**** - включает 32-битный режим передачи для IDE; +- ****-C**** - позволяет посмотреть текущий режим питания IDE; +- ****-d**** - включает режим DMA; +- ****-D**** - включает обнаружение дефектных областей на диске; +- ****-E**** - позволяет установить скорость для CD/DVD привода; +- ****-f**** - позволяет записать кэш диска на носитель; +- ****-i**** - выводит информацию о диске; +- ****-I**** - тоже выводит информацию о диске, но в более подробной форме; +- ****-m**** - позволяет указать количество секторов для многосекторного ввода/вывода. Чтобы отключить эту опцию установите её в 0; +- -M - позволяет управлять уровнем шума диска с помощью Automatic Acoustic Management (AAM); +- ****-n**** - позволяет включить флаг ****ignore write errors**** для игнорирования ошибок записи; +- ****-r**** - включает флаг read only. После этого с устройства можно только читать данные, но не записывать; +- ****-S**** - устанавливает время неактивности диска для перехода его в режим сна. Если установлено в 0, то диск сразу же отключается; +- ****-T**** - выполняет тест скорости чтения из кэша; +- ****-t**** - выполняет тест скорости чтения с диска без кэширования; +- ****-v**** - выводит все настройки; +- ****-w**** - выполняет сброс диска; +- ****-W**** - включает или отключает кэш для записи данных на IDE; +- ****-y**** - переводит IDE диск в режим низкого энергопотребления, замедляя скорость вращения диска; +- ****-Y**** - переводит IDE диск в режим низкого энергопотребления останавливая его; +- ****-z**** - просит ядро перечитать таблицу разделов для этого диска; +- ****-Z**** - отключает режим энергосбережения диска. + +### Hdparm + +`hdparm` - программа для получения/установки параметров устройств SATA/IDE - из одноимённого пакета, которая поддерживает управление временем автопарковки: + +Проверить, что установлено (`hdparm` работает от имени **root**): + +$ su - +`hdparm -J /dev/sdX + +Выключить: + +`hdparm -J0 --please-destroy-my-drive /dev/sdX + +Настройка диска (команда idle3ctl из пакета idle3-tools) + +1. idle3ctl -s 900 /dev/sda +2. idle3ctl -d /dev/sda + +- [https://forum.altlinux.org/index.php?topic=29692.105](https://forum.altlinux.org/index.php?topic=29692.105) +- [https://bugs.etersoft.ru/show_bug.cgi?id=9438](https://bugs.etersoft.ru/show_bug.cgi?id=9438) + +Если указанный выше способ не сработал, можно отключить парковку головок жесткого диска через функцию **APM (расширенного управления питанием)** жесткого диска. Сначала нужно узнать, какой уровень управления энергопитанием установлен: + +$ su - +`hdparm -B /dev/sdX +где sdX - имя нужного жесткого диска в системе. + +Во время питания ноутбука от сети значение APM равно 254. При работе от батареи можно установить его на уровне 128, а при одном-двух запущенных приложениях — 96. Запуска веб-браузера в этом случае стоит избегать. + +$ sudo hdparm -B 96 -S 0 /dev/sda + +При частой работе за ноутбуком от аккумулятора, вероятно, лучшим решением будет использование твердотельного накопителя — SSD: он очевидно превосходит HDD в экономии энергии. Возможно также комбинировать два варианта, когда на SDD установлена сама операционная система, а HDD используется для хранения данных. + +Возможные значения варьируются от 1 до 254. Наивысшая степень управления питанием достигается при значении 1, а наивысшая производительность ввода-вывода - при значении 254. Значение 255 указывает `hdparm` на полное отключение расширенного управления питанием на диске (не все диски поддерживают его отключение, но большинство поддерживают). + + +Для настройки APM при загрузке — создаем исполняемый файл `[rc.local](https://www.altlinux.org/Rc.local "Rc.local")`: + +$ su - +`echo '#!/bin/sh' > /etc/rc.d/rc.local +`chmod +x /etc/rc.d/rc.local + +В этот файл добавляем строчку: + +hdparm -B 254 /dev/sda + +Для настройки APM при выходе из ждущего режима — создаем файл `/etc/systemd/system/root-resume.service`: + +`touch /etc/systemd/system/root-resume.service + +В этот файл добавляем строчки: + +[Unit] +Description=Local system resume actions +After=suspend.target + +[Service] +Type=simple +ExecStart=/sbin/hdparm -B 254 /dev/sda + +[Install] +WantedBy=suspend.target + +И выполняем команду: + +`systemctl enable root-resume + +Для настройки APM при выходе из спящего режима — создаем файл `/etc/systemd/system/root-resume-sleep.service`: + +`touch /etc/systemd/system/root-resume-sleep.service + +В этот файл добавляем строчки: + +[Unit] +Description=Local system resume actions +After=hibernate.target + +[Service] +Type=simple +ExecStart=/sbin/hdparm -B 254 /dev/sda + +[Install] +WantedBy=hibernate.target + +И выполняем команду: + +`systemctl enable root-resume-sleep + + + diff --git a/LINUX/DISK/MDADM организация RAID.md b/LINUX/DISK/MDADM организация RAID.md new file mode 100644 index 0000000..7a50f40 --- /dev/null +++ b/LINUX/DISK/MDADM организация RAID.md @@ -0,0 +1,535 @@ + Обновлено: 28.09.2023  Опубликовано: 08.03.2019 + +mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования. + +[Установка утилиты mdadm](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#install) +[Создание RAID](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#create) + [Подготовка носителей](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#create-prepare) + [Сборка отказоустойчивого массива](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#create-raid) +[Файл mdadm.conf](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#conf) +[Создание файловой системы и монтирование](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#fs-mount) +[Получение информации о RAID](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#info) +[Проверка целостности массива](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#check) +[Восстановление RAID](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#restore) + [Заменой диска](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#restore-disk) + [Пересборка массива](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#restore-assemble) +[Использование Hot Spare](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#spare) +[Добавление диска к массиву](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#add-to-raid) +[Удаление массива](https://www.dmosk.ru/miniinstruktions.php?mini=mdadm#remove) + +## Установка mdadm + +`apt-get install mdadm + +## Сборка RAID + +Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива. + +### Подготовка носителей + +Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID): + +`mdadm --zero-superblock --force /dev/sd{b,c} + +_* в данном примере мы зануляем суперблоки для дисков **sdb** и **sdc**._ + +> Посмотреть, какие в вашей системе есть устройства можно командой: +> +> `lsblk + +Если мы получили ответ: + +`mdadm: Unrecognised md component device - /dev/sdb +`mdadm: Unrecognised md component device - /dev/sdc + +... то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку. + +Далее нужно удалить старые метаданные и подпись на дисках: + +`wipefs --all --force /dev/sd{b,c} + +### Создание рейда + +Для сборки избыточного массива применяем следующую команду: + +`mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c} + +_* где:_ +- _**/dev/md0** — устройство RAID, которое появится после сборки;_ +- _**-l 1** — уровень RAID;_ +- _**-n 2** — количество дисков, из которых собирается массив;_ +- _**/dev/sd{b,c}** — сборка выполняется из дисков sdb и sdc._ + +Мы должны увидеть что-то на подобие: + +`mdadm: Note: this array has metadata at the start and + `may not be suitable as a boot device. If you plan to + `store '/boot' on this device please ensure that + `your boot-loader understands md/v1.x metadata, or use + `--metadata=0.90 +`mdadm: size set to 1046528K + +Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить **y**: + +`Continue creating array? y + +Мы увидим что-то на подобие: + +`mdadm: Defaulting to version 1.2 metadata +`mdadm: array /dev/md0 started. + +Вводим команду: + +`lsblk + +... и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например: +... +sdb 8:16 0 2G 0 disk +??md0 9:0 0 2G 0 raid1 +sdc 8:32 0 2G 0 disk +??md0 9:0 0 2G 0 raid1 +... + +_* в примере мы видим собранный raid1 из дисков sdb и sdc._ + +## Создание файла mdadm.conf + +В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды: + +`mkdir /etc/mdadm + +`echo "DEVICE partitions" > /etc/mdadm/mdadm.conf + +`mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf + +Пример содержимого: + +`DEVICE partitions +`ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=proxy.dmosk.local:0 UUID=411f9848:0fae25f9:85736344:ff18e41d + +_* в данном примере хранится информация о массиве **/dev/md0** — его уровень 1, он собирается из 2-х дисков._ + +## Создание файловой системы и монтирование массива + +Создание файловой системы для массива выполняется также, как для раздела, например: + +`mkfs.ext4 /dev/md0 + +_* данной командой мы создаем на **md0** файловую систему **ext4**._ +или: + +`mkfs.xfs /dev/md0 + +_* для файловой системы **xfs**._ + +Примонтировать раздел можно командой: + +`mount /dev/md0 /mnt + +_* в данном случае мы примонтировали наш массив в каталог **/mnt**._ + +Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab. + +Сначала смотрим идентификатор раздела: + +`blkid + +Мы увидим что-то на подобие: + +`/dev/md0: UUID="ffa7c082-7613-4dbc-ae62-3f5508652cf6" TYPE="ext4" + +_* в моем примере мы будем использовать идентификатор **ffa7c082-7613-4dbc-ae62-3f5508652cf6**._ + +Открываем теперь fstab и добавляем строку: + +`vim /etc/fstab + +`UUID="ffa7c082-7613-4dbc-ae62-3f5508652cf6" /mnt ext4 defaults 0 0 + +Если ранее мы монтировали раздел в каталог /mnt, вводим: + +`umount /mnt + +И после: + +`mount -a + +Мы должны увидеть примонтированный раздел md, например: + +`df -h + +`/dev/md0 990M 2,6M 921M 1% /mnt + +## Информация о RAID + +Посмотреть состояние всех RAID можно командой: + +`cat /proc/mdstat + +В ответ мы получим что-то на подобие: + +`md0 : active raid1 sdc[1] sdb[0] + `1046528 blocks super 1.2 [2/2] [UU] + +_* где **md0** — имя RAID устройства; **raid1 sdc[1] sdb[0]** — уровень избыточности и из каких дисков собран; **1046528 blocks** — размер массива; **[2/2] [UU]** — количество юнитов, которые на данный момент используются. +** мы можем увидеть строку **md0 : active(auto-read-only)** — это означает, что после монтирования массива, он не использовался для записи._ + +Подробную информацию о конкретном массиве можно посмотреть командой: + +`mdadm -D /dev/md0 + +_* где **/dev/md0** — имя RAID устройства._ + +Пример ответа: + + Version : 1.2 + Creation Time : Wed Mar 6 09:41:06 2019 + Raid Level : raid1 + Array Size : 1046528 (1022.00 MiB 1071.64 MB) + Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB) + Raid Devices : 2 + Total Devices : 2 + Persistence : Superblock is persistent + + Update Time : Wed Mar 6 09:41:26 2019 + State : clean + Active Devices : 2 + Working Devices : 2 + Failed Devices : 0 + Spare Devices : 0 + +Consistency Policy : resync + + Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local) + UUID : 304ad447:a04cda4a:90457d04:d9a4e884 + Events : 17 + + Number Major Minor RaidDevice State + 0 8 16 0 active sync /dev/sdb + 1 8 32 1 active sync /dev/sdc + +_* где:_ + +- _**Version —** версия метаданных._ +- _**Creation Time —** дата в время создания массива._ +- _**Raid Level —** уровень RAID._ +- _**Array Size —** объем дискового пространства для RAID._ +- _**Used Dev Size —** используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности._ +- _**Raid Devices —** количество используемых устройств для RAID._ +- _**Total Devices —** количество добавленных в RAID устройств._ +- _**Update Time —** дата и время последнего изменения массива._ +- _**State —** текущее состояние. clean — все в порядке._ +- _**Active Devices —** количество работающих в массиве устройств._ +- _**Working Devices —** количество добавленных в массив устройств в рабочем состоянии._ +- _**Failed Devices —** количество сбойных устройств._ +- _**Spare Devices —** количество запасных устройств._ +- _**Consistency Policy —** политика согласованности активного массива (при неожиданном сбое). По умолчанию используется **resync** — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl._ +- _**Name —** имя компьютера._ +- _**UUID —** идентификатор для массива._ +- _**Events —** количество событий обновления._ +- **Chunk Size** (для RAID5) — размер блока в килобайтах, который пишется на разные диски. + +Подробнее про каждый параметр можно прочитать в мануале для mdadm: + +`man mdadm + +Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk: + +`fdisk -l /dev/md0 + +## Проверка целостности + +Для проверки целостности вводим: + +`echo 'check' > /sys/block/md0/md/sync_action + +Результат проверки смотрим командой: + +`cat /sys/block/md0/md/mismatch_cnt + +_* если команда возвращает **0**, то с массивом все в порядке._ + +Остановка проверки: + +`echo 'idle' > /sys/block/md0/md/sync_action + +## Восстановление RAID + +Рассмотрим два варианта восстановлении массива. + +### Замена диска + +В случае выхода из строя одного из дисков массива, команда cat /proc/mdstat покажет следующее: + +`cat /proc/mdstat + +Personalities : [raid1] +md0 : active raid1 sdb[0] + 1046528 blocks super 1.2 [2/1] [U_] + +_* о наличии проблемы нам говорит нижнее подчеркивание вместо U — **[U_]** вместо **[UU]**._ + +Или: + +`mdadm -D /dev/md0 + +... + Update Time : Thu Mar 7 20:20:40 2019 + State : clean, degraded +... + +_* статус **degraded** говорит о проблемах с RAID._ + +Для восстановления, сначала удалим сбойный диск, например: + +`mdadm /dev/md0 --remove /dev/sdc + +> Если нам нужно заменить диск, но при этом он в mdadm имеет рабочее состояние, мы получим ошибку: +> +> ... device or resource busy +> +> Сначала, нам нужно пометить диск как сбойный: +> +> `mdadm /dev/md0 --manage --fail /dev/sdc +> +> _* в данном примере диск **sdb** массива **md0** будет помечен сбойным._ +> +> Теперь удаляем: +> +> `mdadm /dev/md0 --remove /dev/sdc + +Теперь добавим новый: + +`mdadm /dev/md0 --add /dev/sde + +Смотрим состояние массива: + +`mdadm -D /dev/md0 + +... + Update Time : Thu Mar 7 20:57:13 2019 + State : clean, degraded, recovering +... + Rebuild Status : 40% complete +... + +_* **recovering** говорит, что RAID восстанавливается; **Rebuild Status** — текущее состояние восстановления массива (в данном примере он восстановлен на **40%**)._ + +Если синхронизация выполняется слишком медленно, можно увеличить ее скорость. Для изменения скорости синхронизации вводим: + +`echo '10000' > /proc/sys/dev/raid/speed_limit_min + +_* по умолчанию скорость **speed_limit_min** = 1000 Кб, **speed_limit_max** — 200000 Кб. Для изменения скорости, можно поменять только минимальную._ + +### Пересборка массива + +Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим: + +`mdadm --assemble --scan + +_* данная команда сама найдет необходимую конфигурацию и восстановит RAID._ + +Также, мы можем указать, из каких дисков пересобрать массив: + +`mdadm --assemble /dev/md0 /dev/sdb /dev/sdc + +=============================================== + +**Чтобы вытащить данные из одного диска RAID-1 в Ubuntu, можно попробовать следующее:** + +При подключении одного жесткого диска к моей машине Ubuntu `fdisk -l`отчеты: + +``` +Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors + Units: sectors of 1 * 512 = 512 bytes +Sector size (logical/physical): 512 bytes / 4096 bytes +I/O size (minimum/optimal): 4096 bytes / 4096 bytes +Disklabel type: gpt +Disk identifier: D1C4E003-11FD-4223-AA98-61CB9C6322BD + +Device Start End Sectors Size Type +/dev/sdb1 2048 1050623 1048576 512M Linux swap +/dev/sdb2 3147776 3904929899 3901782124 1.8T Microsoft basic data +/dev/sdb3 3904931840 3907029134 2097295 1G Microsoft basic data +/dev/sdb4 1050624 3147775 2097152 1G Microsoft basic data +``` + +Я попробовал шаги из похожего вопроса на этом сайте: + +``` +root@host:/mnt# mount /dev/sdb2 /mnt/old_nas/ +mount: /mnt/old_nas: unknown filesystem type 'linux_raid_member'. + +root@host:/mnt# mdadm --assemble --run /dev/md0 /dev/sdb2 +mdadm: failed to RUN_ARRAY /dev/md0: Invalid argument +mdadm: Not enough devices to start the array. +``` + +Предположим, /deb/sdb2 — это старый участник raid 1, который вы хотите восстановить. + +**Первый вариант** : попробуйте заново собрать RAID 1 со старым диском: + +Вам необходимо собрать деградировавший RAID-массив на новой машине, используя что-то вроде этого: + +``` +mdadm --force --assemble --run /dev/md0 /dev/sdb2 +``` + +Конечно, выберите номер помимо md0, если он уже используется. Затем вы можете смонтировать /dev/md0, где захотите. + +Другой вариант: + +``` +mdadm --force --run --assemble --scan +``` + +Вы получите что-то вроде этого: + +``` +mdadm: /dev/md/0 has been started with 1 drive (out of 2) +``` + +Затем смонтируйте и просмотрите свои файлы: + +``` +cd /mnt && mkdir md0 && mount /dev/md0 md0 +ls -la md0 +``` + +Наконец, вы можете добавить второй диск в массив: + +``` +mdadm /dev/md0 --manage --add /dev/sdc1 +``` + +**Второй вариант** : использование циклического устройства только для чтения + +Получите смещение данных для старого диска: + +``` +mdadm --examine /dev/sdb2 | grep -i offset +``` + +Создайте петлевое устройство (представим, что смещение данных равно 2048): + +``` +losetup --find --show --read-only --offset $((2048*512)) /dev/sdb2 +``` + +Смонтируйте печатное устройство петли, полученное в результате предыдущей команды. + +``` +mount -o ro /dev/loo1 /mnt/ +``` + +Mount может сделать это напрямую с помощью опций -o ro,loop,offset=: + +``` +mount -o ro,loop,offset=$((2048*512)) /dev/sdb2 /mnt +``` + +Насколько я понимаю, проблема, с которой вы столкнулись, может быть связана с тем, что mdadm считает ваш массив RAID 1 "чистым", что не так. Перед тем, как извлечь диск из массива, вы должны явно сообщить mdadm, что ваш второй диск (sdb2) вышел из строя: + +``` +mdadm --manage /dev/md0 --fail /dev/sdb2 +mdadm --manage /dev/md0 --remove /dev/sdb2 +``` + +=============================================== +## Запасной диск (Hot Spare) + +Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной. + +Диском Hot Spare станет тот, который просто будет добавлен к массиву: + +`mdadm /dev/md0 --add /dev/sdd + +Информация о массиве изменится, например: + +`mdadm -D /dev/md0 + +... + Number Major Minor RaidDevice State + 0 8 16 0 active sync /dev/sdb + 2 8 48 1 active sync /dev/sdc + + 3 8 32 - spare /dev/sdd + +Проверить работоспособность резерва можно вручную, симулировав выход из строя одного из дисков: + +`mdadm /dev/md0 --fail /dev/sdb + +И смотрим состояние: + +`mdadm -D /dev/md0 + +... + Rebuild Status : 37% complete +... + Number Major Minor RaidDevice State + 3 8 32 0 spare rebuilding /dev/sdd + 2 8 48 1 active sync /dev/sdc + + 0 8 16 - faulty /dev/sdb +... + +_* как видим, начинается ребилд. На замену вышедшему из строя **sdb** встал hot-spare **sdd**._ + +## Добавить диск к массиву + +В данном примере рассмотрим вариант добавления активного диска к RAID, который будет использоваться для работы, а не в качестве запасного. + +Добавляем диск к массиву: + +`mdadm /dev/md0 --add /dev/sde + +Новый диск мы увидим в качестве spare: + +4 8 16 - spare /dev/sde + +Теперь расширяем RAID: + +`mdadm -G /dev/md0 --raid-devices=3 + +_* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск._ + +## Удаление массива + +При удалении массива внимательнее смотрите на имена массива и дисков и подставляйте свои значения. + +Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его: + +`umount /mnt + +_* где **/mnt** — каталог монтирования нашего RAID._ + +> Если мы получим ошибку **umount: /mnt: target is busy**, то смотрим пользовательские процессы, которые мешают отмонтировать раздел: +> +> `fuser -vm /mnt +> +> И останавливаем их. + +`mdadm -S /dev/md0 + +_* где **/dev/md0** — массив, который мы хотим разобрать._ + +> Если мы получим ошибку **mdadm: fail to stop array /dev/md0: Device or resource busy**, с помощью команды +> +> `lsof -f -- /dev/md0 +> +> ... смотрим процессы, которые используют раздел и останавливаем их. + +Затем очищаем суперблоки на всех дисках, из которых он был собран: + +`mdadm --zero-superblock /dev/sdb + +`mdadm --zero-superblock /dev/sdc + +`mdadm --zero-superblock /dev/sdd + +_* где диски **/dev/sdb**, **/dev/sdc**, **/dev/sdd** были частью массива md0._ + +А также удаляем метаданные и подпись: + +`wipefs --all --force /dev/sd{b,c,d} + diff --git a/LINUX/DISK/NTFS.md b/LINUX/DISK/NTFS.md new file mode 100644 index 0000000..c813187 --- /dev/null +++ b/LINUX/DISK/NTFS.md @@ -0,0 +1,57 @@ +### Установка компонентов + +Для начала необходимо установить пакет ntfs-3g. В противном случае, при попытке запустить команду на монтирование раздела NTFS мы получим ошибку **mount: unknown filesystem type 'ntfs'.** + +В зависимости от дистрибутива Linux, наши действия будут отличаться. + +**а) Linux Deb (Debian / Ubuntu / Astra):** + +apt update + +apt install ntfs-3g + +**б) Linux RPM (Rocky / РЕД ОС / CentOS):** + +yum install epel-release + +yum install ntfs-3g + +После установки данного пакета в системе появятся дополнительные команды **mount.ntfs-fuse** и **mount.ntfs-3g**., а также команда mount распознает опцию -t ntfs. + +### Ручное монтирование + +Монтирование NTFS на чтение и запись выполняется любой из трех команд: + +mount -t ntfs /dev/sdb1 /mnt + +или: + +mount -t ntfs-3g /dev/sdb1 /mnt + +или + +mount.ntfs-3g /dev/sdb1 /mnt + +_* в данном примере, примотировано устройство **/dev/sdb1** в раздел **/mnt**. Понять, какой устройство нужно монтировать можно при помощи команды **fdisk -l**_ + +### Автоматическое монтирование + +Чтобы раздел автоматически монтировался при перезапуске компьютера, открываем на редактирование файл: + +vi /etc/fstab + +Добавляем строку: + +/dev/sdb1 /mnt ntfs defaults 0 0 + +_* в данном примере мы раздел /dev/sdb1 будем монтировать в каталог /mnt._ + +Чтобы применить настройку и проверить ее, вводим: + +mount -a + +Посмотреть примонтированные разделы и файловые системы можно командой: + +df -hT + + diff --git a/LINUX/DISK/SMARTMONTOOLS.md b/LINUX/DISK/SMARTMONTOOLS.md new file mode 100644 index 0000000..4101b02 --- /dev/null +++ b/LINUX/DISK/SMARTMONTOOLS.md @@ -0,0 +1,85 @@ +```sh +sudo apt install smartmontools + +# узнаём какие диски подключены: +ls -l /dev | grep -E 'sd|hd' +# или: +smartctl --scan +lsblk + +# отображение информации о диске: +smartctl --info /dev/sda + +# запустить проверку: +smartctl -s on -a /dev/sda + +# Здесь опция -s включает флаг SMART на указном устройстве. Вы можете его убрать если поддержка SMART уже включена. Информация о диске разделена на несколько разделов, В разделе **READ SMART DATA** находится общая информация о здоровье жесткого диска. + +`=== START OF READ SMART DATA SECTION === SMART overall-health self-assessment rest result: PASSED` + +# Этот тест может быть пройден (PASSED) или нет (FAILED). В последнем случае сбой неизбежен, начинайте резервное копирование данных с этого диска. +``` +Следующая вещь которую можно посмотреть, когда выполняется диагностика HDD в linux, это таблица SMART атрибутов. + +[](https://losst.pro/wp-content/uploads/2015/08/Snimok-ekrana-ot-2020-05-14-14-20-12.png) + В SMART таблице записаны параметры, определенные для конкретного диска разработчиком, а также порог отказа для этих параметров. Таблица заполняется автоматически и обновляется на основе прошивки диска. + +- **ID #** - идентификатор атрибута, как правило, десятичное число между 1 и 255; +- **ATTRIBUTE_NAME** - название атрибута; +- **FLAG** - флаг обработки атрибута; +- **VALUE** - это поле представляет нормальное значение для состояния данного атрибута в диапазоне от 1 до 253, 253 - лучшее состояние, 1 - худшее. В зависимости от свойств, начальное значение может быть от 100 до 200; +- **WORST** - худшее значение value за все время; +- **THRESH** - самое низкое значение value, после перехода за которое нужно сообщить что диск непригоден для эксплуатации; +- **TYPE** - тип атрибута, может быть Pre-fail или Old_age. Все атрибуты по умолчанию считаются критическими, то-есть если диск не прошел проверку по одному из атрибутов, то он уже считается не пригодным (FAILED) но атрибуты old_age не критичны; +- **UPDATED** - показывает частоту обновления атрибута; +- **WHEN_FAILED** - будет установлено в **FAILING_NOW** если значение атрибута меньше или равно THRESH, или в "**-**" если выше. В случае **FAILING_NOW**, лучше как можно скорее выполнить резервное копирование, особенно если тип атрибута **pre-fail**. +- **RAW_VALUE** - значение, определенное производителем. + + +## Автоматическая диагностика в smartd + +Автоматическая диагностика HDD в Linux настраивается очень просто. Сначала отредактируйте файл конфигурации smartd - /etc/smartd.conf. Добавьте следующую строку: + + `nano /etc/smartd.conf` + +`/dev/sda -m myemail@mydomain.com -M test` + +Здесь: + +- **-m <email адрес>** - адрес электронной почты для отправки результатов проверки. Это может быть адрес локального пользователя, суперпользователя или внешний адрес, если настроен сервер для отправки электронной почты; +- **-M** - частота отправки писем. once - отправлять только одно сообщение о проблемах с диском. **daily** - отправлять сообщения каждый день если была обнаружена проблема. **diminishing** - отправлять сообщения через день если была обнаружена проблема. **test** - отправлять тестовое сообщение при запуске smartd. **exec** - выполняет указанную программу в место отправки почты. + +Сохраните изменения и перезапустите **smartd**: + +`sudo systemctl restart smartd` + +Вы должны получить на электронную почту письмо о том, что программа была запущена успешно. Это будет работать только если на компьютере настроен почтовый сервер. + +[](https://losst.pro/wp-content/uploads/2015/08/Snimok-ekrana-ot-2020-05-14-15-27-39.png) + +Также можно запланировать тесты по своему графику, для этого используйте опцию **-s** и регулярное выражение типа **T/MM/ДД/ДН/ЧЧ**, где: + +Здесь **T** - тип теста: + +- **L** - длинный тест; +- **S** - короткий тест; +- **C** - тест перемещения (ATA); +- **O** - оффлайн тест. + +Остальные символы определяют дату и время теста: + +- **ММ** - месяц в году; +- **ДД** - день месяца; +- **ЧЧ** - час дня; +- **ДН** - день недели (от 1 - понедельник 7 - воскресенье; +- **MM, ДД и ЧЧ** - указываются с двух десятичных цифр. + +Точка означает все возможные значения, выражение в скобках (A|B|C) - означает один из трех вариантов, выражение в квадратных скобках [1-5] означает диапазон (от 1 до 5). + +Например, чтобы выполнять полную проверку жесткого диска linux каждый рабочий день в час дня добавьте опцию **-s** в строчку конфигурации вашего устройства: + +`/dev/sda -m myemail@mydomain.com -M once -s (L /../../[1-5]/13)` + +Если вы хотите чтобы утилита сканировала и проверяла все устройства, которые есть в системе используйте вместо имени устройства директиву DEVICESCAN: + +`DEVICESCAN -m myemail@mydomain.com -M once -s (L /../../[1-5]/13)`
\ No newline at end of file diff --git a/LINUX/DISK/SOFT RAID1 (mdadm) горячая замена диска.md b/LINUX/DISK/SOFT RAID1 (mdadm) горячая замена диска.md new file mode 100644 index 0000000..b8935d7 --- /dev/null +++ b/LINUX/DISK/SOFT RAID1 (mdadm) горячая замена диска.md @@ -0,0 +1,26 @@ +```sh +# Смотрим диски: +cat /proc/mdstat +lsblk + +# Смотрим SMART: +sudo smartctl -a /dev/sda +# смотрим: -Rellocated Sector_ct +# -Current_Pending_Sector + +# Копируем и сохраняем Serial Number плохого диска + +# Открываем в разных окнах: +watch n1 cat /proc/mdstat + +# Говорим что sdc1 в md0 это fail: +sudo mdadm /dev/md0 --fail /dev/sdc1 + +# Удаляем sdc1 из md0: +sudo mdadm /dev/md0 --remove /dev/sdc1 + +sudo vim /etc/mdadm.conf +# В файле нужно указать опцию: +MAILADDR vlapa@ya.ru +``` + diff --git a/LINUX/DISK/WD - автопарковка.md b/LINUX/DISK/WD - автопарковка.md new file mode 100644 index 0000000..43da641 --- /dev/null +++ b/LINUX/DISK/WD - автопарковка.md @@ -0,0 +1,51 @@ +```sh +sudo apt install idle3-tools + +# Чтобы получить текущее значение времени парковки нужно выполнить полученный в процессе сборки файл idle3ctl со следующим параметром: +idle3ctl -g /dev/sda + +# Отключить idle3 таймер: +idle3ctl -d /dev/sda + +# Выставить таймер на 10 секунд: +idle3ctl -s 100 /dev/sda +``` +Дополнительные опции указаны на сайте программы и доступны по ключу -h. + +Чтобы новые значения вступили в действие нужно выключить и включить диск, по-этому после установки нового значения таймера программа попросит вас перезагрузиться. + +Проверено на двух 2TB WD20EARX. Счетчик количества парковок перестал так быстро расти, интенсивность уменьшилась до нескольких парковок в час. + +========================================== +#### Western Digital - отключение автопарковки в дисках серии EARS + +Заглянув в очередной раз в параметры SMART диска Western Digital(WD) серии Green (WD15EARS) увидел аномально высокое значение Load_Cycle_Count: + +manumba ~ # smartctl -A /dev/sdb +... +193 Load_Cycle_Count 0x0032 194 194 000 Old_age Always - 18713 +... + +Для сравнения параметры SMART диска WD серии BLACK: + +manumba ~ # smartctl -A /dev/sdc +... +193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 18 +... + +Load_Cycle_Count - показывает количество парковок диска. Почитав информацию в интернете узнал что диски WD серии Green паркуются с целью энергосбережения. +Понаблюдав за параметром Load_Cycle_Count диска WD15EARS обнаружил что он увеличивается на 200 каждые сутки. Это примерно 72000 парковок в год. Согласно данным производителя, предел количества парковок для дисков WD Green находится на отметке около 600 000 парковок, т.е. при данном темпе парковок диску отмерено около 8-9 лет. С одной стороны за это время диск морально устареет, или (все может быть) выйдет из строя по другим причинам. С другой стороны взбредет что то прошивке диска, изменится характер нагрузки на диск, и вдруг диск начнет парковаться с скоростью 1000 парковок в день? Поскольку энергосбережение 10-15 ватт для домашнего компьютера мало значит, думаю выгодней отключить эту странную функцию. + +### Отключение автопарковки + +Для отключения автопарковки нужно использовать утилиту wdidle3 от WD. Утилита для DOS, поэтому лучше скачать какой нибудь LiveCD содержащий эту утилиту, для того что бы удобно запустить оную. Например [HirenBootCD](http://rutracker.org/forum/viewtopic.php?t=3419055 "http://rutracker.org/forum/viewtopic.php?t=3419055"). Итак: + +- Скачиваем [HirenBootCD](http://rutracker.org/forum/viewtopic.php?t=3419055 "http://rutracker.org/forum/viewtopic.php?t=3419055"). +- Выключаем компьютер. +- Отключаем все диски кроме WD15EARS, на котором мы будем отключать автопарковку (это рекомендовано WD и сторонними источниками в интернете). +- Загружаемся в HirenBootCD и выбираем из Hard Disk tools: wdidle3. +- В командной строке набираем wdidle3.exe /D (Эта команда отключит функцию автопарковки) +- Выключаем компьютер. +- Подключаем все остальные диски обратно. +- Включаем BIOS, восстанавливаем порядок дисков в BIOS (иначе первым диском по версии BIOS может оказаться диск на котором отключалась автопарковка, что в случае если порядок дисков был раньше другой, может стать удивительным открытием для GRUB) +- Загружаемся и радуемся отключенной автопарковке.
\ No newline at end of file diff --git a/LINUX/DISK/Автоматическое монтирование USB накопителя в заданную папку.md b/LINUX/DISK/Автоматическое монтирование USB накопителя в заданную папку.md new file mode 100644 index 0000000..0f2b882 --- /dev/null +++ b/LINUX/DISK/Автоматическое монтирование USB накопителя в заданную папку.md @@ -0,0 +1,34 @@ +Этот скрипт автоматически монтирует USB-накопитель в указанную директорию при подключении. Полезен для серверов, киосков и систем с минимальным GUI. + +```sh +#!/bin/bash + +# Точка монтирования +MOUNT_DIR="$HOME/usb_mount" + +# Создаём папку, если её нет +mkdir -p "$MOUNT_DIR" + +# Ищем новое USB-устройство +DEVICE=$(lsblk -o NAME,TYPE,HOTPLUG | awk '$2 == "disk" && $3 == 1 {print $1}' | tail -n1) + +# Если устройство найдено +if [ -n "$DEVICE" ]; then + # Получаем раздел (например, sdb1) + PARTITION="/dev/${DEVICE}1" + + # Монтируем раздел + sudo mount "$PARTITION" "$MOUNT_DIR" + + echo "✅ Устройство $PARTITION смонтировано в $MOUNT_DIR" +else + echo "❌ USB-устройство не найдено" +fi +``` + +🟢 Использует lsblk для поиска подключённых устройств +🟢 Автоматически монтирует первый раздел USB-устройства +🟢 Создаёт директорию монтирования, если она отсутствует. + +➡️ **Скрипт можно запускать вручную или автоматически через** udev**-триггеры.** + diff --git a/LINUX/DISK/Программный raid в Linux.md b/LINUX/DISK/Программный raid в Linux.md new file mode 100644 index 0000000..af8e621 --- /dev/null +++ b/LINUX/DISK/Программный raid в Linux.md @@ -0,0 +1,169 @@ +### Доступны такие режимы: + +- **RAID 0** - позволяет увеличить скорость записи. Все диски массива будут использоваться для записи данных, поэтому их скорости будут складываться. Например, если у вас есть три диска объемом 512 Гб и скоростью записи 200 Мб в секунду, то объединив их в RAID 0 вы получите виртуальный диск объемом 1,5 Тб и максимальной скоростью записи 600 Мб в секунду. +- **RAID 1** - этот режим увеличивает сохранность данных. Во время записи одни и те же данные пишутся параллельно на подключённые диски. В результате у вас будет несколько копий одних и тех же данных. Если один из дисков массива выйдет из строя, система продолжит работать, так как данные есть ещё и на другом диске. Например, если вы объедините два диска по 1 Тб в RAID 1, то получите один виртуальный диск с объемом 1 Тб. +- **RAID 10** - объединяет в себе два предыдущих варианта. Он может состоять как минимум из четырех дисков. В таком случае сначала создаются два массива RAID 1, а поверх них создается массив RAID 0 для увеличения производительности. + +Конечно, существуют и другие режимы работы, но эти самые популярные. В сегодняшней статье мы рассмотрим как создать программный RAID уровней 0 и 1. + +## Создание программного RAID в Linux + +### Шаг 1. Установка mdadm + +Для управления программными RAID массивами в Linux используется утилита mdadm. Для того чтобы установить её в Ubuntu или Debian выполните такую команду: + +`sudo apt install mdadm` + +[](https://losst.pro/wp-content/uploads/2021/06/raid4.png) + +Для установки утилиты в CentOS/Fedora/RedHat необходимо выполнить: + +`sudo yum install mdadm` + +### Шаг 2. Подготовка дисков + +Посмотреть список дисков, подключённых к системе можно с помощью команды lsblk: + +`lsblk` + +[](https://losst.pro/wp-content/uploads/2021/06/raid.png) + +В этой статье я покажу как объединить три диска в RAID на примере дисков **/dev/sda**, **/dev/sdb** и **/dev/sdc**. Сначала необходимо определиться стоит ли размещать RAID непосредственно на диски или на разделы. Лучше выбрать разделы, так как это дает больше гибкости и безопасности. Во первых, операционная система может перезаписать суперблок RAID если он размещён прямо на диске. Во вторых, если вы выделяете весь диск под RAID, то у вас могут возникнуть проблемы при замене диска. Диски одинакового объема, обычно, немного отличаются у разных производителей. Поэтому для замены вам придется искать точно такой же диск с точно таким же реальным объемом. Если же у вас будет раздел, вы просто сможете создать раздел нужного объема. + +Сначала нужно создать таблицу разделов на всех выбранных дисках: + +`sudo parted /dev/sda mklabel msdos` +`sudo parted /dev/sdb mklabel msdos` +`sudo parted /dev/sdc mklabel msdos` + +[](https://losst.pro/wp-content/uploads/2021/06/raid1.png) + +Если на диске уже существует таблица разделов программа предупредит о том, что создание новой сотрёт все данные с диска. После создания таблицы разделов следует создать по разделу на каждом диске. Например, создадим разделы размером 460 гигабайт. Для этого можно воспользоваться той же командой parted: + +`sudo parted /dev/sda mkpart primary ext4 2048 460Gb` +`sudo parted /dev/sdb mkpart primary ext4 2048 460Gb` +`sudo parted /dev/sdc mkpart primary ext4 2048 460Gb` + +[](https://losst.pro/wp-content/uploads/2021/06/raid2.png) + +Теперь диски готовы к размещению на них RAID: + +[](https://losst.pro/wp-content/uploads/2021/06/raid3.png) + +### Шаг 3. Создание RAID 0 + +Для создания RAID массива надо выполнить команду mdadm с опцией --create, указать режим работы массива, количество дисков и сами диски. Синтаксис команды такой: + +**$ sudo mdadm --create /dev/имя_массива --level=режим_работы --raid-devices=количество_устройств список устройств** + +Например: + +`sudo mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1` + +[](https://losst.pro/wp-content/uploads/2021/06/raid5.png) + +После выполнения этой команды вы увидите раздел raid в lsblk. С этим разделом можно работать как с любым обычным разделом в вашей системе. + +### Шаг 4. Тестирование RAID 0 + +Давайте для примера отформатируем полученный раздел в файловую систему Ext4, смонтируем и попробуем записывать туда файлы: + +`sudo mkfs -t ext4 /dev/md0` +`sudo mount /dev/md0 /mnt` + +Затем можно тестировать скорость с помощью dd: + +`sudo dd if=/dev/zero of=/mnt/file bs=1G count=5` + +[](https://losst.pro/wp-content/uploads/2021/06/raid8.png) + +Как видите, при записи 5 Гб данных мы получаем скорость 400 Мб/сек, это уже на уровне обычного SSD. + +### Шаг 5. Информация о RAID + +Найти информацию обо всех созданных в системе RAID массивах вы можете в файле **/proc/mdstat:** + +`cat /proc/mdstat` + +[](https://losst.pro/wp-content/uploads/2021/06/raid9.png) + +Именно так можно посмотреть RAID Linux. Посмотреть более детальную информацию о массиве /dev/md0 можно с помощью самой утилиты mdadm: + +`sudo mdadm --detail /dev/md0` + +[](https://losst.pro/wp-content/uploads/2021/06/raid10.png) + +Здесь в том числе отображается состояние RAID Linux. Посмотреть детальную информацию о каждом устройстве, которое входит в RAID можно с помощью опции **--examine**: + +`sudo mdadm --examine /dev/sda1 /dev/sdb1 /dev/sdc1` + +[](https://losst.pro/wp-content/uploads/2021/06/raid11.png) + +### Шаг 6. Сохранение RAID массива + +В принципе, уже сейчас RAID массив работает и продолжит работать после перезагрузки, потому что mdadm просканирует все диски, найдёт метаданные массива и построит его. Но неизвестно какое имя программа присвоит полученному массиву и неизвестно все ли параметры будут восстановлены верно. Поэтому конфигурацию массива лучше сохранить. Для этого используйте такую команду: + +`sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf` + +[](https://losst.pro/wp-content/uploads/2021/06/raid12.png) + +Затем нужно пересоздать initramfs с поддержкой этого массива: + +`sudo update-initramfs -u` + +С полученным массивом можно обращаться как с обычным разделом диска. Например, для того чтобы автоматически монтировать его в систему добавьте такую строчку в /etc/fstab: + +`sudo vi /etc/fstab` + +`/dev/md0 /mnt/ ext4 defaults 0 0` + +На этом создание raid массива linux завершено. + +### Шаг 7. Переименование RAID массива + +Если вы не выполните предыдущий пункт и перезагрузите компьютер, то можете получить RAID массив с именем md127 вместо md0, такое имя также может быть присвоено второму RAID массиву. Для того чтобы переименовать массив, его придется пересобрать. Для этого сначала остановите существующий массив: + +`sudo mdadm --stop /dev/md127` + +Затем выполните команду переименования. Синтаксис у неё такой: + +**$ sudo mdadm --assemble --update=name --name=номер /dev/md_номер список устройств** + +Например: + +`sudo mdadm --assemble --update=name --name=0 /dev/md0 /dev/sda1 /dev/sdb1 /dev/sdc1` + +После этого следует повторить предыдущий шаг для уже правильного сохранения RAID устройства. + +### Шаг 8. Удаление RAID массива + +Если вы не хотите чтобы ваши диски и дальше были объединены в RAID, его можно удалить. Для этого выполните такую команду: + +`sudo mdadm --remove /dev/md0` + +Она удалит все метаданные с дисков /dev/md0. Дальше останется только удалить или закомментировать секцию данного RAID массива в /etc/mdadm/mdadm.conf + +`sudo vi /etc/mdadm/mdadm.conf` + +[](https://losst.pro/wp-content/uploads/2021/06/raid13.png) +### Шаг 10. Создание массива RAID 1 + +Теперь вы знаете как создать raid linux на примере RAID 0. Давайте ещё разберемся с RAID 1. Для создания RAID 1 используется такая же команда как и для RAID 0, но указывается другой уровень работы массива: + +`sudo mdadm --create /dev/md0 --level=1 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1` + +Затем вы можете убедится что RAID создан посмотрев информацию о нём: + +`sudo mdadm --detail /dev/md0` + +Ну и с помощью lsblk можно оценить размер устройства: + +`lsblk` + +[](https://losst.pro/wp-content/uploads/2021/06/raid14.png) + +Как и ожидалось, размер не увеличился, поскольку копии данных будут записываться на все три диска. Теперь давайте посмотрим на скорость: + +[](https://losst.pro/wp-content/uploads/2021/06/raid15.png) + +Скорость записи данных такая же как и у одного диска. Это цена сохранности данных. Если вы отключите один из дисков, то все данные всё равно будут вам доступны.
\ No newline at end of file |
