Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: matlala 05 Srpna 2013, 19:31:46
-
Zdravím, rád bych si do notebooku pořídil ještě více RAM (max podporované NTB - dva 8GB 1600MHz CL9 místo původních 2*4GB 1600MHz CL110 a použil pořádně RAmdisk, který by šel připojit a odpojit za běhu systému, ale ještě jsme nepřišel jak na to aby se to dalo za běhu.
Ve fstabu mám pro /tmp pernmentní ramdisk, když to zkusím udělat do jiné složky v home nebo mount či mnt s parametrem noauto, tak stejně nejde. Poradí někdo jak na to?
#ramdisk
none /tmp tmpfs nodev,nosuid,size=512M,mode=1777 0 0
Používat bych ho chtěl hlavně na přebalování HD seriálů a taky sem zjistil, že je neobsazená RAM výborně využita jako disková chase což mám schválně 8GB i na NAS/HTPC počítači a funguje to krásně s tou rychlou intel síťovkou.
(potřeboval bych tak ideálně 4-8GB RAMdisk, takže mých současných 8GB RAM minus systém, sdílená grafická paměť a ramdisk dá použitelných cca 4-5GB).
Předem díky za rady
-
http://oloflarsson.se/how-to-set-up-a-persistent-ramdisk-with-tmpfs-and-rsync/
mount -t tmpfs -o size=${SIZE},mode=${PERMMODE} tmpfs ${FOLDER_RAM}
a odpojení přes umount, tuším:
umount ${FOLDER_RAM}
samozřejmě nezapoměň nahradit/"naplnit" proměnné do příkazů
-
díky, tohle jde hezky
matlala@matlala-ubuntu:~$ sudo mount -t tmpfs -o size=2048M,mode=0775 tmpfs /media/RAM
matlala@matlala-ubuntu:~$ sudo umount /media/RAM
Jen kam to vlastně moutnout aby se to zobrazilo jako disk ve správci soubor? Používám nemo, nautila jsem vypreparoval.
-
díky, tohle jde hezky
matlala@matlala-ubuntu:~$ sudo mount -t tmpfs -o size=2048M,mode=0775 tmpfs /media/RAM
matlala@matlala-ubuntu:~$ sudo umount /media/RAM
Jen kam to vlastně moutnout aby se to zobrazilo jako disk ve správci soubor? Používám nemo, nautila jsem vypreparoval.
Co tym myslis? Podla toho prikazu to mas v /media/RAM. Ak si odstranil nautila tak si tym neodstranil aj automount odpojitelnych medii?
-
nene, automatika na flashkách nebo externích HDD funguje.
No rád bych ho mel zobrazený jako disk ve správci souborů vlevo mezi zařízeními.
-
Neviem ako v nemo ale v nautiluse si si oznacil adresar a cez menu zalozky si si to pridal nalavo dole.
http://wiki.ubuntu.cz/Programy/Pr%C3%A1ce%20s%20daty/Nautilus?redirect=1
Ale neviem ako sa to bude spravat ked nebude pripojeny.
-
Záložka CTRL+D, to je stejné, ale disk je disk a záložka záložka :-(
-
Trošku jsme zkoumal a krom tmpfs existuje ještě ramfs.
při použití tmpfs se to v apletu system monitoru cinnamonu zobrazí jako chase a může to expandovat na swap, pokud se nastaví větší místo než je volné na RAM.
tmpfs aktuálně zkouším, ještě se peru s přístupovými právy. Ale u ramfs se to zobrazí jako připojený disk ve správci souborů. Zatím vše co jsme ověřil.
Akorát zkoumám podle tohoto:
http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/ (http://www.thegeekstuff.com/2008/11/overview-of-ramfs-and-tmpfs-on-linux/)
-
Pozor na ramfs pretoze on nedodrzuje nastavenu velkost a dynamicky sa zvacsuje s pridavanymi datami a moze zaplnit celu ram az kym nespadne system.
http://m.linuxexpres.cz/praxe/vyuzitie-tmp-adresara-v-ram
-
to jsme právě zjistil :-D
naštěstí sem se moh dostat na tty konzoli a spustit restart, tvrdý restarty nemám od doby co mám ubuntu rád.
Ještě ty práva mi nějak blbnou. Vytvořil jsem složku jako root v /media/RAM a dal práva pro čtení a zápis sobě a své skupině + ostatním čtení a nemůžu se tam nějak dostat při ramfs, s tmpfs to jde dobře, tam se dostanu, když umažu práva z mountu. Nejspíš to zdědí práva složky, ramfs ne.
-
Skusil som teraz
sudo mkdir -p /mnt/ram
sudo mount -t ramfs -o size=20m ramfs /mnt/ram
sudo chmod 777 /mnt/ram
a ide to. Aj ked je pravda ze 777 su prava vsetkym.
-
vidíš, to jsme chtěl taky zkusit, stejně si pak na to napíšu script. Jdu vyzkoušet, akorát jsme si raději zvětšil swap na SSD na 3GB a na HDD nechal taky 3GB, už jsme dělal blbiny a párkrát se to zasekalo obojí a na SSD to ani není moc poznat, že to není na RAM ale na swapu v SSD.
-
jo jde to. Otestoval jsme, že ramfs přeteče, bez ohledu na velikost jsem tam narval 7GB soubor při velikosti RAMdisku 2MB
teď tmpfs, ten nepřeteče a nedovolí narvat tam větší soubor.
Jediná nevýhoda, že zaplnění nejde ani na jednom filesystému na apletu, budu muset nahlížet do správce souborů.
pozkoušel jsem
matlala@matlala-ubuntu:~$ sudo mkdir -p /media/ram
[sudo] password for matlala:
matlala@matlala-ubuntu:~$ sudo mount -t ramfs -o size=20m ramfs /media/ram
matlala@matlala-ubuntu:~$ sudo chmod 777 /media/ram
matlala@matlala-ubuntu:~$ sudo umount /media/ram
matlala@matlala-ubuntu:~$ sudo mount -t tmpfs -o size=20m tmpfs /media/ram
matlala@matlala-ubuntu:~$ sudo chmod 777 /media/ram
matlala@matlala-ubuntu:~$ sudo umount /media/ram
matlala@matlala-ubuntu:~$ sudo rmdir /media/ram
-
Víš proč se píše za mkdir -p? píšeš ho totiž zbytečně
jednodušší by bylo cd /media
Kdo si hraje nezlobí ..
-
z nápovědy vyčtu
-p, --parents vytvoří neexistující rodičovské adresáře zadaného adresáře
ale stejně když vytvořím adresář, tak mu nejdou změnit práva přes chmod, pořád ve správci souborů vidím vše pro roota. Když složku vytvořím a změním práva v grafickém správci souborů jako root na sebe, tak to jde.
-
nene, automatika na flashkách nebo externích HDD funguje.
No rád bych ho mel zobrazený jako disk ve správci souborů vlevo mezi zařízeními.
Zkus použít ve /etc/fstab x-gvfs-show,x-gvfs-name=ram
tmpfs /media/ram tmpfs defaults,users,size=512M,mode=1777,x-gvfs-show,x-gvfs-name=ram 0 0
-
hmm, to bude trošku jinak, systém se s tímhle odmítá pustit, musel jsem to vymazat v recovery modu
-
hmm, to bude trošku jinak, systém se s tímhle odmítá pustit, musel jsem to vymazat v recovery modu
Doufám že /media/ram existuje...
-
jo to už jsem nemazal
-
Tak tedy zkus jen
tmpfs /media/ram tmpfs defaults,users,size=512M,mode=1777,x-gvfs-show 0 0
nebo
tmpfs /media/ram tmpfs defaults,users,size=512M,mode=1777,x-gvfs-name=ram 0 0
Pokud nebude fungovat, tak zkus jen:
tmpfs /media/ram tmpfs defaults,users,size=512M,mode=1777 0 0
A můžeš si ve svém souborovém manažeru prostě jen přidat záložku.
-
jen k těm právům, použi nejdříve chown pak chmod
ramfs jsem nepřipojoval, tam neporadím
-
famfs bych nedoporučoval - může bobtnat a pak schodit systém.
-
Tak ty 3 zápisy co psal beer nejdou ani jeden, nějaká chyba, sic se to zobrazí jako připojený disk, předpokládám že první ma byt none, jelikož jeden funkční 512MB RAMDISK mám zapsaný takto:
none /tmp tmpfs nodev,nosuid,size=512M,mode=1777 0 0
-
Tak ty 3 zápisy co psal beer nejdou ani jeden, nějaká chyba, sic se to zobrazí jako připojený disk, předpokládám že první ma byt none, jelikož jeden funkční 512MB RAMDISK mám zapsaný takto:
none /tmp tmpfs nodev,nosuid,size=512M,mode=1777 0 0
Nejsem u kompu s ubuntu, tak ti přesně neřeknu, jestli tam mám none nebo tmpfs, ale zde je uvedeno jako první tmpfs:
http://www.linuxexpres.cz/praxe/vyuzitie-tmp-adresara-v-ram (http://www.linuxexpres.cz/praxe/vyuzitie-tmp-adresara-v-ram)
tmpfs /tmp tmpfs size=750M,mode=2777 0 0
Zde taky je v dokumentaci archlinuxu jako prnví tmpfs:
https://wiki.archlinux.org/index.php/Fstab#tmpfs (https://wiki.archlinux.org/index.php/Fstab#tmpfs)
příklady z uvedené stránky:
tmpfs /tmp tmpfs nodev,nosuid 0 0
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0
tmpfs /www/cache tmpfs rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=648,gid=648,mode=1700 0 0
-
ještě pozkouším, ale bohatě mi stačí manuální mount a ne to dávat do fstabu, tak často to zas nepotřebuju a stejnak si na to napíšu script.
Edit:
funguje to až bez těch serepetiček
none /media/ram tmpfs nodev,nosuid,size=1024M,mode=1777 0 0
-
Tak snad už dobře, funguje to
matlala@matlala-ubuntu:~$ sudo chown -R matlala:matlala /media/ram
matlala@matlala-ubuntu:~$ sudo chmod 777 /media/ram
matlala@matlala-ubuntu:~$ sudo mount -t tmpfs -o size=2G tmpfs /media/ram
matlala@matlala-ubuntu:~$ sudo umount /media/ram
matlala@matlala-ubuntu:~$ sudo rmdir /media/ram
;)
-
V Nautilovi k tomu přistupuješ přes složku viď?
-
v Nemo, fuj nautilus.
A ano.
-
Tak dneska jsme teda upgradoval na tyhle RAMky, ale píšu si scriptík na vytváření ramdisku včtně vytváření a mazání složek, ale příkazy jsme vyřešily, nyný řeším malý problém v bash scriptu.
Potřebuju zjistit zda je už vytvořený ramdisk, lze to příkazem mount a složku kam je připojeno, ale nějak mi to nefunguje ve scriptu i když ramdisk je vytvořen a připojen.
Na terminálu to fakčí, tak co je špatně? Potřebuju to potom co to zjistím vypsat a napsat podmínku.
pripojnybod="/media/ram"
pripojeno=mount | grep $pripojnybod
echo "Připojeno? "$pripojeno
#dále podmínka $pripojeno=$pripojnybod - odmoutuj, když není vytvoř
-
find by nepomohl?
find / -name directoryname -type d
nebo co by ti udělal klasický cd ??
-
pomohl, ale to moje u funguje taky
sudo find /media -name ram -type d
pripojnybod="/media/ram"
pripojeno=$(mount | grep $pripojnybod);
echo "Připojeno? "$pripojeno
Jen ta podmínka za tím mi ještě blbne
-
pokud se snažíš o porovnávací funkci musíč použít []
-
však jo a mezapomenout na mezery. Ještě neco vyzkouším a kdyžtak to tu nahodím celé
-
pokud by si chtěl poradit, tak já bych to udělal pomocí ls a pak jen porovnal
bylo by to nějak takhle
obsah=$(ls /media | grep ram)
[ $obsah = "ram" ] && echo "ram je Připojeno"
-
jo to by šlo, vyzkouším zítra a upravím to pro použití v domovské složce. Až to pojede hodím to sem. Možná k tomu pak bude někdo mít připomínky.
-
Toš jsem trošku zkoušel, dávám sem dosavadní script. Kvůli unikátnosti jsem si zvolil víc vystihující název složky a ještě ji pro jednoduchost a univerzálnost vytvářím v /home aktuálně přihlášeného uživatele
#!/bin/bash
#výchozí hodnoty RAMdisku
velikost=10 #velikost v GiB
souborovysytem="tmpfs" #system souborů, tmpfs pevná velikost a ramfs může přetéct
nazev_slozky="RAMdisk"
pripojnybod="/home/"$USER"/"$nazev_slozky
#pripojeno=$(mount | grep $pripojnybod | cut -f=$pripojnybod);
pripojeno=$(ls -B $adresar | grep $nazev_slozky)
echo "Připojeno? : "$pripojeno
case $pripojeno in
$nazev_slozky)
echo "RAMdisk je připojen!"
echo "Přípojné místo:"
mount | grep $pripojnybod
echo "Přejete si ho odpojit? [Y/n]"
read odmountovat
case $odmountovat in
y)
echo "RAMdisk nezměnen."
;;
*)
echo "Odmountovávám RAMdisk..."
sudo umount $pripojnybod
sudo rmdir $pripojnybod
sudo swapoff -a && sudo swapon -a # pro jistotu, kdyby nahodou přeteklo na swap
;;
esac
;;
*)
echo "Přeješ si použít výchozí hodnoty? [Y/n]"
read vychozi
case "$vychozi" in
n)
echo "Zadej velikost v celých GiB"
read velikost
echo "Použít tmpfs [výchozí] nebo ramfs [1]?"
read typ
case $typ in
1)
pouzij="ramfs"
;;
*)
pouzij=$souborovysytem
;;
esac
;;
*)
velikost=10
pouzij=$souborovysytem
;;
esac
echo "Vytvářím RAMdisk v "$pripojnybod" o velikosti "$velikost"GiB a typu "$pouzij"."
sudo mkdir $pripojnybod
sudo chown -R $USER:$USER $pripojnybod
sudo chmod 777 $pripojnybod
sudo mount -t $pouzij -o size=$velikost"G" $pouzij $pripojnybod
;;
esac
exit 0
-
a funguje?
nejsem si jistý s tím sudo mount, že ti bude chodit. Budeš muset přidat výjimku do sudoers.
-
funguje jen chce heslo, což mi nevadí
-
tak to je hlavní ;) pokud by si to chtěl obejít, tak jak už jsem psal, přidej si výjimku do sudoers a máš to bez potřeby hesla.
-
já vím, nějak ale s 12.04 už nemám problém, možná jsme ti to už někde psal. Ale to už jsme mimo, kdyžtak mailem.
-
Moje zenity rozhrani, toz me rozcupujte, hrabe se tam nautilovi a maze pod sudo toz radsi bez zaruky funkcnosti.
RAMdisk.sh#!/bin/bash
if [ ! -d "/media/RAM_disk" ] ; then # Podminka1 zjisteni existenece adresare /media/RAM_disk
Pamet=`free -g | tail -2 | head -1 | awk '{print $4}'` # Zjisteni volne RAM pameti v gigabytech
if [ $Pamet -ge 2 ] ; then # Podminka2 volna pamet dva a vice GB
VALUE=$(su $SUDO_USER -c 'zenity --scale --title="Vytvoření RAM disku" --text="Velikost RAM disku v GB" --value=1 --min-value=1 --max-value='$Pamet' --step=1') # Okno zenity s veilkosti RAM disku
# su $SUDO_USER -c Je kvuli spravnemu vykresleni dekorace oken pod sudo http://ubuntuforums.org/showthread.php?t=759389
else # Podminka2 neplati
su $SUDO_USER -c 'zenity --error --text="Volná paměť pod 2GB"' # Dialogove okno s varovani o nedosatku pameti
fi # Konec podminky2
if [ $VALUE ] ; then # Podminka3 pokud v zenity byla vybrana velikost RAM disku
sudo mkdir -m 777 /media/RAM_disk # Vytvoreni adresare pro RAM disk
sudo mount -t tmpfs -o size="$VALUE"G,mode=1777 tmpfs /media/RAM_disk # Pripojedni ram disku o vybrane velikosti v rezimu tmpfs do adresare /media/RAM_disk
if [ $PIPESTATUS != 0 ] ; then # Podminka4 pokud Pripojeni RAM disku zkonci s chybou
su $SUDO_USER -c 'zenity --error --text="Chyba mount"' # Dialogove okno s varovani o nepovedem pripojeni RAM disku
sudo rm -r /media/RAM_disk # Odstraneni adresare /media/RAM_disk
else # Podminka4 neplati
cp $HOME/.config/gtk-3.0/bookmarks $HOME/.config/gtk-3.0/bookmarks.bak # Pouze pro nautilus! zaloha zalozek nautila
echo "file:///media/RAM_disk RAM disk" >> $HOME/.config/gtk-3.0/bookmarks # Pouze pro nautilus! vlozeni zalozky na RAM disk do zalozek nautila
fi # Konec podminky4
fi # Konec podminky3
else # Pokud podminka1 neplati a adresar /media/RAM_disk ji existuje
su $SUDO_USER -c 'zenity --question --text="Smazat RAM disk ?"' # Dialogove okno na dotaz o smazani RAM disku
if [[ $PIPESTATUS == 0 ]] ; then # Podminka5 potvrzeno smazani RAM disku
sudo umount /media/RAM_disk # Odpojeni RAM disku
if [ $PIPESTATUS != 0 ] ; then # Podminka6 pokud odpojeni RAM disku zkonci s chybou
su $SUDO_USER -c 'zenity --error --text="Chyba umount"' # Dialogove okno s varovani o nepovedem odpojeni RAM disku
else # Podminka6 neplati
cp $HOME/.config/gtk-3.0/bookmarks.bak $HOME/.config/gtk-3.0/bookmarks # Pouze pro nautilus! Obnoveni zalozek ze zalohy
rm $HOME/.config/gtk-3.0/bookmarks.bak # Pouze pro nautilus! Smazani zalohy zalozek
sudo rm -r /media/RAM_disk # Odstraneni adresare /media/RAM_disk
fi # Konec podminky6
fi # Konec podminky5
fi # Konec podminky1
if [ -d "/media/RAM_disk" ] ;then # Podminka7 kontrolni zjisteni existenece adresare /media/RAM_disk
notify-send "RAM disk v provozu" -i $HOME/Obrázky/ram-driver.png # Dialogove okno s informaci ze ram disk zrejme pracuje
else # Podminka7 neplati
notify-send "RAM disk není v provozu" -i $HOME/Obrázky/ram-driver.png # Dialogove okno s informaci ze ram disk nepracuje
fi # konec podminky7
Doporucuji otevrit v nejakem barevne interpretujicim editoru (gedit, krusader) protoze tahle to je dost neprehledne.
Uprava, varovani pokud je min jak 2GB volne pameti.
[příloha smazaná administrátorem]
-
ha, ty záložky jsou pro mě novinka, to bude fungovat i v nemovi, bere záložky ze steného místa, protože jsou v obou identické i když používám jen nemo a nautila jen výjimečně abych věděl že exituje nebo když ho někde na cizím komplu musím použít.
Já zatím mám svůj scriptík následující:
#!/bin/bash
#výchozí hodnoty RAMdisku
velikost=10 #velikost v GiB
souborovysytem="tmpfs" #system souborů, tmpfs pevná velikost a ramfs může přetéct
nazev_slozky="RAMdisk"
pripojnybod="/home/"$USER"/"$nazev_slozky
#pripojeno=$(mount | grep $pripojnybod | cut -f=$pripojnybod);
pripojeno=$(ls -B $adresar | grep $nazev_slozky)
echo "Připojeno? : "$pripojeno
case $pripojeno in
$nazev_slozky)
echo "RAMdisk je připojen!"
echo "Přípojné místo:"
mount | grep $pripojnybod
echo "Přejete si ho odpojit? [Y/n]"
read odmountovat
case $odmountovat in
y)
echo "RAMdisk nezměnen."
;;
*)
echo "Odmountovávám RAMdisk..."
sudo umount $pripojnybod
sudo rmdir $pripojnybod
sudo swapoff -a && sudo swapon -a # pro jistotu, kdyby nahodou přeteklo na swap
;;
esac
;;
*)
echo "Přeješ si použít výchozí hodnoty? [Y/n]"
read vychozi
case "$vychozi" in
n)
echo "Zadej velikost v celých GiB"
read velikost
echo "Použít tmpfs [výchozí] nebo ramfs [1]?"
read typ
case $typ in
1)
pouzij="ramfs"
;;
*)
pouzij=$souborovysytem
;;
esac
;;
*)
velikost=10
pouzij=$souborovysytem
;;
esac
echo "Vytvářím RAMdisk v "$pripojnybod" o velikosti "$velikost"GiB a typu "$pouzij"."
sudo mkdir $pripojnybod
sudo chown -R $USER:$USER $pripojnybod
sudo chmod 777 $pripojnybod
sudo mount -t $pouzij -o size=$velikost"G" $pouzij $pripojnybod
;;
esac
exit 0