Вопрос или проблема
У меня есть 2x Seagate Barracuda 1TB 1000GB 7200RPM 64MB SATA3
жестких диска на сервере с ubuntu 16.04 (Dell Poweredge 400SC
).
При копировании файлов с одного диска на другой с помощью rsync
я получаю скорость 25-30 Мб/с. Судя по тому, что я читал, я должен быть в состоянии достичь двойной скорости.
Как оптимизировать эту настройку, чтобы увеличить скорость передачи?
// lsblk
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 931G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 509M 0 part [SWAP]
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 20G 0 part
└─sdb2 8:18 0 910.5G 0 part /mnt
Я читал о включении DMA, но, похоже, я не могу сделать это в системе.
// hdparm -Tt /dev/sdb
/dev/sdb:
Время чтения из кэша: 1098 MB за 2.00 секунды = 548.31 MB/с
Время чтения с диска: 346 MB за 3.02 секунды = 114.69 MB/с
Попытка включить DMA на sdb
дает следующее.
// hdparm -d1 /dev/sdb
/dev/sdb:
установка using_dma на 1 (включено)
HDIO_SET_DMA не удалась: Неправильный ioctl для устройства
HDIO_GET_DMA не удалась: Неправильный ioctl для устройства
// hdparm -i /dev/sdb
/dev/sdb:
Модель=ST1000DM003-1SB102, RevFw=CC43, Серийный номер=Z9A4EEL4
Конфигурация={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=off
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=1953525168
IORDY=вкл/выкл, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
Режимы PIO: pio0 pio1 pio2 pio3 pio4
Режимы DMA: mdma0 mdma1 mdma2
Режимы UDMA: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: неизвестная настройка WriteCache=включено
Диск соответствует: неизвестно: ATA/ATAPI-4,5,6,7
// dmesg | grep SATA
[ 2.074207] ata3: SATA max UDMA/133 cmd 0xfe00 ctl 0xfe10 bmdma 0xfea0 irq 18
[ 2.080635] ata4: SATA max UDMA/133 cmd 0xfe20 ctl 0xfe30 bmdma 0xfea8 irq 18
// lspci
00:00.0 Хост-мост: Intel Corporation 82875P/E7210 Memory Controller Hub (rev 02)
00:01.0 PCI-мост: Intel Corporation 82875P Processor to AGP Controller (rev 02)
00:06.0 Системный периферийный контроллер: Intel Corporation 82875P/E7210 Processor to I/O Memory Interface (rev 02)
00:1d.0 USB контроллер: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
00:1d.1 USB контроллер: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
00:1d.2 USB контроллер: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02)
00:1d.3 USB контроллер: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02)
00:1d.7 USB контроллер: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
00:1e.0 PCI-мост: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA-мост: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
00:1f.1 IDE интерфейс: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
00:1f.2 IDE интерфейс: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
00:1f.5 Мультимедийный аудиоконтроллер: Intel Corporation 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (rev 02)
02:00.0 VGA совместимый контроллер: Advanced Micro Devices, Inc. [AMD/ATI] Rage XL PCI (rev 27)
02:0c.0 Ethernet контроллер: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
// Версия SATA
// smartctl -a /dev/sdb | grep SATA
Версия SATA: SATA 3.0, 6.0 Gb/s (текущая: 1.5 Gb/s)
Я представляю, что этот вопрос может вызвать множество различных ответов.
Первое, что приходит в голову, это сэкономить часть записей, отключив atime
. Это время последнего доступа к файлу, по умолчанию оно обычно установлено на relatime
, что лучше с точки зрения производительности, чем atime
. Но вы можете еще больше улучшить это, отключив полностью через опцию noatime
. Например:
$ grep noatime /etc/fstab
UUID=9b5e4b95-46b1-4f54-aa07-9de91e01cbf2 / ext4 rw,noatime,data=ordered 0 0
Ответ или решение
Увеличение скорости записи на жестких дисках (HDD) – важная задача для повышения общей производительности системы, особенно в средах, где требуется работа с большими объемами данных. Рассмотрим несколько подходов к оптимизации скорости записи на ваших жестких дисках Seagate Barracuda 1TB, установленных в сервере Ubuntu 16.04.
1. Аппаратные настройки
Проверка интерфейса SATA:
Ваши жесткие диски поддерживают SATA 3.0 (6.0 Gb/s), однако текущая скорость, согласно информации из smartctl
, составляет 1.5 Gb/s. Это означает, что диски работают на более низкой скорости, чем теоретически возможная. Убедитесь, что кабели SATA и SATA-контроллер, к которым подключены ваши диски, поддерживают SATA 3.0. Возможно, необходимо проверить сервер на модернизацию контроллера.
Обновление оборудования:
Если ваш сервер использует старый контроллер SATA, рассмотреть возможность замены его на более современный, который поддерживает более высокие скорости передачи данных.
2. Оптимизация настройки файловой системы
Деинсталляция atime
:
Как вы уже упомянули, отключение atime
– это хорошая практика. Это может уменьшить количество операций записи и, следовательно, улучшить производительность. Убедитесь, что в вашем файле /etc/fstab
для ваших разделов установлены параметры:
UUID=XXXX-XXXX-XXXX-XXXX / ext4 rw,noatime,data=ordered 0 0
3. Исполнение команд rsync
Параметры rsync
:
Оптимизируйте использование rsync
, например, используя параметр -z
для сжатия данных. Это может особенно помочь при передаче большого количества текстовых файлов.
rsync -az source/ destination/
Если вы работаете с большим количеством небольших файлов, рассмотрите использование параметра --inplace
, чтобы избежать создания временных файлов.
4. Настройка кэша записи
Включение кэша записи:
Убедитесь, что кэш записи на жестких дисках включен. Вы можете проверить и включить его с помощью команды hdparm
(если поддерживается на вашем контроллере):
hdparm -W1 /dev/sda
hdparm -W1 /dev/sdb
Важно: Будьте осторожны, так как отключение кэша (если это необходимо) может привести к потере данных в случае сбоя питания.
5. Операционная система и драйвера
Обновите ядро и драйвера:
Обратите внимание на то, что версии программного обеспечения (ядро, драйвера) могут повлиять на производительность. Проверьте наличие обновлений для Ubuntu и установите последние версии.
6. Использование режима ускоренной записи
Если ваш сервер поддерживает режимы работы с высокой производительностью, такие как режим "performance" в hdparm
, вы можете его активировать:
hdparm -A /dev/sda
hdparm -A /dev/sdb
При этом, обратите внимание на возможное снижение надежности при использовании этого параметра.
Заключение
Увеличение скорости записи на HDD может требовать комплексного подхода, включающего в себя аппаратные обновления, настройку системы и оптимизацию процессов. Помните, что результаты могут варьироваться в зависимости от конфигурации вашей системы и конкретных условий работы. Следуя вышеописанным рекомендациям, вы можете ожидать улучшения скорости передачи данных между вашим жесткими дисками.