💾 Archived View for gemlog.blue › users › berus › 1650447090.gmi captured on 2022-04-28 at 19:44:25. Gemini links have been rewritten to link to archived content

View Raw

More Information

-=-=-=-=-=-=-

Egy kis Linux és SSD összefoglaló, ahogy én szoktam (tehát nem biztos,

hogy így a legjobb, mindenki csak saját felelősségre).

Particionálás:

===========

Érdemes a GParted programmal csinálni (több LiveCD-s terjesztésen

megtalálható, GParted Live, SysRescueCD, stb.) így biztosan jó lesz az

alignálás, alapból helyesen ajánlja fel. Lényeg, hogy az első

partíciónak a 2048-as szektornál kell kezdődnie!

Alignálás ellenőrzése:

blockdev --getalignoff /dev/sda

Ha jó az alignálás 0 értéket kell kapnunk.

Ezenkívül használhatjuk a parted program align-check parancsát is.

Ne feledjük, minél több helyet hagyunk szabadon a meghajtón, a vezérlő

annál jobban érzi magát!

Hogy a szabad hely particionált terület-e vagy sem, a vezérlő számára

teljesen mindegy!

Fájlrendszer, TRIM, ütemező:

========================

A TRIM-nek két megvalósítása van Linuxon, az /etc/fstab fájlba írt

discard csatolási opció, ill. az fstrim parancs.

A discard hatására az OS közli a vezérlővel, hogy az adott adat

logikailag már nem létezik, valósan törölhető, a blokk felszabadítható.

Régebbi meghajtóknál ez azonnal végrehajtódik, ezért sok kis fájl esetén

teljesítmény problémákat okozhat. Az újabb "queued TRIM" (SATA rev.

3.1) eljárást ismerőknél viszont a blokkok felszabadítása nem

(feltétlen) történik meg azonnal, a teljesítmény csökkenés veszélye

kevésbé áll fenn.

Discard az /etc/fstab fájlban (példák):

UUID=f0ae2c59-83d2-42e7-81c4-2e870b6b255d / ext4

discard,errors=remount-ro 0 1

/dev/sda1 / ext4 defaults,noatime,discard 0 1

Az fstrim parancs megvizsgálja a meghajtót, és alapértelmezésben az

összes felszabadítható blokkot "törli".

Tipikus formája:

fstrim -v /csatolási pont

Kiadható manuálisan, de célravezetőbb boot szkriptbe (pl.

/etc/rc.local) tenni, vagy cron feladatot létrehozni belőle, napi vagy

heti futtatással.

Néhány újabb systemd-t használó terjesztésben (pl. Fedora 24) elérhetőek az "fstrim.service" és az "fstrim.timer" egységek.

Engedélyezés (alapértelmezésben hetente fut le):

systemctl enable fstrim.timer

Hogy melyiket érdemes használni a discard és az fstrim közül, azt

nagyban befolyásolják a felhasználói szokások, a kernel verziója, és a

meghajtónk képességei.

Jelenleg a következő Linuxos fájlrendszerek támogatják a TRIM funkciót:

EXT4, Btrfs, JFS, XFS, F2FS, Reiser4.

Bizonyos szerencsétlen összeállításoknál a "queued TRIM" eljárás (tehát

a discard opció) problémákat okozhat!

Ennek oka a hibás eszköz firmware (pl. bizonyos Samsung meghajtók).

Kerülő megoldásként ezek a meghajtók feketelistára kerültek a

kernelben, és hagyományos, azonnal végrehajtódó TRIM parancsot kapnak.

Erre Ă©rdemes lehet figyelni!

Érdemes lehet az I/O ütemezőt cfq-ról (ami figyelembe veszi a HDD

olvasó/író fej helyzetét) deadline-ra, ill. csak SSD használata esetén

noop-ra állítani.

Jelenlegi ütemező lekérdezése (adott meghajtó):

cat /sys/block/sda/queue/scheduler

Összes meghajtó lekérdezése:

for f in /sys/block/sd?/queue/scheduler; do printf "$f -> "; cat $f;

done

Az ütemezőt legegyszerűbb az /etc/default/grub fájl megfelelő sorának

módosításával állítani (példánkban deadline-ra):

GRUB_CMDLINE_LINUX_DEFAULT="elevator=deadline quiet splash"

Majd futtassuk az update-grub parancsot! A beállítás a következő

rendszer töltéskor lép érvénybe.

LILO használata esetén adjuk az /etc/lilo.conf fájlhoz a következő sort:

append="elevator=deadline"

Majd futtassuk a lilo parancsot.

Ha HDD is van a gépünkben, és más-más ütemezőt szeretnénk az SSD-nek és

a HDD-nek, akkor a megfelelő UDEV .rules fájlok létrehozásával

beállíthatjuk.

Hozzuk létre az /etc/udev/rules.d/60-sda_sdb.rules fájlt az alábbi

tartalommal:

# set noop scheduler for non-rotating disks

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",

ATTR{queue/scheduler}="noop"

# set cfq scheduler for rotating disks

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1",

ATTR{queue/scheduler}="cfq"

Ugyanezt elérhetjük az /etc/rc.local fájl módosításával is:

echo noop >/sys/block/sda/queue/scheduler

echo cfq >/sys/block/sdb/queue/scheduler

Egyéb ötletek:

============

A meghajtó kímélése és a teljesítmény növelése miatt fontos lehet a

noatime csatolási opció beállítása az /etc/fstab fájlban, így nem kerül

kiírásra az utolsó fájlhozzáférés időbélyege.

Ha a swap SSD-re kerül, próbáljuk csökkenteni a swap használatot a

swappiness érték (alapértelmezésben 60) csökkentésével.

Ehhez írjuk az alábbi sort az /etc/sysctl.conf fájlba:

vm.swappiness=10

Az értéket érdemes magunknak kikísérletezni, akár 1-re is állíthatjuk.

Ha a swap az SSD-re kerĂĽl, megfontolandĂł swap partĂ­ciĂł helyett swap

fájl használata!

Swap fájl létrehozása:

fallocate -l 1024M /swapfile

vagy

dd if=/dev/zero of=/swapfile bs=1M count=1024M

Engedélyek:

chmod 600 /swapfile

Fájlrendszer létrehozása:

mkswap /swapfile

IndĂ­tsuk el:

swapon /swapfile

Bejegyzés az /etc/fstab-ban:

/swapfile none swap defaults 0 0

KĂ©szen vagyunk.

A meghajtĂłn rendben van-e a TRIM:

hdparm -I /dev/sda | grep TRIM

Válaszként ezt kell látnunk: "Data Set Management TRIM supported (limit 1 block)".

Egyéb lehetőségek:

cat /sys/block/sda/queue/discard_max_bytes

Ha eredményként 0-át kapunk, nem működik a TRIM.

lsblk -D

Ahol a DISC-GRAN és DISC-MAX értéke 0, ott nem működik a TRIM.

SATA mód ellenőrzése:

smartctl -a /dev/sda | grep SATA

Válaszként ezt kell látnunk: "SATA Version is: SATA 3.0, 6.0 Gb/s

(current: 6.0 Gb/s)".

A smartctl parancs a SMARTmontools csomag része.

Ha rendelkezünk HDD-vel is, megfontolandó a /var könyvtár (gyakran

módosuló adatok) és a swap HDD-re rakása.

Ezenkívül érdemes a /tmp könyvtárat tmpfssel (átmeneti fájlrendszer, ami sosem íródik lemezre) a

RAM-ba rakni (ezt néhány terjesztés alapból megteszi).

Ehhez az /etc/fstab fájlba írjuk a következő sort:

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

Systemd-t futtató rendszereknél eljárhatunk így is:

cp -v /usr/share/systemd/tmp.mount /etc/systemd/system/

systemctl enable tmp.mount

Amennyiben a /var könyvtár SSD-re kerül, érdemes lehet bizonyos

alkönyvtárait a RAM-ba irányítani tmpfssel,

ehhez adjuk az /etc/fstab fájlhoz az alábbi sorokat:

tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0

tmpfs /var/spool tmpfs defaults,noatime,mode=1777 0 0

tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

A beállítást jól gondoljuk át, mert ha elfogy a RAM, a rendszer a

swappet fogja használni, ill. bizonyos programok futását akadályozza,

ha nem tudják létrehozni a /var/log-ban a bejegyzéseiket, és a

naplófájlokat a gép kikapcsolásakor elveszítjük!

Példák:

======

Fstrim parancs az /etc/rc.local fájlban (így minden rendszer töltéskor

lefut):

#!/bin/sh -e

#

# rc.local

#

fstrim -v /csatolási pont

exit 0

Ha adott csatolási ponton szeretnénk futtatni (naplózással) cron

feladatként, hozzunk létre egy fstrim nevű fájlt:

#!/bin/sh

LOG=/var/log/fstrim.log

echo "* $(date -R) *" >> $LOG

fstrim -v /csatolási pont >> $LOG

Ha több csatolási ponton akarjuk végrehajtani (példánkban / és /home):

#!/bin/sh

# Az SSD_MOUNT_POINTS változóban sorold fel a csatolási pontokat.

# Elválasztónak használj szóközt.

LOG=/var/log/fstrim.log

SSD_MOUNT_POINTS='/ /home'

for mount_point in $SSD_MOUNT_POINTS

do

echo "* $(date -R) *" >> $LOG

fstrim -v $mount_point >> $LOG

done

Tegyük a fájlt futtathatóvá és másoljuk a megfelelő /etc/cron.daily

vagy /etc/cron.weekly könyvtárba.

Cron feladatként futó, ill. a systemd által meghívott fstrim naplózása:

Először is szükségünk van a syslogra, telepítsük és futtassuk, ha eddig

nem tettĂĽk volna, majd a cron/systemd szkriptben

(/etc/cron.weekly/fstrim, ill. /usr/lib/systemd/system/fstrim.service)

szereplő fstrim parancsot egészítsük ki a "-v" kapcsolóval.

Ezek után a syslogban (ill. bizonyos rendszereknél a

daemons/info.log-ban) ellenőrizhetjük az fstrim sikeres lefutását.

Systemd-t használó rendszereknél nincs feltétlen szükség syslogra, az

alábbi paranccsal is ellenőrizhetjük a

sikeres végrehajtást:

journalctl -u fstrim

A példákban feltételezzük, hogy az SSD az első meghajtó a rendszerben,

tehát a /dev/sda!

A módosításokhoz root jogokkal kell rendelkeznünk!

Más-más terjesztéseknél változhatnak a fentebb említett fájlok elérési útjai és szintaktikái!

Irodalomként az Arch Linux idevágó wiki oldalát ajánlom!