2024. április 16., kedd

Gyorskeresés

-update- NVMe SSD - Linux mankó - smart management (align, TRIM, heat...)

Írta: | Kulcsszavak: NVMe SSD PCIe TRIM Linux

[ ÚJ BEJEGYZÉS ]

Amit már tudunk:
A SATA csatolós SSD-ket már majd mindenki megtanulta ellenőrizni, optimalizálni és jelenleg már ezek szükségtelenné is váltak, mivel gyakorlatilag a desktop Linux disztrók alapból tökéletesen kezelik ezt a meghajtó fajtát is! A Linuxok egy része ütemezett TRIM-et hajt végre default heti fstrim futtatásával(Ubuntu és deratívái), más disztrók default az FSTAB-ban tartalmazzák a discard opciót, ami online TRIM-melést hajt végre(Arch és klónjai). Átlag felhasználónak gyakorlatilag mindegy melyik fut, valamelyik fusson és akkor működik a TRIM végrehajtása az eszközünkön.

Amit még nem tudunk: :N
Ami miatt mégis külön írást szentelek a témának külön és nem az eredeti SSD - Linuxon blogba szúrom be kiegészítésként e témát, az az, hogy egyre elterjedtebb a felhasználók körében az NVME protokolos SSD meghajtó. Árban alig van eltérés és igen kecsegtetően hangzik az 550MB/s helyett a 3000MB/s sebesség. :Y Az nem eme írás témája, hogy emiatt a felhasználók 95%-a teljesen értelmetlenül veszi a gyorsabb SSD-ket, mert nem gyorsabb a SATA SSD-nél. Szekvenciálisan nyilván jóval gyorsabb, de átlag használat során ennek jelentősége igen csekély, az access time a lényeg!
Megy kicsit a parasztvakítás a PCIe 4.0 csatolós NVMe eszközök ajánlásával is, pedig még egy DRAM cacheless NVMe SSD PCIe 3.0 is lehet akár gyorsabb is, mint egy belépő PCIe 4.0. :K

Akit ez mélyebben érdekel, olvashat erről bővebben Archwiki-n akár és itt is hozzá lehet szólni...

A lényeg! Kell-e ellenőrizni az NVME SSD-ket, ha Linuxot használunk? :F Lehet, de felesleges!

Ha ennek ellenére szeretnél pár dolgot managelni, ellenőrizni....

Alignálás ellenőrzése

Végrehajtható ugyan, de a mai operációs rendszerek a meghajtókat tökéletesen alignálják, a Windows XP-nél volt még nem megfelelően beállítva a kezdő sector, de gyanítom NVME SSD-t senki nem XP-vel telepítette először.

Ha mégis ellenőrizni szeretnénk az align helyzetét:

A terminalba beírod a sudo parted /dev/nvme0n1p2 parancsot, Enter, jelszó, meghajtó betűjelére* odafigyelve!
(* ennek pontos beazonosításában a sudo fdisk -l és a lsblk parancs segít)

egy példa

ubyegon@ubyegon-AB350M-Gaming-3:~$ sudo fdisk -l
Disk /dev/nvme0n1: 931,51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 980 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 16384 bytes / 131072 bytes
Disklabel type: gpt
Disk identifier: E67B232E-7A45-4979-CDC4-45036D3B46EX

Eszköz Start Vége Szektorok Size Típus
/dev/nvme0n1p1 4096 2101751 2097656 1G EFI System
/dev/nvme0n1p2 2105344 84912127 82806784 39,5G Linux filesystem
/dev/nvme0n1p3 84912128 168798206 83886079 40G Linux filesystem
/dev/nvme0n1p4 168798208 252684287 83886080 40G Linux filesystem
/dev/nvme0n1p5 252684288 336570367 83886080 40G Linux filesystem
ubyegon@ubyegon-AB350M-Gaming-3:~$

Példánkból látható, hogy az NVMe SSD device megjelenítése a SATA-s SSD-től eltérően nem, dev/sda, hanem dev/nvme0n1p2-ként fog megjelenni a parancs kimenetében, ahol a nvme0n1 jelöli magát az eszközt, a sor végén a p2 pedig a partició sorszámát.

Akkor lássuk az align helyességének megállapítására vonatkozó parancs kimenetet:

hasonló kimenet jelenik meg:
ubyegon@ubyegon-AB350M-Gaming-3:~$ sudo parted /dev/nvme0n1
[sudo] ubyegon jelszava:
GNU Parted 3.4
/dev/nvme0n1 használatával
Üdvözli a GNU Parted! Írja be a 'help' szót a parancsok listájának megnézéséhez.
(parted)

Nyomj kis p-t és a kimenet már tartalmazza is a partíciók adatait:
ubyegon@ubyegon-AB350M-Gaming-3:~$ sudo parted /dev/nvme0n1
[sudo] ubyegon jelszava:
GNU Parted 3.4
/dev/nvme0n1 használatával
Üdvözli a GNU Parted! Írja be a 'help' szót a parancsok listájának megnézéséhez.
(parted) p
Típus: Samsung SSD 980 1TB (nvme)
/dev/nvme0n1 lemez: 1000GB
Szektorméret (logikai/fizikai): 512B/512B
Partíciós tábla: gpt
Lemezjelzők:

Szám Kezdet Vég Méret Fájlrendszer Név Jelzők
1 2097kB 1076MB 1074MB fat32 boot, esp
2 1078MB 43,5GB 42,4GB ext4
3 43,5GB 86,4GB 42,9GB ext4
4 86,4GB 129GB 42,9GB ext4
5 129GB 172GB 42,9GB ext4

(parted)

Az utolsó sornál beírod a align-check parancsot

(parted) align-check
alignment type(min/opt) [optimal]/minimal?

Itt nyomsz egy o vagy m betűt

alignment type(min/opt) [optimal]/minimal? o
Partition number?

Partition number-hez pedig beírod a fenti kimenetek megfelelő számát

(parted) align-check
igazítás típusa (min/opt) [optimal]/minimal? o
A partíció száma? 2
2 igazítva
(parted)
quit

Ha a szám mellé kiírja, hogy aligned/igazítva, akkor minden OK! Sajna minden partíciónál külön-külön be kell írni az align-check parancsot és az o vagy m betűt, mielőtt a következő számot beírod.

TRIM ellenőrzése

Míg a SATA SSD-nél ez a legfontosabb ellenőrzés volt, NVME SSD esetén értelmetlenné vált, ugyanis a hagyományos TRIM, discard végrehajtását egy P/ATA utasításkészlet biztosította, ez értelemszerűen az NVME SSD-re nincs semmilyen hatással.

Hogyan tudjuk ellenőrizni mégis, hogy működik-e NVME SSD-nél a TRIM-elés? Meghökkentő módszert ismertetek most veletek:

- ellenőrizni kell, hogy az NVME SSD működik-e!

Fut rajta az oprendszer, és/vagy működik a r/w a tárolásra használt SSD?

Ha a válasz igen, akkor a TRIM is rendben van. :K

Az eszköz saját Dataset Management parancskészlete, pontosabban annak deallocate utasítása folyamatosan hajtja végre a TRIM-nek megfelelő műveletet adatmozgatás közben, quasi online TRIM-melést végez.

NVM Express
The NVM Express command set has a generic Dataset Management command, for hinting the host's intent to the storage device on a set of block ranges. One of its operations, deallocate performs trim. It also has a Write Zeroes command that provides a deallocate hint and allows the disk to trim and return zeroes.
forrás

Amit viszont mégis meg kell tennünk!

Inaktiváljuk a jó öreg libata-t és mindent, ami SATA-s SSD esetén TRIM szempontjából szükséges volt, most ügyesen inaktiváljuk!

- ha az FSTAB tartalmazza a discard kernel paramétert, azt abból töröljük!
- ha a systemd services-ek között ütemezve aktív az fstrim*, az inaktiváljuk!
*(ez sok vizet nem zavar amúgy, viszont abban az esetben, ha két külön csatolással ellátott SSD-nk van a gépben, akkor mindenképpen hagyjuk aktívan) :R májkimiki

Itt is érdemes lehet átnézni, amit az NVMe TRIM-mel kapcsolatban írnak...nyilván elég ellentmondásos lesz a végeredmény...

NVME SSD hőmérsékletének ellenőrzése

ha az alábbi blog megszünne, inkább leírok pér példát:
https://www.namhuy.net/212/how-to-check-nvme-ssd-temperature-in-linux

nvme-cli parancs segítségével:

To install nvme-cli on Ubuntu distributions

$ sudo apt install nvme-cli

To install nvme-cli on Fedora

$ sudo dnf install nvme-cli

Kilistázhatjuk az eszközünkben található NVME SSD-inket:

$ sudo nvme list
(innen nyerjük ki az NVME eszközünk megnevezését, amit szükséges a terminal parancsba beillesztenünk)

a parancs kimenete:

ubyegon@ubyegon-AB350M-Gaming-3:~$ sudo nvme list
[sudo] ubyegon jelszava:
Node SN Model Namespace Usage Format FW Rev
--------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S649NL0TB48610V Samsung SSD 980 1TB 1 93,87 GB / 1,00 TB 512 B + 0 B 2B4QFXO7

futtassuk az alábbi terminal parancsot:

$ sudo nvme smart-log /dev/nvme0n1

a parancs kimenete:

ubyegon@ubyegon-AB350M-Gaming-3:~$ sudo nvme smart-log /dev/nvme0n1
Smart Log for NVME device:nvme0n1 namespace-id:ffffffff
critical_warning : 0
temperature : 44 C (317 Kelvin)
available_spare : 100%
available_spare_threshold : 10%
percentage_used : 0%
endurance group critical warning summary: 0
data_units_read : 496.047
data_units_written : 665.793
host_read_commands : 15.505.711
host_write_commands : 14.564.735
controller_busy_time : 5
power_cycles : 30
power_on_hours : 7
unsafe_shutdowns : 3
media_errors : 0
num_err_log_entries : 0
Warning Temperature Time : 5
Critical Composite Temperature Time : 0
Temperature Sensor 1 : 44 C (317 Kelvin)
Temperature Sensor 2 : 51 C (324 Kelvin)
Thermal Management T1 Trans Count : 0
Thermal Management T2 Trans Count : 428
Thermal Management T1 Total Time : 0
Thermal Management T2 Total Time : 266
ubyegon@ubyegon-AB350M-Gaming-3:~$

Checking NVME SSD temperature with smartmontools

To install smartmontools in Ubuntu distributions
$ sudo apt install smartmontools

To install smartmontools in Fedora
$ sudo dnf install smartmontools

futtassuk az alábbi terminal parancsot:

$ sudo smartctl -A /dev/nvme0n1

a parancs kimenete:

ubyegon@ubyegon-AB350M-Gaming-3:~$ sudo smartctl -A /dev/nvme0n1
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-69-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 44 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 0%
Data Units Read: 496.049 [253 GB]
Data Units Written: 665.855 [340 GB]
Host Read Commands: 15.505.721
Host Write Commands: 14.565.768
Controller Busy Time: 5
Power Cycles: 30
Power On Hours: 7
Unsafe Shutdowns: 3
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 5
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 44 Celsius
Temperature Sensor 2: 52 Celsius
Thermal Temp. 2 Transition Count: 428
Thermal Temp. 2 Total Time: 266

Az nvme-cli device management hivatalos leirása:

https://nvmexpress.org/open-source-nvme-ssd-management-utility-nvme-command-line-interface-nvme-cli/

További smart adatokat, secure erase, firmware update, memory cell erase, etc., infókat az alábbi linken találtok:

https://wiki.archlinux.org/title/Solid_state_drive/NVMe

Az FSTAB és a systemd-services szerkesztéséhez a Kezdő Linuxos topikban találtok helpet.

**************************************************************************************

Ha valakit mélyebben érdekel, a kernelbe 2012-ben már bekerült a linux-nvme

Hozzászólások

(#1) ubyegon2


ubyegon2
nagyúr

Úgy látom ell kell oszlatni ténybeli tévedéseket, így gyorsan összedobtam ezt a blogot a SATA-s SSD-k Linuxos blogtól elkülönítve. Még pofozgatni kell, kiegészítéseket, magyarázatokat belerakni, de a lényeg már benne van.

Aki e témában jártasabb nálam, megköszönnénk, ha jelezne minden szükséges kiegészítést, módosítás szükségességét, etc.

Frawly komát külön megidézem, hogy segítsen, mivel igen nagy tudója a témának! :R [link]

röviden, NVME SSD TRIM működésének ellenőrzése

-működik-e az SSD?

-Igen - ebben az esetben a TRIM-melés működik
-Nem - ebben az esetben a TRIM-melés nem működik

;)

[ Szerkesztve ]

(#3) ubyegon2 válasza #20749568 (#2) üzenetére


ubyegon2
nagyúr

Katonás nyelvezetben mondva, ne értse, hajtsa végre!

Eggyel több vagy kevesebb Linuxos téma, amit nem értesz.....nem tök mindegy. Én is hasonlóképpen vagyok ezekkel. :D

Hajnalban nem voltam képes felébredni és pont olvastam a Kezdőben a vonatkozó kérdést, gondoltam egy lendülettel írok egy hsz-t és talán fel is ébredek. Aztán blog lett inkább, mert ez az a téma, amit megblogolhatok, annyira nem érti senki, hogy nem kezdenek el egyből kötekedni velem.

Próbáld csak ki, ahhoz, hogy beleskössön valaki, ugyanúgy utána kéne olvasnia, mint nekem. :K

Amúgy meg legtöbb népek magához az SSD-hez sík dinnyék, ha ez megnyugtat. Főleg az M.2 okoz sok fejfájást, mivel az kétféle protokollal is létezik. No meg az NVME, itt aztán valóban tetten érhető, mekkora fosztogatást tudnak aranyköntösbe bújtatni a markecingesek. Főleg a Samsungnál, ilyen 970 Pro meg hasonló SSD-vel, ami tényleg piszok jó és gyors, no de annyiért?

[ Szerkesztve ]

(#4) Frawly válasza ubyegon2 (#3) üzenetére


Frawly
veterán

Alapvetően jó cikk, alaposan össze vannak hozzá válogatva a háttérinformációk. Látszik, hogy a kutatómunka rendesen bele lett téve.

Kisebb dolgokat írtam volna csak máshogy. Ez az align check működik, de elég bonyolultnak tűnik, nehezen követhető még annak is, aki behatóan ismeri a témát. Helyette lehet elég lenne az fdisk -l, és megnézni kézzel leosztva, hogy mivel oszthatók a partíciók kezdő szektorai, 512 bájtos logikai szektoroknál min. 8 szektorral kell oszthatónak lennie (4 KiB-os alignálás, de ez lehet nem elég minden SSD-n), megnyugtatóbb, ha legalább 32 szektorral osztható (16 KiB-os alignálás), de alapesetben 2048-cal is osztható szokott lenni (1 MiB-os alignálás), elég meglepő lenne, ha nem utóbbival lenne osztható. Modern OS-ekben, főleg Linuxoknál évek óta alap, hogy a particionálóprogramok és telepítők 1 MiB-tal csinálják a partíciók eltolását default, már sok éve ez az iparági sztenderd nem csak SSD-ken, hanem HDD-ken is.

A másik, hogy a discard az szerintem nem kernelparaméter, hanem mount paraméter, bár kicsit bizonytalan vagyok, hogy mégis a kernelnek is szól. Mindenesetre ezek a mount parancs paraméterei hivatalosan, így csak paramétereknek hívnám.

A harmadik, hogy a fstrim systemd service-t valóban érdemes letiltani, de nem azért, mert kárt okozna, mert úgyis hatástalan lesz NVMe-n, hanem csak hogy ne próbáljon lefutogatni rendszeresen a semmiért.

A negyedik dolog, hogy abban nem vagyok biztos, hogy az fstab-ban a discard paramétert törölni kéne. Legrosszabb esetben akár kellhet is, de ha nem is kell, kárt nem csinál. Megmondom őszintén, hogy ebben a kérdésben bizonytalan vagyok, mélyebben utána kéne néznem. Így lényegében nem is kötnék bele. Sanszosabb, hogy tényleg nem kell, mert nem csinál semmit NVMe-n, de ki tudja.

M.2-es SSD-ből 3 féle is van egyébként. M.2 SATA, M.2 PCIe AHCI, és M.2 PCIe NVMe. Persze az PCIe AHCI-t már nem gyártanak, a legutolsó a Samsung 950-es volt, ami támogatta, így gyakorlati jelentősége nincs ma már. Amelyik lap, gép kezel M.2 PCIe-t, az viszi az NVMe-t. Ha meg csak M.2 SATA-t támogató csatlakozóról van szó, akkor meg megint irreleváns, hogy M.2 PCIe-n belül milyen SSD kerül bele, mert nem fogja támogatni.

A Samsung 970 Pro igaz, hogy drága, de mivel a legjobb Flash NAND alapú konzumer SSD a piacon jó ideje, így annyit kérnek el érte, amennyit nem szégyellnek. Egy korlát van, az Intel Optane áráig nem mehetnek el, mert az jobb náluk, meg a szerverekbe szánt SLC SSD-k árszintjéig, de mindenki mást vernek, még a nemrég kijött PCIe 4.0-ás SSD-ket is (Aorus Gen4, Corsair MP600). Persze a legtöbb felhasználónak overkill a 970 Pro, de még az EVO és EVO Plus is, ha nem hajtja ki megfelelő géppel és speciális szoftverrel.

(#5) ubyegon2 válasza Frawly (#4) üzenetére


ubyegon2
nagyúr

Köszi, azt is külön, hogy átnézted! :R Kora hajnalban írtam le ezeket, mert láttam, milyen sokan belefutnak ebbe és én már sokat olvastam az SSD-s topikokban tőletek a témáról. Majd még átmegyek rajta és a részleteket meg amiket írtál szépen értelmezhetőbbé próbálom tenni.
(egyébként tényleg nem kellett kutatnom, mivel az állt össze a fejemben, amit főleg Te írtál le már rengetegszer a szaktopikokban, így azért nem volt nehéz)

A harmadik, hogy a fstrim systemd service-t valóban érdemes letiltani, de nem azért, mert kárt okozna, mert úgyis hatástalan lesz NVMe-n, hanem csak hogy ne próbáljon lefutogatni rendszeresen a semmiért.

Erre gondoltam én is, hogy minek fusson még egy service, ha nincs értelme, de mint írta a kolléga, lehet vegyes felállás is a gépben, akkor jó ha megmarad.

A mount paraméter valóban jogos a discard-nál. :K

A discard opció kicsit zavaros nekem is, ugyan az archwiki írja, hogy semmiképp ne hagyjuk benn, de ezt már máshol is írták régebben is. Bizonyos felhasználási módoknál nem jó, de NVME meg pont az ilyen felhasználási módra lenne jó.

Na majd ha átfésülgetem, rádírok és újra átfutod, jobb ha szagértő szem is látja, ne maradjon tárgyi tévedés benne. Köszi előre is! :R

Szerencsére az elején van a hsz-ed, így aki az írást átbogarássza, az látja ezt is. ;)

Amúgy minap láttam az M.2-es csatlakozóval foglalkozó hsz-eket, tényleg nem egyszerű, főleg annak, aki totál laikus.

[ Szerkesztve ]

(#6) Frawly válasza ubyegon2 (#5) üzenetére


Frawly
veterán

Az M.2 téma nagyon megtévesztő még annak is, aki ért hozzá. Sokan beleesnek abba a hibába is, hogy a bevágást nézik az M.2 SSD-ken, meg az M.2 csatlakozókon, aztán még jobban belezavarodnak ebbe a B, M, B+M bevágásos mókába, ami nem hogy segítene, de még jobban kaotikussá teszi az egészet, mert csak a bevágás alapján nem lehet eldönteni, hogy milyen SSD kell az adott csatlakozóba.

Ha a discard-ra az Arch Wiki azt írja, hogy ki kell venni, akkor legyen, nekik elhiszem. Az fstrim tényleg nem probléma, mert ha le is fut feleslegesen, nem emészt fel sok erőforrást, azonnal leáll hibával, maximum csak produkál 1-2 fura bejegyzést valami logban, hogy az eszköz nem támogatja a TRIM-et.

[ Szerkesztve ]

(#7) ubyegon2


ubyegon2
nagyúr

Kis ráncfelvarráson és tartalmi bővítésen esett át az NVMe Linux management blog, ha átnézitek és jelzitek, ha valami nem érthető vagy hiba (szintaktikai vagy elírás) van benne, azt megköszönöm! :R

-update- NVMe SSD - Linux mankó - smart management (align, TRIM, heat...)

[ Szerkesztve ]

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.