Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Есть популярный миф, что у современных дисков настолько хороший сборщик мусора, что им не нужен TRIM.
Кстати, что бы сказал RAID контроллер на то, что во время очередной проверки дисков он бы увидел несовпадающие данные (RAID 1) или некорректную контрольную сумму (RAID 6), если сборщики мусора каждого диска будут работать каждый сам по себе?
что можно понять как не реализовано для NTFS. И вообще большие проблемы с этим подходом, ведь не NTFS единым…
Также есть слайды про DuraWrite, где про пользовательский раздел для over-provisioning сказано
Авторы из Kingston в своей статье, ссылку на которую я давал ранее, проводят грань между DuraWrite, Trim и Garbage Collection. DuraWrite – сжатие данных, Garbage Collection – высвобождение удаленных данных без Trim.
Kingston SSDs incorporating LSI® SandForce® controllers incorporate technology called DuraWrite® that performs data reduction; for the purposes of this paper, let’s equate DuraWrite to Data Compression. Most Client workloads (operating system files, Microsoft Outlook, documents, web browsing, security software, etc.) can be compressed, resulting in data reduction that shrinks the data’s footprint on the SSD. The smaller footprint translates to lower GC activity as fewer storage blocks need to be garbage collected when files are deleted and automatically increases the free space (over provisioning); both result in more stable and better GC performance.
This total process of recycling previously deleted garbage data into reusable free space is called Garbage Collection.
For the purpose of this document, we will call data deleted by the OS but still residing on the storage
device “garbage data”
Garbage Collection is often confused with the support of the TRIM command by Operating System (OS)
…
While TRIM commands help SSDs with Garbage Collection, we will show in our testing below that GC is much more than having TRIM enabled on a Client system. We will also show the worst-case scenario on a system where there is no TRIM support, demonstrating the KC300’s ability to efficiently conduct GC in the absence of TRIMs.
т. е. при каждом чтении виртуального сектора возвращаются разные данные.
DualWrite – сжатие данных, Garbage Collection – высвобождение данных без Trim.
Чтобы этого избежать, каждый диск сообщает, что он поддерживает Deterministic Trim
Цитаты в комментарии выше большей частью про работающий TRIM: в этом случае сборщику мусора нужно проделать меньше работы, если данные сжаты DuraWrite. Тест без TRIM довольно сомнительный, особенно без указаний, какие файловые системы поддерживаются контроллером.
Я бы очень хотел верить, что какие-то диски сами анализируют файловую систему и очищают мусор, и вообще не заморачиваться с другими методами
SandForce DuraWrite
Пока мы видим только один путь, которым физическая страница...
# lsblk -D
# dd if=/dev/urandom of=tempfile bs=1M count=3
# hdparm --fibmap tempfile
# hdparm --read-sector [ADDRESS] /dev/sda
# rm tempfile && sync && sleep 120
# hdparm --read-sector [ADDRESS] /dev/sda
NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sda 0 512B 2G 0
├─sda1 0 512B 2G 0
├─sda2 0 512B 2G 0
└─sda3 0 512B 2G 0
sdb 0 0B 0B 0
├─sdb1 0 0B 0B 0
└─sdb2 0 0B 0B 0
sdc 0 0B 0B 0
└─sdc1 0 0B 0B 0
# / was on /dev/sda2 during installation
UUID=9095f1b8-bd34-4335-bc4c-332975e18192 / ext4 errors=remount-ro 0 1
# /home was on /dev/sda3 during installation
UUID=a8778b8f-38bc-4e47-a1d2-3052c43ddc2c /home ext4 defaults 0 2
# swap was on /dev/sda1 during installation
UUID=72836eaa-8221-452b-b4b4-377d30b2aa5d none swap sw 0 0
# grep -i discard /etc/fstab
# mount | grep -i discard
#!/bin/sh
# trim all mounted file systems which support it
/sbin/fstrim --all || true
Колонки DISC-GRAN и DISC-MAX обе должны быть больше 0 для всех участвующих компонентов.?
если диск подключен по USB (ограничение протокола),
hdparm -I), которая может быть использована для передачи диску ATA TRIM. Но ОС часто не умеет так делать, а общается с диском как с SCSI устройством (посылает UNMAP). В этом случае можно посылать TRIM самостоятельно программно, например, при помощи hdparm --trim-sectors.# sysctl -a | grep -i 'zfs.*trim'
gstat -d
колонка «d/s» — BIO_DELETE/second.настоятельная рекомендация про необходимость 10-15% свободного места на SSD
точный объём «микросхем флеш-памяти» не равен заявленному, а больше. Так же, резервная область диска вообще не может использоваться, кроме как для замены «сбойных участков»
$ sudo dmraid -r
/dev/sdd: isw, "isw_cjcaidejcb", GROUP, ok, 500118190 sectors, data@ 0
/dev/sdc: isw, "isw_cjcaidejcb", GROUP, ok, 500118190 sectors, data@ 0
$ sudo hdparm -I /dev/sdc | grep TRIM
* Data Set Management TRIM supported (limit 8 blocks)
$ sudo hdparm -I /dev/sdd | grep TRIM
* Data Set Management TRIM supported (limit 8 blocks)
$ sudo fstrim -v /
/: 9 MiB (9441280 bytes) trimmed
$ sudo fstrim -v /
/: 96,4 MiB (101044224 bytes) trimmed
$ sudo fstrim -v /
/: 0 B (0 bytes) trimmed
Я создаю раздел в 80 гигабайт и забиваю его данными. После этого я все их удаляю и заливаю ещё 30 гигов.
В случае рейда надо оставлять область не размеченной каким методом: не включать в рейд или можно уже внутри рэйда создавать партицию на часть диска?
Почему по мере заполнения SSD падает скорость записи в RAID, или зачем нужен TRIM