Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

Autor Téma: Kopírovací dialog - chyba - min. od verze U 14.04 >> 18.04  (Přečteno 189 krát)

juwa2

  • Závislák
  • ****
  • Příspěvků: 2027
  • Karma: +143/-34
    • Zobrazit profil
Při kopírování na flešku (u HDD to patrné není, nebo méně??) se velice rychle "zkopíruje" cca 99% a pak kopírování na delší dobu zamrzne (stuck), dlouho trvá, než se dialogové okno průběhu kopírování zavře...
---------------------------------
Bylo zjištěno:
Fleškou to není - dělá to každá.
Správcem souborů kterým se kopíruje to není - dělá to každý, dokonce i ultracopier...
Samotná doba kopírování (než se dialog. okno zavře) přitom odpovídá sekvenční rychlosti zápisu flešky. Takže chybný je pouze ukazatel průběhu. Jedná se tedy o systémovou věc.
Řešení:
Kód: [Vybrat]
sudo su
echo vm.dirty_bytes=15728640 >> /etc/sysctl.conf
sysctl -p

Restart není potřeba, korekce se projeví okamžitě.
Po aplikování příkazů se kopírovací dialog (ve všech souborových správcích) chová tak jak je obvyklé.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vysvětlení:
Jádro kopíruje obsah souboru do vyrovnávací paměti v primární paměti (RAM) a tento prostor je extrémně rychlý.
Takže správce souborů si myslí, že obsah souboru byl zcela zkopírován a pokusí se ukončit kopírování.
V tomto okamžiku se správce souborů zasekne, protože jádro nyní skutečně teprve kopíruje soubor na cílové médium (pevný disk, jednotka flash ...). Zasekne se, dokud nebude soubor kompletně zkopírován do cílového média.
Řešením je omezit velikost vyrovnávacího prostoru, řekněme na 15Mb, aby se jádro vrátilo k vyprázdnění (flush) obsahu vyrovnávací paměti do cílového média pokaždé, když je dosaženo limitu 15Mb. Tím pádem správce souborů neobdrží chybné informace o postupu kopírování a zobrazí se správný průběh.

EDIT: Zatímco v 18.04 výše popsané funguje, v 14.04 byl zjištěn další bug - hodnota ze souboru /etc/sysctl.conf se po rebootu nepřepisuje do /proc/sys/vm/dirty_bytes. Tím pádem je "oprava kopírování" po rebootu opět nefunkční. Ruční přepis pomocí příkazu sudo sysctl -p přitom funguje. Řešení spočívá ve vytvoření úlohy v rootovském cronu která příkaz vždy po rebootu spustí. Otevřeme crontab:
Kód: [Vybrat]
sudo crontab -e
a na konec přidáme řádek
Kód: [Vybrat]
@reboot sleep 60 && sudo sysctl -p
« Poslední změna: 27 Září 2018, 15:16:31 od juwa2 »