todo
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| todo [2019/04/04 20:47] – [Přechod na NVME] djbuldog | todo [2025/06/11 21:45] (aktuální) – odstraněno djbuldog | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== TODO ====== | ||
| - | |||
| - | ===== Přechod na SSD ===== | ||
| - | |||
| - | ==== Analýza ==== | ||
| - | |||
| - | * M2 960 EVO 250 GB nebo SATA 850 EVO 500 GB | ||
| - | * M2 je mnohem rychlejší, | ||
| - | * M2 teď stojí 3600, SATA 4500. Za +900 bych měl 2x větší uložiště | ||
| - | * M2 se prý celkem hřeje | ||
| - | * M2 používá protokol NVMe, který obchází například IO scheduler v Kernel | ||
| - | * chci mit rootfs cely na SSD a na velka data + backup HDD raid | ||
| - | * celý můj linux má tak 35 GB, nejvíc dat má XPL, fotky/ | ||
| - | * 850 GB home | ||
| - | * 243 GB (k archivaci) shared (fotky, videa) | ||
| - | * 576 GB djbuldog | ||
| - | * 294 GB (k archivaci) zaloha XPL | ||
| - | * 77 GB VMs | ||
| - | * 75 GB steam | ||
| - | * 62 GB projekty | ||
| - | * 20 GB diabloIII | ||
| - | * 14 GB prace | ||
| - | * 8 GB (k archivaci) skola | ||
| - | * 8 GB (k archivaci) zaloha | ||
| - | * 18 GB zbytek | ||
| - | * 31 GB goja | ||
| - | * 115 GB opt | ||
| - | * 70 GB XPL11 | ||
| - | * 43 GB (k archivaci) XPL10 | ||
| - | * 25 GB zbytek | ||
| - | * na SSD mi vychází nějakých 392 GB co bych tam chtěl mít, zbytek 596 GB jsou zálohy :D | ||
| - | * na současných discích udělám 250/500 GB partition md2 raid1 pro zálohu rootfs přes rsync | ||
| - | * NTFS paritions zruším | ||
| - | * efi partition na obou nechám | ||
| - | * na md2 nahraji rootfs (kromě dat k archivaci) | ||
| - | * nabootuji z md2, když ok.... vymažu z md1 systém, udělám z toho mount point /mnt/data | ||
| - | |||
| - | ==== Ǔprava HDD disků ==== | ||
| - | |||
| - | * přes gparted jsem odstranil NTFS oddíly | ||
| - | * raid oddíl ale nešel vytvořit, tak jsem použil gdisk | ||
| - | * na obou discích jsem vytvořil 500GB oddíl na stejných sektorech | ||
| - | * zůstala mezera cca 67 GB mezi původním raid a novým | ||
| - | * schválně jsem tu mezeru dal za md1 a před md2, aby šel md1 v případě potřeby jednoduše roztáhnout až k md2 | ||
| - | * s původním raid jsem nic nedělal, ale je zde možnost růstu | ||
| - | * buď o těch 67 GB (https:// | ||
| - | * nebo bych možná mohl úplně zrušit ten nový raid a mít na disku prostě jen jeden | ||
| - | * backup ssd půjde dělat i do složky | ||
| - | * za oddílem je 100 MB pro EFI | ||
| - | |||
| - | * oprava zavaděče systému | ||
| - | * příkazem '' | ||
| - | * bylo potřeba ale vygenerovat i nový EFI přes '' | ||
| - | |||
| - | * mount / jako RO | ||
| - | * před kopírováním dat jsem chtěl rootfs připojit readonly | ||
| - | * postupoval jsem podle [[raid]], ale přechod na init1 nestačil pro uvolnění / | ||
| - | * použil jsem boot do single user režimu | ||
| - | * / nejde připojit do jiného adresáře (ani read-only), pokud je už připojen RW někde | ||
| - | * pro přechody z RW na RO (a naopak) jsem použil '' | ||
| - | |||
| - | * rsync | ||
| - | * pro přenosy souborů jsem používal rsync | ||
| - | * několikrát se mi stalo, že se mi nějak nesychronizovala všechna data | ||
| - | * jednou za to mohlo použití ADRESAR/* jako source, místo jen ADRESAR/ | ||
| - | * hvězdička totiž vynechává soubory/ | ||
| - | * jednou z toho podezřívám reset systému bez umount (a následný repair fs) | ||
| - | * dvakrát se mi to stalo z nepochopitelných důvodů. Raději jsem pak vždycky provedl umount, reboot a znovu rsync.. pro kontrolu :) | ||
| - | * důležité parametry | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | < | ||
| - | rsync -avn --exclude / | ||
| - | rsync --delete -avn --exclude / | ||
| - | </ | ||
| - | |||
| - | ==== Úpravy SSD disku ==== | ||
| - | |||
| - | * zarovnání oddílu | ||
| - | * pokud nemáme partition tabulku, tak není třeba vůbec řešit zarovnání | ||
| - | * pokud ano, tak chceme mít parirtion zarovnané na celé fyzické bloky se kterými zařízení umí pracovat | ||
| - | * běžné HDD mají fyzické bloky typicky 512 B nebo 4 kiB | ||
| - | * u SSD se rozlišuje | ||
| - | * page size - minimální velikost, kterou lze číst/ | ||
| - | * block / erase block / erase block size (EBS) - minimální velikost, kterou lze vymazat, typicky 512-2048 kiB | ||
| - | * můj Samsung 850 EVO je typu TLC, pravděpodobně má page size 8 kiB a erase block 3x512 kiB. Někde jsem ale četl, že má erase block možná 2048 kiB. Z toho důvodu jsem nakonec raději zvolil zarovnání na 6 MiB (minimální společný násobek) | ||
| - | * protože mám tabulku GPT, použil jsem na zarovnání nástroj gdisk | ||
| - | * počítá s velikostí sektoru 512 B a oddíly zarovnává na násobky 2048 sektorů | ||
| - | * zadáním '' | ||
| - | * pro zarovnání na 6 MiB to vychází na 12288 sektorů (6*1024*1024/ | ||
| - | * následně jsem zadáním '' | ||
| - | * EFI parition jsem dal až za rootfs, aby se dala jednoduše změnit její velikost, případně zrušit | ||
| - | * správné zarovnání lze ověřit zadáním '' | ||
| - | * fdisk/linux prý pořád používá počet hlav x sektoru na stopu = cylinder (v sektorech). V těchto nástrojích se musí zadat počet hlav a sektorů na stopu pro nastavení zarovnání. Například pro erase bloky 512 kiB se doporučuje 224h x 56 sektorů nebo 32h x 32s | ||
| - | |||
| - | * vytvoření rootfs | ||
| - | * použil jsem ext4 | ||
| - | * filesystém prý používá bloky o velikosti 4 kiB | ||
| - | * ideální by bylo použít stejnou velikost jako u zarovnání, | ||
| - | * každopádně, | ||
| - | * často se doporučuje [[https:// | ||
| - | * jsou určeny pro raid, ale hodí se i pro SSD | ||
| - | * stride | ||
| - | * This is the number of blocks read or written to disk before moving to the next disk - the chunk size. | ||
| - | * Interpretation: | ||
| - | * stripe-width | ||
| - | * This allows the block allocator to prevent read-modify-write of the parity in a RAID stripe if possible when the data is written. | ||
| - | * Interpretation: | ||
| - | * mělo by se nastavit jako | ||
| - | * stride = X / 4 kB, kde X je page size SSD disku | ||
| - | * stripe-width = X kB / 4 kB, kde X je erase block SSD disku | ||
| - | * jelikož jsem si ale nebyl jistý s velikostí EBS na mém disku, raději jsem parametry nenastavoval | ||
| - | |||
| - | * data jsem na SSD nakopíroval přes rsync (viz úpravy HDD) | ||
| - | |||
| - | ==== Optimalizace ==== | ||
| - | |||
| - | === TRIM === | ||
| - | * nový ATA příkaz zavedený kvůli SSD, kterým OS informuje řadič disku, které bloky jsou považovány za prázdné | ||
| - | * existují dvě verze | ||
| - | * non-queued TRIM | ||
| - | * starší, blokující. | ||
| - | * problém je, že volání po každém delete velice zpomaluje výkon disku. | ||
| - | * provádí se proto periodicky jednou za čas. V linuxu přes '' | ||
| - | * queued TRIM | ||
| - | * nečeká se na provedení | ||
| - | * u ext4 se zapíná klíčovým slovem discard při mount | ||
| - | * Samsung EVO 850 podporuje obě verze, ale... | ||
| - | * funguje ale jen verze non-queued, protože druhá je špatně implementována. | ||
| - | * v [[https:// | ||
| - | |||
| - | * automatické spouštění trim | ||
| - | * přes systemd Realtime timer | ||
| - | * obsahuje parametr '' | ||
| - | |||
| - | cp / | ||
| - | systemctl enable fstrim.timer | ||
| - | |||
| - | * upravil jsem časování z jednou týdně v pondělí 00:00 na jednou týdně v neděli v 22:00 | ||
| - | |||
| - | # | ||
| - | OnCalendar=Sun, | ||
| - | |||
| - | systemctl start fstrim.timer | ||
| - | |||
| - | systemctl status fstrim.timer | ||
| - | ● fstrim.timer - Discard unused blocks once a week | ||
| - | | ||
| - | | ||
| - | Trigger: Sun 2017-12-03 22:00:00 CET; 11h left | ||
| - | Docs: man:fstrim | ||
| - | |||
| - | systemctl list-timers fstrim* | ||
| - | NEXT | ||
| - | Sun 2017-12-03 22:00:00 CET 11h left Sun 2017-12-03 10:17:21 CET 17min ago fstrim.timer fstrim.service | ||
| - | |||
| - | === mount === | ||
| - | |||
| - | * při mount / na SSD používám noatime | ||
| - | * /tmp je dobré připojit do tmpfs místo SSD. U systemd k tomu je služba (jde ale i přes fstab) | ||
| - | |||
| - | cp / | ||
| - | systemctl enable tmp.mount | ||
| - | |||
| - | === webový prohlížeč === | ||
| - | |||
| - | * spouštění profilu prohlížeče v RAM | ||
| - | |||
| - | #apt-get install profile-sync-daemon | ||
| - | $psd | ||
| - | First time running psd so please edit / | ||
| - | |||
| - | * v konfiguraci se nastaví jaké prohlížeče se používají, | ||
| - | * následně se spustí uživatelská služba přes systemd | ||
| - | |||
| - | systemctl --user start psd-resync | ||
| - | |||
| - | * stav lze sledovat přes | ||
| - | |||
| - | < | ||
| - | psd preview | ||
| - | Profile-sync-daemon v6.31 on Debian GNU/Linux buster/sid | ||
| - | |||
| - | | ||
| - | | ||
| - | | ||
| - | |||
| - | Psd will manage the following per / | ||
| - | |||
| - | | ||
| - | | ||
| - | sync target: | ||
| - | tmpfs dir: / | ||
| - | | ||
| - | | ||
| - | |||
| - | | ||
| - | | ||
| - | sync target: | ||
| - | tmpfs dir: / | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | * profil se synchronizuje každou hodinu | ||
| - | |||
| - | djbuldog@Pharaon: | ||
| - | NEXT | ||
| - | Sun 2017-12-03 12:24:24 CET 56min left n/a n/a psd-resync.timer psd-resync.service | ||
| - | |||
| - | * profil neobsahuje cache prohlížeče!! | ||
| - | |||
| - | lsof | grep firefox | grep -v /usr/lib | ||
| - | .. | ||
| - | 86 20975455 / | ||
| - | .. | ||
| - | |||
| - | * přemístění cache | ||
| - | * [[https:// | ||
| - | * zobrazit jen " | ||
| - | * browser.cache.disk.enable nastavit na false | ||
| - | * browser.cache.memory.enable nastavit na true | ||
| - | * browser.cache.memory.capacity přidat a nastavit na třeba 358400 | ||
| - | * ale nějak to nepomohlo, prohlížeš pořád leze do ~/ | ||
| - | |||
| - | * oprava po tvrdém restartu / kontrola funkčnosti | ||
| - | * když je spuštěna systemd služba, vypadají složky takto | ||
| - | |||
| - | ls -la .config/ | grep chr | ||
| - | lrwxrwxrwx | ||
| - | drwx------ | ||
| - | |||
| - | ls -la .mozilla/ | ||
| - | lrwxrwxrwx | ||
| - | drwxr-x--- 28 djbuldog djbuldog | ||
| - | |||
| - | * evidentně se složka profilu zkopíruje přes rsync do tmpfs, přejmenuje na složku se suffixem backup a místo původní se udělá symlink do tmpfs. | ||
| - | * při zatavení je postup opačný | ||
| - | * v backup složce se navíc vytvří symlink null a djbuldog-chromium (případně djbuldog-firefox-blabla) | ||
| - | * když dojde k násilnému ukončení psd, zůstane složka backup a symlink se ztratí | ||
| - | * pro opravu je potřeba přejmenovat backup zpět na původní a případně vymazat null a djbuldog-* uvnitř | ||
| - | * ověřit, že prohlížeč fakt používá tmpfs lze přes lsof | ||
| - | |||
| - | |||
| - | === uspávání HDD === | ||
| - | |||
| - | * příkazy posílám přes hdparm | ||
| - | * parametrem '' | ||
| - | * alternativně lze parametrem '' | ||
| - | * existuje ještě parametr '' | ||
| - | * ten ale na mých HDD nefunguje dobře a disky se často probouzí | ||
| - | * probudí je například i dotaz na stav disku parametrem '' | ||
| - | * aby se ze sleep neprobouzeli, | ||
| - | * odpojit partition (spouštěla se například indexace souborů updatedb) | ||
| - | * deaktivovat sw raid | ||
| - | * vypnout SMART daemono | ||
| - | * vypnout službu udisks2 (zajišťuje připojování svazků) | ||
| - | * standby funguje tedy podle očekávání, | ||
| - | * při vypínání/ | ||
| - | |||
| - | * v gnome3 jde nastavit přes '' | ||
| - | * zobrazí se seznam disků, označit disk, přes menu v pravém rohu vybrat " | ||
| - | * zapnutí standby se uloží do souboru s ID disku do složky / | ||
| - | |||
| - | cat / | ||
| - | # See udisks(8) for the format of this file. | ||
| - | | ||
| - | [ATA] | ||
| - | StandbyTimeout=12 | ||
| - | |||
| - | |||
| - | === zapnutí raid bitmapy === | ||
| - | |||
| - | * u SW raid md2 se mi vytvořila automaticky | ||
| - | * u md1 jsem ji neměl | ||
| - | * bitmapa slouží k rychlejší obnově desynchronizovaného pole, což se fakt hodí :) | ||
| - | * může to mít lehký vliv na zapisovací výkon, ale to mě moc netrápí | ||
| - | * lze kdykoliv zase vypnout, zapnutí provedeno přes | ||
| - | |||
| - | mdadm --grow --bitmap=internal /dev/md1 | ||
| - | |||
| - | === IO scheduler === | ||
| - | |||
| - | * pro HDD chci CFQ, pro SSD je prý nejlepší deadline (lepší než noop) | ||
| - | * podle [[https:// | ||
| - | * CFQ má prý [[https:// | ||
| - | * FIXME deadline musím přidat do kernelu :D | ||
| - | * FIXME následně udev pravidlo | ||
| - | |||
| - | cat / | ||
| - | # set deadline scheduler for non-rotating disks | ||
| - | ACTION==" | ||
| - | |||
| - | * ověření | ||
| - | |||
| - | for f in / | ||
| - | / | ||
| - | / | ||
| - | / | ||
| - | .. | ||
| - | |||
| - | |||
| - | === TODO === | ||
| - | |||
| - | FIXME | ||
| - | * zbývající z https:// | ||
| - | * co ten goanysync? | ||
| - | * nepoužít jej na vyřešení toho problému s .cache/ | ||
| - | * otázkou je, zda bych pak neměl přestat používat ten psd.. ať jich nemám milión | ||
| - | * pravidelná synchornizace / na md2 | ||
| - | * normálně přes rsync nad RW /, chce to jen vynechat /tmp, /proc, /sys, /dev ... | ||
| - | * chtělo byt o nějaká základní kontroly, jako jsou svazky fakt připojený do mountpoint? | ||
| - | * mohl bych z toho udělat systémovou nebo user službu :) | ||
| - | * neprobouzet disk pri suspend/ | ||
| - | * před suspend se disk probudí a hned usne znovu | ||
| - | * nějak by to jít mělo, ne? | ||
| - | * HDD má prý životnost cca 200 000 start/stop (já mám teď nalítáno cca 4k) | ||
| - | * pm-suspend log píše něco o / | ||
| - | * který importuje / | ||
| - | * který parsuje / | ||
| - | * místo /dev/sdX by mělo jít použít i / | ||
| - | * mohl bych se pak vykašlat na ten gnome-disks (udisks2) | ||
| - | * custom skripty strk8m do /etc/pm/* | ||
| - | * já myslím, že za to zapnutí disku před suspend může zavolání sync :( s tím nic neudělám | ||
| - | |||
| - | ==== Hodnocení ==== | ||
| - | |||
| - | * start Linuxu se zrychlil | ||
| - | * grub naskočí o dost rychleji | ||
| - | * pak startuje jádro, to je úplně stejně rychlé.. pár sekund | ||
| - | * pak se spustí init, systemd... ten je znatelně o dost rychlejší | ||
| - | * přihlášení je rychlé | ||
| - | * zhruba stejně, jako když jsem předtím dal logout a login (diskcache v RAM) | ||
| - | * předtím jsem schválně uspával stroj, abych to měl svižnější... teď ten reboot vůbec nebolí | ||
| - | * spuštění prohlížeče je stejně rychlé jak jsem zvyklý (disková cache).., | ||
| - | * takže pozitiva jsou rychlejší start, první spuštění programů a možnost vypínat hlučné HDD | ||
| - | |||
| - | |||
| - | ===== Přechod na NVME ===== | ||
| - | |||
| - | * zapnul jsem [[konfigurace_kernelu# | ||
| - | * v dmesg to hlásí divnou věc, ale nenašel jsem zda je to fakt problém | ||
| - | |||
| - | < | ||
| - | [ 0.634528] nvme nvme0: pci function 0000: | ||
| - | [ 0.847301] nvme nvme0: missing or invalid SUBNQN field. | ||
| - | [ 0.847739] nvme nvme0: Shutdown timeout set to 8 seconds | ||
| - | </ | ||
| - | |||
| - | * oddíly vytvořím jako na starém SSD, zarovnané na 6 MB | ||
| - | * start první na tom sektoru 12288 | ||
| - | * konec jsem spočítal z | ||
| - | * last usable sector = 1953525134 | ||
| - | * 1953525134 − 12288 = 1953512846 | ||
| - | * 1953512846 / 12288 = 158977, | ||
| - | * 158977 × 12288 = 1953509376 | ||
| - | * 1953509376 - 1 = 1953509375 | ||
| - | < | ||
| - | gdisk / | ||
| - | |||
| - | Command (? for help): p | ||
| - | Disk / | ||
| - | Model: Samsung SSD 970 EVO Plus 1TB | ||
| - | Sector size (logical/ | ||
| - | Disk identifier (GUID): F71AC08B-3AAA-48D2-92A7-94AC1666ADE2 | ||
| - | Partition table holds up to 128 entries | ||
| - | Main partition table begins at sector 2 and ends at sector 33 | ||
| - | First usable sector is 34, last usable sector is 1953525134 | ||
| - | Partitions will be aligned on 12288-sector boundaries | ||
| - | Total free space is 12254 sectors (6.0 MiB) | ||
| - | |||
| - | Number | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | < | ||
| - | mkfs.ext4 / | ||
| - | mkfs.vfat / | ||
| - | </ | ||
| - | ===== zbavit se reklam v TV ===== | ||
| - | * addon do VLC, který by u reklamy | ||
| - | * provedl alespoň mute | ||
| - | * nebo přepnul na jiný program (mohl by se zkusit vrátit po třeba minutě) | ||
| - | * https:// | ||
| - | * https:// | ||
| - | |||
| - | * router pro máma [[rb435g]] | ||
| - | |||
| - | ===== streamování zvuku přes síť ===== | ||
| - | * připojit Xonar k PI a přistupovat k tomu z Windows i Linux | ||
| - | * ideálně s podporou 5.1 | ||
| - | * [[raspberrypi# | ||
| - | * http:// | ||
| - | * https:// | ||
| - | * https:// | ||
| - | * https:// | ||
todo.1554403650.txt.gz · Poslední úprava: (upraveno mimo DokuWiki)
