Содержание
Диск
Создание разделов - fdisk, parted, cfdisk, mkfs
sudo fdisk -c -u /dev/LVG/LVM
Важно! Начало раздела должно начинаться с 2048
Форматирование - mkfs
Список всех дисков с разделами и размерами в системе:
lsblk
Список всех дисков с их UUID и ФС:
blkid
Информация о контроллере:
lshw -class disk -class storage
Информация о HDD:
sudo lshw -short -C disk
Информация SMART необходимого HDD
sudo smartctl -x /dev/sda
Проверка состояния
http://wiki.colobridge.net/linux/проверка_состояния_жестких_дисков_в_linux
sudo smartctl -a /dev/nvme0
NVMe
Тестирование
- Linux: https://github.com/JonMagon/KDiskMark
sudo add-apt-repository ppa:jonmagon/kdiskmark sudo apt update sudo apt install kdiskmark
- Linux console:
fio
Тест скорости записи и чтения с помощью fio (тестируется диск в точке монтирования которого запускается команда):
fio --loops=5 --size=1000m --filename=fiotest.tmp --stonewall --ioengine=libaio --direct=1 --name=Seqread --bs=1m --rw=read --name=Seqwrite --bs=1m --rw=write --name=512Kread --bs=512k --rw=randread --name=512Kwrite --bs=512k --rw=randwrite --name=4kQD32read --bs=4k --iodepth=32 --rw=randread --name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite && rm fiotest.tmp
dd
Тест скорости записи и чтения с помощью dd (тестируется диск в точке монтирования которого запускается команда):
dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync #Запись dd if=tempfile of=/dev/null bs=1M count=1024 #Чтение rm tempfile
hdparm
Тест чтения с помощью hdparm:
sudo hdparm -tT /dev/sda
- -t ( Timing buffered disk) - отображает скорость чтения через буферный кэш на диск без какого-либо предварительного кэширования данных.
- -T (Timing cached reads) - отображает скорость чтения непосредственно из буферного кэша Linux без доступа к диску.
iozone
Тест с помощью iozone:
iozone -a /dev/sda
Ключ -a запускает iozone в автоматическом режиме, в котором утилита будет использовать для тестирования block size от 4k до 16384k (16M), и размер файлов от 64k до 524288k (512M).
Все результаты скорости указаны в KB/Sec.
- Первая колонка – kb отображает размер файла.
- Вторая колонка – reclen – отображает используемый размер блока (block size).
- Третья колонка – write – отображает время, затраченное на создание/запись нового файла. Это всегда более сложная задача для диска и файловой системы, так как связана с назначением inode, созданием новой записи в журнале событий (для Journaled File System) и т.п.
- Четвёртая колонка – rewrite – указывается скорость перезаписи уже существующего файла.
- Пятая колонка – read – скорость чтения существующего файла.
- Шестая колонка – reread – скорость чтения файла, который уже был прочитан (reread file).
- Седьмая колонка – random read – показывает скорость доступа к случайной части (!) файла.
Сохранить результат на диск:
iozone -a -b ioresults.xls
https://rtfm.co.ua/linux-proverka-skorosti-chteniya-zapisi-hdd/
LVM
Создать карту разделов LVM:
sudo kpartx -av /dev/GROUP/disk
теперь разделы доступны в /dev/mapper/GROUP-disk..
После работ с разделами, обязательно удаляем карту разделов LVM:
sudo kpartx -dv /dev/GROUP/disk
Файловая система
uid
Узнать uid:
sudo blkid
ext4
Резервные блоки
По умолчанию 5% блоков файловой системы будут зарезервированы для суперпользователя, чтобы избежать фрагментации и «позволить демонам, принадлежащим root, продолжать корректно функционировать после того, как непривилегированным процессам будет запрещена запись в файловую систему»
Не резервировать блоки при создании (device будет отформатирован!):
mkfs.ext4 -m 0 /dev/device
Установить резерв в 1% (на существующей фс, без форматирования):
tune2fs -m 1 /dev/device
Проверить:
disk=/dev/sdg echo Disk Size: $(($(tune2fs -l $disk | grep '^Block count:' | sed -r 's/Block count:\s+//')*$(tune2fs -l $disk | grep '^Block size:' | sed -r 's/Block size:\s+//')/1024**3))GB echo Reserved Size: $(($(tune2fs -l $disk | grep '^Reserved block count:' | sed -r 's/Reserved block count:\s+//')*$(tune2fs -l $disk | grep '^Block size:' | sed -r 's/Block size:\s+//')/1024**3))GB echo Reserved: $(($(tune2fs -l $disk | grep '^Reserved block count:' | sed -r 's/Reserved block count:\s+//')*$(tune2fs -l $disk | grep '^Block size:' | sed -r 's/Block size:\s+//')/1024**3/($(tune2fs -l $disk | grep '^Block count:' | sed -r 's/Block count:\s+//')*$(tune2fs -l $disk | grep '^Block size:' | sed -r 's/Block size:\s+//')/1024**3/100)))%
Увеличение раздела с помощью parted
Смотрим текущие разделы:
sudo parted /dev/xvda print Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 64,4GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 7000MB 6999MB primary ext4 2 7000MB 11,0GB 4000MB primary linux-swap(v1) 3 11,0GB 42,9GB 31,9GB primary ext4
Необходимо увеличить 3 раздел. Удаляем и создаем с новым размером его:
sudo parted /dev/xvda rm 3 sudo parted /dev/xvda mkpart p ext4 11,0GB 64,4GB
Проверяем и увеличиваем саму фс:
sudo e2fsck -f /dev/xvda3 sudo resize2fs /dev/xvda3
Дефрагментация
e4defrag
swap
Показать размеры памяти и swap:
free -mh
vm.swappiness — параметр, который определяет при каком потреблении памяти в % начинает задействоваться swap.
sysctl vm.swappiness
Отключить задействование swap:
#текущая сессия sysctl -w vm.swappiness=0 #при старте системы echo vm.swappiness = 0 | sudo tee -a /etc/sysctl.conf
Отключить swap можно с помощью:
sudo swapoff -a
или определенный swap, если их несколько:
sudo swapoff /dev/xvda2
Создать/форматировать swap на разделе:
sudo mkswap /dev/sdc2
Увеличить swap на «лету».
Создать образ необходимого раздела, пример в 1GB (1024 по 1MB):
sudo dd if=/dev/zero of=/swap1 bs=1M count=1024
Создать фс и назначить права:
sudo mkswap /swap1 chmod 600 /swap1
Подключить:
sudo swapon /swap1
Для автоматической загрузки добавить в /etc/fstab:
/swap1 swap swap defaults 0 0
Копирование диска
cat
Сразу сжимаем:
sudo cat /dev/sda1 | gzip >sda1.img
Обратная операция:
sudo zcat sda1.img >/dev/sdb1
dd
Копирование раздела/образа
sudo dd if=/dev/sda1 of=/dev/sdb1 bs=8M conv=noerror
Сразу сжимаем:
sudo dd if=/dev/sda1 bs=8M conv=noerror | gzip -c> sda1.dd.gz
Обратная операция:
gzip -dc sda1.dd.gz | dd of=/dev/sdb1 bs=8M conv=noerror
Сжимаем и отправляем на по ssh:
dd if=/dev/sda | gzip | ssh user@backup-host "dd of=book/sda.gz"
Обратная операция:
ssh user@backup-host "dd if=book/sda.gz" | gzip -d | dd of=/dev/sda
http://help.ubuntu.ru/wiki/backup
http://habrahabr.ru/post/233961/ - Копирование разделов жесткого диска
http://rudenko.net.ua/?p=195 - Резервирование жёсткого диска при помощи dd поверх ssh
Планировщик ввода-вывода
- NOOP
- Deadline
- CFQ
Посмотреть текущие значения:
grep -r " " /sys/block/sd*/queue/scheduler
Установить необходимое значение, например для диска sda планировщик deadline:
echo deadline > /sys/block/sda/queue/scheduler
Автоматическую установку режима можно сделать через udev. Создаем /etc/udev/rules.d/65-hdd-deadline.rules:
ACTION=="add|change", KERNEL=="sda", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"
http://blog.tataranovich.com/2014/05/deadline-scheduler-for-ssd.html - Включение планировщика DEADLINE для SSD дисков
http://serverfault.com/questions/463580/still-getting-aacraid-host-adapter-abort-request-errors-after-following-recomme - Still getting aacraid: Host adapter abort request errors after following recommended steps
RAM диск
tmpfs
tmpfs перемещает неиспользуемые страницы в swap
Создать диск 1GB:
mount -t tmpfs -o size=1G,mode=0700 tmpfs /ramdisk
Изменить размер диска:
mount -o remount,size=2G /ramdisk
ramfs
ramfs использует всю память
Создать диск:
mount -t ramfs -o mode=0700 ramfs /ramdisk
