An open API service indexing awesome lists of open source software.

https://github.com/constgen/iospeed

Скрипт для измерения скорости чтения и записи памяти роутера или Linux
https://github.com/constgen/iospeed

Last synced: 9 months ago
JSON representation

Скрипт для измерения скорости чтения и записи памяти роутера или Linux

Awesome Lists containing this project

README

          

# IOSpeed - Тест скорости диска или RAM для Entware

> [!CAUTION]
> Установщик и документация ещё дорабатываются

# iospeed
Скрипт для измерения скорости чтения и записи памяти роутера, WSL, Linux или MacOS. Можно измерить скорость как постоянной памяти так и оперативной

Вывод справки

```sh
./iospeed.sh -h
```

По умолчанию скрипт замеряет скорость в текущей дериктории путём создания временного файла. Если места не достаточно, то лучше указать размер в ручную в Мегабайтах с помощью флага `-s`

```sh
./iospeed.sh -s 1024
```

Указать другой путь - флаг `-p`. Например RAM или носитель Entware

```sh
./iospeed.sh -s 128 -p /tmp
./iospeed.sh -s 512 -p /opt
```

![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Shell](https://img.shields.io/badge/shell-POSIX-green.svg)
![Platform](https://img.shields.io/badge/platform-Entware%7CWSL%7CLinux-orange.svg)

Простой и мощный скрипт для тестирования скорости чтения/записи дисков, оптимизированный для роутеров с Entware, но совместимый с WSL, Linux и macOS.

## 🚀 Особенности

- ✅ **Кроссплатформенность**: Работает на Entware, WSL, Linux, macOS
- 📊 **Точные измерения**: Использует dd с синхронной записью (oflag=dsync)
- 🎨 **Красивый вывод**: Современный CLI с цветами и иконками
- 🔧 **Автодиагностика**: Определяет файловую систему и её особенности
- ⚡ **Быстрая установка**: Одна команда для установки и автообновления
- 🔄 **Автообновления**: Интеграция с GitHub для получения последних версий

## 📦 Быстрая установка

### Для Entware (роутеры)
```bash
wget -qO- https://raw.githubusercontent.com/YOUR_USERNAME/iospeed/main/install-iospeed.sh | sh
```

### Ручная установка
```bash
# Скачать скрипт
wget https://raw.githubusercontent.com/YOUR_USERNAME/iospeed/main/iospeed.sh
chmod +x iospeed.sh

# Переместить в системную директорию (опционально)
sudo mv iospeed.sh /usr/local/bin/iospeed
```

## 🎯 Использование

### Основные команды
```bash
# Базовый тест (256 МБ в текущей директории)
iospeed.sh

# Тест определенного размера
iospeed.sh -s 512

# Тест в конкретной директории
iospeed.sh -p /mnt/usb

# Тест ОЗУ (через tmpfs)
iospeed.sh -p /dev/shm -s 100

# Справка
iospeed.sh -h
```

### Примеры результатов
```
=== Тест скорости записи ===
Файл: /tmp/tempfile.io
Файловая система: tmpfs
Sync запись: да
Размер блока: 1M
Кол-во блоков: 100
Общий размер: 100.0 MB
---------------------------

│ ✅ УСПЕХ: Тест завершен.

=== Результаты ===
Операция | Время (с) | Скорость (МБ/с)
-------- | ---------- | ---------------
Чтение | 0.020 | 5000.00
Запись | 0.174 | 574.71
```

## 🔧 Управление установкой

### Обновление
```bash
# Проверить обновления
install-iospeed.sh --check

# Обновить до последней версии
iospeed-update
```

### Удаление
```bash
install-iospeed.sh --uninstall
```

## 📋 Системные требования

### Минимальные требования
- POSIX-совместимый shell (`sh`, `bash`, `dash`)
- `dd` (обычно предустановлен)
- `awk` (обычно предустановлен)

### Для установки из GitHub
- `wget` или `curl`
- Интернет-соединение

### Рекомендуемые
- `sudo` для точной очистки кэша
- Внешняя утилита `time` для более точных измерений

## 🌟 Поддерживаемые файловые системы

Скрипт автоматически определяет тип файловой системы и адаптирует поведение:

- **ext4, xfs, btrfs** - нативные Linux ФС
- **tmpfs** - ОЗУ диск
- **9p** - WSL/виртуализация
- **exfat, vfat, ntfs** - Windows ФС (с особой обработкой)
- **И многие другие**

## 🚀 Фичи для продвинутых пользователей

### Автоматические обновления
При установке через `install-iospeed.sh` можно настроить автоматические еженедельные обновления через cron.

### Интеграция с мониторингом
Скрипт можно легко интегрировать в системы мониторинга, парся вывод таблицы результатов.

### Гибкая настройка
- Настройка размера блоков и количества операций
- Выбор директории для тестирования
- Поддержка различных единиц измерения (K, M)

## 🤝 Участие в разработке

### Сообщение об ошибках
Создайте issue с описанием:
- Операционная система и версия
- Тип файловой системы
- Полный вывод скрипта
- Ожидаемое и фактическое поведение

### Предложения улучшений
- Fork репозитория
- Создайте feature branch
- Отправьте Pull Request

## 📄 Лицензия

MIT License - см. файл [LICENSE](LICENSE)

## 🏆 Авторы

- **[Ваше имя]** - *Основная разработка* - [@your-username](https://github.com/your-username)

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

### Сравнение с аналогами
- **Преимущества над hdparm**: Работает с файлами, а не только с устройствами
- **Преимущества над dd**: Автоматическая очистка кэша и красивый вывод
- **Преимущества над fio**: Простота установки и использования

### Технические детали
- Использует `oflag=dsync` для принудительной синхронной записи
- Автоматическая очистка дискового кэша (если права позволяют)
- Умная обработка особенностей различных файловых систем
- Встроенная система управления временными файлами с ловушками

---

⭐ **Понравился проект? Поставьте звездочку!**