LINUX.ORG.RU

samsund ssd and ext4 TRIM

 , , ,


0

1

Приветствую. прикупил себе ssd от самсунга но на нем почему-то не зоводится TRIM.Собственно в качестве системы стоит xubuntu 13.10

/dev/sda2 on / type ext4 (rw,nodiratime,relatime,discard,errors=remount-ro,commit=600)
/dev/sda1 on /boot type ext4 (rw,nodiratime,relatime,discard,errors=remount-ro,commit=600)
/dev/sda3 on /home type ext4 (rw,nodiratime,relatime,discard,errors=remount-ro,commit=600)
/dev/sda:

ATA device, with non-removable media
	Model Number:       Samsung SSD 840 EVO 120GB               
	Serial Number:      S1D5NSAD999458V     
	Firmware Revision:  EXT0AB0Q
	Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
	Used: unknown (minor revision code 0x0039) 
	Supported: 9 8 7 6 5 
	Likely used: 9
Configuration:
	Logical		max	current
	cylinders	16383	16383
	heads		16	16
	sectors/track	63	63
	--
	CHS current addressable sectors:   16514064
	LBA    user addressable sectors:  234441648
	LBA48  user addressable sectors:  234441648
	Logical  Sector size:                   512 bytes
	Physical Sector size:                   512 bytes
	Logical Sector-0 offset:                  0 bytes
	device size with M = 1024*1024:      114473 MBytes
	device size with M = 1000*1000:      120034 MBytes (120 GB)
	cache/buffer size  = unknown
	Nominal Media Rotation Rate: Solid State Device
Capabilities:
	LBA, IORDY(can be disabled)
	Queue depth: 32
	Standby timer values: spec'd by Standard, no device specific minimum
	R/W multiple sector transfer: Max = 16	Current = 16
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 
	     Cycle time: min=120ns recommended=120ns
	PIO: pio0 pio1 pio2 pio3 pio4 
	     Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
	Enabled	Supported:
	   *	SMART feature set
	    	Security Mode feature set
	   *	Power Management feature set
	   *	Write cache
	   *	Look-ahead
	   *	Host Protected Area feature set
	   *	WRITE_BUFFER command
	   *	READ_BUFFER command
	   *	NOP cmd
	   *	DOWNLOAD_MICROCODE
	    	SET_MAX security extension
	   *	48-bit Address feature set
	   *	Device Configuration Overlay feature set
	   *	Mandatory FLUSH_CACHE
	   *	FLUSH_CACHE_EXT
	   *	SMART error logging
	   *	SMART self-test
	   *	General Purpose Logging feature set
	   *	WRITE_{DMA|MULTIPLE}_FUA_EXT
	   *	64-bit World wide name
	    	Write-Read-Verify feature set
	   *	WRITE_UNCORRECTABLE_EXT command
	   *	{READ,WRITE}_DMA_EXT_GPL commands
	   *	Segmented DOWNLOAD_MICROCODE
	   *	Gen1 signaling speed (1.5Gb/s)
	   *	Gen2 signaling speed (3.0Gb/s)
	   *	Gen3 signaling speed (6.0Gb/s)
	   *	Native Command Queueing (NCQ)
	   *	Phy event counters
	   *	READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
	   *	DMA Setup Auto-Activate optimization
	   *	Device-initiated interface power management
	   *	Asynchronous notification (eg. media change)
	   *	Software settings preservation
	   *	SMART Command Transport (SCT) feature set
	   *	SCT Write Same (AC2)
	   *	SCT Error Recovery Control (AC3)
	   *	SCT Features Control (AC4)
	   *	SCT Data Tables (AC5)
	   *	reserved 69[4]
	   *	DOWNLOAD MICROCODE DMA command
	   *	SET MAX SETPASSWORD/UNLOCK DMA commands
	   *	WRITE BUFFER DMA command
	   *	READ BUFFER DMA command
	   *	Data Set Management TRIM supported (limit 8 blocks)
Security: 
	Master password revision code = 65534
		supported
	not	enabled
	not	locked
	not	frozen
	not	expired: security count
		supported: enhanced erase
	2min for SECURITY ERASE UNIT. 8min for ENHANCED SECURITY ERASE UNIT. 
Logical Unit WWN Device Identifier: 50025388a0037745
	NAA		: 5
	IEEE OUI	: 002538
	Unique ID	: 8a0037745
Checksum: correct

Диск /dev/sda: 120.0 Гб, 120034123776 байт
255 головок, 63 секторов/треков, 14593 цилиндров, всего 234441648 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00042119

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *          63     4209029     2104483+  83  Linux
/dev/sda2         4209030    88099654    41945312+  83  Linux
/dev/sda3        88100460   234436544    73168042+  83  Linux

Ответ на: комментарий от Gotf

http://habrahabr.ru/post/129551/

1. dd if=/dev/urandom of=tempfile count=10 bs=512k oflag=direct //запись 5Мб рандомных данных

2. hdparm --fibmap tempfile //Ищем любой стартовый LBA адрес у файла

3. hdparm --read-sector [ADDRESS] /dev/sdX //Читаем данные со стартового LBA адреса файла, замените [ADDRESS] на свой Starting LBA address из вывода предыдущей команды

4. rm tempfile //Теперь удалим временный файл и синхронизируем ФС: 5. sync

Повторяем пункт 3 — и смотрим на вывод консоли. Если выведутся нули — то трим работает

tux-eda ()
Последнее исправление: tux-eda (всего исправлений: 2)
Ответ на: комментарий от tux-eda

http://habrahabr.ru/post/129551/

По ссылке тлен и безысходность.

стартовый LBA

Кто тебе сказал, что файл запишется последовательно?

Создай небольшую ФС, заполни её чем-нибудь, удали всё, считай занятое ФС место с помощью dd. Это примерно то же, но надёжнее.

Gotf ★★★ ()
Ответ на: комментарий от Gotf

Создай небольшую ФС, заполни её чем-нибудь, удали всё, считай занятое ФС место с помощью dd. Это примерно то же, но надёжнее.

каким образом удалить?

tux-eda ()
Ответ на: комментарий от tux-eda

rm. После можно сделать fstrim. Собственно, если fstrim работает без ошибок, то это значит, что TRIM работает. Ещё можно посмотреть вывод lsblk -D.

Gotf ★★★ ()
Ответ на: комментарий от Gotf

хм.собственно самый главный вопрос,как работает fstrim

wcdone@netbook:~$ dd if=/dev/urandom of=tempfile count=10 bs=512k oflag=direct
10+0 записей получено
10+0 записей отправлено
скопировано 5242880 байт (5,2 MB), 1,47811 c, 3,5 MB/c
wcdone@netbook:~$ sync
wcdone@netbook:~$ sudo fstrim -v /
/: 0 bytes were trimmed
wcdone@netbook:~$ rm tempfile 
wcdone@netbook:~$ sync
wcdone@netbook:~$ sudo fstrim -v /
/: 0 bytes were trimmed
wcdone@netbook:~$ sudo fstrim -v /home/
/home/: 0 bytes were trimmed

но до этого запустил и

sudo fstrim -v /
[sudo] password for wcdone: 
/: 37296001024 bytes were trimmed
netbook% sudo fstrim -v /home 
/home: 0 bytes were trimmed

tux-eda ()

discard The file system will be mounted with the discard mount option. This will cause the file system driver to attempt to use the trim/discard feature of some storage devices (such as SSD's and thin-provisioned drives available in some enterprise storage arrays) to inform the storage device that blocks belonging to deleted files can be reused for other purposes. (This option is currently only supported by the ext4 file system driver in 2.6.35+ kernels.)

darkenshvein ★★★★★ ()
Ответ на: комментарий от darkenshvein

discard для современных ssd скорее вреден, чем полезен, т.к. достаточно дорогая операция, да и сборщики мусора сейчас есть практически на любом SSD. Лучше раз в день fstrim запускать по крону.

Lindows ()
Ответ на: комментарий от Lindows

discard для современных ssd скорее вреден, чем полезен

пилять, один полудурок запостил в бложик херню, и всё, пошло гулять по интернетам

anonymous ()
Ответ на: комментарий от anonymous

Ну а в чем они неправы? Все же правильно написано.

onon ★★★ ()
Ответ на: комментарий от darkenshvein

вообще-то он опцией монтирования включается.

megabaks ★★★★ ()
Ответ на: комментарий от x905

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

но на всякий случай для Ъ:

discard позволяет при удалении файла сообщить диску, что блоки, которые он занимал теперь свободны(а это дополнительное I/O), если discard не включен, то диск конечно об этом не узнает, и данные там останутся, но как только мы попытаемся записать другой файл на файловую систему, и его часть будет попадать на блоки диска, где был удаленный файл, ssd в этом случае запишет данные в другие свободные блоки, а старые блоки будут помечены на очистку GC. Таким образом если на SSD достаточно места, то опция discard не нужна.

Lindows ()
Ответ на: комментарий от Lindows

gc будет двигать и удаленные данные т.к.диск не знает (если ему не послать trim), что блок свободен (потому без trim растет wa)
другой вопрос - насколько оно лучше или хуже (без trim, и рост wa) - требует более подробных тестов и наблюдений за системой (конечно и от производителя диска зависит)

x905 ★★★★★ ()
Ответ на: комментарий от x905

gc будет двигать и удаленные данные т.к.диск не знает (если >ему не послать trim), что блок свободен (потому без trim >растет wa)

Эм? диск узнает о том, что в блоке удаленные данные как только ему скажут туда что-то записать.

sda: ssd на 128гб; sda1: 40 гб, корень; sda2: остальное, пустой раздел

selenium ~ # fdisk -l /dev/sda
Disk /dev/sda: 128.0 GB, 128035676160 bytes, 250069680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x557b0d51

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1            2048    83888127    41943040   83  Linux
/dev/sda2        83888128   250069679    83090776   83  Linux

selenium ~ # mount | grep sda1
/dev/sda1 on / type ext4 (rw,relatime,data=ordered)

selenium ~ # df -h
Файловая система Размер Использовано  Дост Использовано% Cмонтировано в
/dev/sda1           40G          28G  9,9G           74% /

создадим файл размером в 9.5гб, удалим его, а потом создаим опять :

selenium ~ # dd if=/dev/zero of=/b bs=1M count=9500 oflag=direct
9500+0 записей получено
9500+0 записей отправлено
 скопировано 9961472000 байт (10 GB), 43,1234 c, 231 MB/c
selenium ~ # rm /b
selenium ~ # dd if=/dev/zero of=/b bs=1M count=9500 oflag=direct
9500+0 записей получено
9500+0 записей отправлено
 скопировано 9961472000 байт (10 GB), 43,1417 c, 231 MB/c

скорость одинаковая, т.к. второй раз файл был записан в совершенно другие блоки на SSD.

Lindows ()
Ответ на: комментарий от Lindows

таким образом если фс вдруг запишет новый файл не на место старого, то блоки от старого будут висеть мертвым грузом.

onon ★★★ ()
Последнее исправление: onon (всего исправлений: 1)
Ответ на: комментарий от Lindows

Эм? диск узнает о том, что в блоке удаленные данные как только ему скажут туда что-то записать

да, недодумал

если ты пользующийся fstrim по крону - как быстро она выполняется ?
также интересно как быстро отработает fstrim по всему диску

x905 ★★★★★ ()
Ответ на: комментарий от megabaks

собственно самый главный вопрос,почему trim не рааботает. вроде как опция при монтировании есть,ядрышко свежее,диск вроде как поддерживает руками запусткаю fstrim,выполняется без ошибок

cast megabaks

tux-eda ()
Ответ на: комментарий от tux-eda

trim отрабатывает далеко не сразу после удаления файла.
у меня вот ему нужно довольно много времени - хотя может мешает ещё и фоновый сборщик мусора, который по чём зря дергает винт

megabaks ★★★★ ()
Ответ на: комментарий от onon

таким образом если фс вдруг запишет новый файл не на место старого, то блоки от старого будут висеть мертвым грузом.

Это, в принципе, не имеет значения, покрайней мере до тех пор, пока у нас есть свободное место на диске. Плюс выше я говорил о запуске fstrim по крону раз в день, это полностью решает проблему и это куда лучше, чем на каждое удаление слать ata_trim.

Lindows ()
Последнее исправление: Lindows (всего исправлений: 1)
Ответ на: комментарий от x905

Тут зависит от реализации в SSD, в современных оно выполняется достаточно быстро, т.к. ata_trim по сути просто помечает ненужные блоки для GC. На старых SSD ata_trim вызывает непосредственное удаление данных, так что это может занять даже больше 10 минут.

Lindows ()
Ответ на: комментарий от Lindows

ничем не лучше.
наоборот же - там автомат, а тут ручник.
хватит уже отмазываться

megabaks ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.