28 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Markdown
		
	
	
| ---
 | ||
| title: Ограничение использования диска
 | ||
| description: 
 | ||
| published: true
 | ||
| date: 2024-08-09T07:39:28.081Z
 | ||
| tags: limit, disk
 | ||
| editor: markdown
 | ||
| dateCreated: 2024-08-09T07:39:28.081Z
 | ||
| ---
 | ||
| 
 | ||
| Стал регулярно сталкиваться с одной проблемой. Есть сервер с бюджетными SSD дисками. Они для многих задач вполне подходят, несмотря на низкую стоимость и скорость записи. Последнее как раз их узкое место. Но если у вас в основном с дисков чтение, то можно существенно экономить, используя десктопные диски. 
 | ||
| 
 | ||
| У меня как раз такой случай. Несколько виртуалок под веб сервера, где в основном чтение из кэшей на дисках. По производительности никаких нареканий, кроме одного момента. Когда дампишь для бэкапов базы данных, весь гипервизор начинает прилично тормозить, а в мониторинг сыпятся уведомления о медленном ответе веб сервера и увеличении отклика дисков. Обычно это происходит ночью и особых проблем не доставляет. Но тем не менее, решил это исправить. 
 | ||
| 
 | ||
| Самый простой способ в лоб - ограничить скорость пайпа, через который данные с mysqldump записываются в файл. По умолчанию всё читается и пишется параллельными потоками с одних и тех же SSD. Десктопные диски такой режим очень не любят и заметно тормозят при выполнении.
 | ||
| 
 | ||
| Я использовал утилиту pv:
 | ||
| ```
 | ||
| # apt install pv
 | ||
| # mysqldump --opt -v --single-transaction --databases db01 | pv -L 20m > /mnt/backup/db01.sql
 | ||
| ```
 | ||
| Ограничил скорость записи в 20 MiB/s через ключ -L. Для того, чтобы посмотреть текущую скорость записи, используйте pv без ограничения:
 | ||
| ```
 | ||
| # mysqldump --opt -v --single-transaction --databases db01 | pv > /mnt/backup/db01.sql
 | ||
| ............................
 | ||
|  1319MiB 0:00:06 [ 205MiB/s]
 | ||
| ```
 | ||
| Вообще pv интересная утилита. Стоит написать о ней отдельно. Если знаете ещё какие-то способы решения этой задачи, поделитесь в комментариях. Если дампишь сразу по сети, то можно скорость сетевой передачи ограничивать. А вот так, чтобы локально, больше ничего в голову не приходит. Разве что жать сразу на лету с сильной компрессией, чтобы медленно было. Но это как-то муторно подбирать подходящую скорость. |