Skocz do zawartości

Automatyczne Montowanie Partycji Btrfs Z Kompresją


portals

Rekomendowane odpowiedzi

Witam

Mam partycje brtfs na backup szyfrowana w LVM, chcialbym zeby montowal sie z opcjami:compress-force,compress=zlib,autodefrag. Jednak nie chce dawac jej do fstab bo nie potrzebuje jej co kazde uruchomienie,

Wole kliknac backup w dolphin i podac haslo. Z kompresja radze radze sobie teraz przez polecenie:

#mount -o remount,compress-force,compress=zlib,autodefrag /media/backup/ jednak czasami zapominam to zrobic i dane sa zapisywane z slaba kompresja.

Wyczytalem ze mozna rozwiazac ten problem systemd wiec utworzylem plik /etc/systemd/system/mnt-backup.mount o takiej zawartosci:

[Mount]
What=/dev/mapper/udisks-luks-uuid-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000
Where=/mnt/backup6556
Options=compress-force,compress=zlib,autodefrag,mode=0777

I nie wiem czy dziala. Zmienilem Where celowo zeby zamontowalo w innym miejscu ale i tak jest w /media/backup/.

Prosze o jakies informacje jak sobie z tym poradzic. System fedora 17 jednak to nie ma chyba wiekszego znaczenia.

Odnośnik do komentarza
Udostępnij na innych stronach

Raczej powinienes zainteresowac sie stworzeniem odpowiedniej reguly udev. Tu https://wiki.archlin...v#Mount_options masz opisane jak przekazywac opcje do mount. Ponizej sa przyklady, takze reguly dla partycji z szyfrowaniem. Na pierwszy rzut oka moga wydawac sie dosyc skomplikowane, ale w rzeczywistosci nie powinno byc to az takie trudne. Zaproponowane tam rozwiazanie jest dosyc uniwersalne, a jesli Ty chcesz sie skupic tylko na konkretnej partycji to znacznie sie wszystko uprosci. Jesli juz stworzysz cos dzialajacego to podziel sie w tym temacie. Jesli napiszesz regule, ale nie bedzie dzialac to takze wklej ja tu i zobaczymy.

Odnośnik do komentarza
Udostępnij na innych stronach

Faktycznie za zrozumiele to nie jest ale to chyba powinno byc cos takiego(oprócz samych opcji montowania):

/etc/udev/rules.d/11-media-by-label-auto-mount.rules

 

#
# Import FS infos
IMPORT{program}="/sbin/blkid -o udev -p %N"
# Skip if lable not backup?
ENV{ID_FS_LABEL}!="backup", GOTO="media_by_label_auto_mount_end"

# Mount the device
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}"

# Clean up after removal
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}"

# Exit
LABEL="media_by_label_auto_mount_end"

 

Jednak nie wiem gdzie jest jakies odniesienie do {mount_options} i to chyba spowoduje automatyczne montowanie.

Druga sprawa jak dziala:

IMPORT{program}="/sbin/blkid -o udev -p %N"

?

Odnośnik do komentarza
Udostępnij na innych stronach

Na pierwszy rzut oka to wszystko zle :) Na tej partycji nie jest zalozone zadne haslo, ze pominales ten krok z cryptsetup luksOpen?

Co do opcji montowania to linie:

# Global mount options
ACTION=="add", ENV{mount_options}="noatime"
# Filesystem-specific mount options
ACTION=="add", PROGRAM=="/sbin/blkid -o value -s TYPE %E{device}", RESULT=="vfat|ntfs", ENV{mount_options}="%E{mount_options},utf8,gid=100,umask=002"

Jak widzisz w ostatniej linii ustalasz opcje specyficzne dla danego systemu plików. Musialbys to przepisac dla btrfs. Wlasciwie to móglbym napisac taka regule, ale nie mam zadnego dysku z szyfrowanymi partycjami. Wlasciwie to nigdy nie uzywalem szyfrowania. Tu jest glówny problem, ale moze pózniej spróbuje, zobaczymy. Na razie musisz liczyc na siebie, ewentualnie ktos moze sie dolaczy i pomoze.

Odnośnik do komentarza
Udostępnij na innych stronach

Pominalem bo wydawalo mi sie ze jak sie ze jak juz wpisze sie haslo pojawia sie urzadzenie które jest montowane ale wyglada na to ze sie mylilem, szkoda ze btrfs sam nie ma szyfrowania.

Gdy partycja jest zamontowane mount daje:

/dev/mapper/udisks-luks-uuid-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000 on /media/backup type btrfs (rw,nosuid,nodev,relatime,seclabel,nospace_cache,uhelper=udisks)

po uruchomieniu mojej komendy:

/dev/mapper/udisks-luks-uuid-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000 on /media/backup type btrfs (rw,nosuid,nodev,relatime,seclabel,compress-force=zlib,nospace_cache,autodefrag,uhelper=udisks)

Bede dalej próbowal.

Odnośnik do komentarza
Udostępnij na innych stronach

Ok, mam taki workaround. Regula udev /etc/udev/rules.d/99-remount.rules:

# nalezy zmienic nazwe urzadzenia oraz sciezke do skryptu
KERNEL=="sdb2", ACTION=="change", RUN+="/root/scripts/udev_remount"

A skrypt, który jest wywolywany /root/scripts/udev_remount:

#!/bin/bash

# nalezy zmienic uuid na wlasciwy dla urzadzenia
uuid="d6cb3e87-6f3f-4276-94fd-4c16085520af"

# opoznienie, aby luks zdazyl otworzyc partycje i udisks zamontowac
# w razie problemow nalezy zwiekszyc
sleep 3

# czy partycja o uuid jest zamontowana
cond=`grep "$uuid" /proc/self/mounts`
if [ "$cond" != "" ]
then
mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/luks-$uuid
fi
exit

Zwróc uwage na komentarze w kodzie. Jak klikniesz na partycje w Nautilusie i podasz haslo to zostanie zamontowana z normalnymi opcjami, a nastepnie po kilku sekundach przemontowana z wlaczona kompresja.

Informacje z jakimi opcjami zamontowane sa partycje znajdziesz w pliku /proc/self/mounts. Czyli jesli chcesz tylko na wyjsciu dostac informacje o danej partycji to wystarczy wykonac grep uuid /proc/self/mounts (gdzie za uuid w moim przypadku wstawiam d6cb3e87-6f3f-4276-94fd-4c16085520af).

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

Cos ciagle robie zle i nie dziala

Dysk po zamontowaniu ma takie dane:

/dev/mapper/udisks-luks-uuid-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000 on /media/backup type btrfs (rw,nosuid,nodev,relatime,seclabel,nospace_cache,uhelper=udisks)

Jako uuid potraktowalem caly fragment: 4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000 i nie dzialalo.

Kombinowalem dalej i odpalilem:

mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/luks-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000

co dalo

mount: trzeba okreslic typ systemu plików

troche mnie to zaskoczylo. Wydalem polecenie:

mount -t btrfs -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/luks-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000

to dostalem:

mount: /dev/mapper/luks-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000: montowanie nie powiodlo sie: Zly argument

Postanowilem zastosowac proste obejscie problemu zamieniajac

mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/luks-$uuid

na

mount -o remount,compress-force,compress=zlib,autodefrag /media/backup

Nie dalo to zadnego efektu, spróbowal tez dac to poza if'a i nic sie nie zmienilo. Nie wiem czy mam wpisac sda2 czy sda5, ale próbowalem obydwa. Co robie zle? Wysylam screena z programu "Dysk".

Czas podnosilem do 15 i tez brak efektu.

zrzutekranu7e.png

zrzutekranu8l.png

Odnośnik do komentarza
Udostępnij na innych stronach

Popelniles kilka bledów. Przede wszystkim zmienna $uuid nie moze byc zasmiecona, a dwa to, uzywasz róznych sciezek. Oczywiscie sda5, bo sda2 to partycja rozszerzona. No i korzystaj z narzedzi konsolowych zamiast graficznych, bo jak sam widzisz graficzne nie pozwolily Ci dojsc gdzie jest problem, a gdybys uzyl blkid i fdisk to byloby latwiej.

Ok poprawione skrypty:

/etc/udev/rules.d/99-remount.rules

KERNEL=="sda5", ACTION=="change", RUN+="/root/scripts/udev_remount"

/root/scripts/udev_remount (upewnij sie, ze skrypt jest wykonywalny, czyli nadaj mu prawa chmod +x /root/scripts/udev_remount):

#!/bin/bash
# nalezy zmienic uuid na wlasciwy dla urzadzenia
uuid="4929ec5d-15c1-49b5-a0b3-549282bd26d0"
# opoznienie, aby luks zdazyl otworzyc partycje i udisks zamontowac
# w razie problemow nalezy zwiekszyc
sleep 5
# czy partycja o uuid jest zamontowana
cond=`grep "$uuid" /proc/self/mounts`
if [ "$cond" != "" ]
then
mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/udisks-luks-uuid-$uuid-uid1000
fi
exit

I powinno dzialac.

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

Bo cos mnie chyba sciemniasz z tymi sda5. Tam wyzej masz na screenie po kliknieciu na sda5 jest napisane "Tak, zamontowane w /home", czyli cos tu sie nie zgadza. Nie powinienes próbowac zamontowac sda1? Wlacz sobie udevadm monitor potem zamontuj urzadzenie (normalnie przez klikniecie) i wklej tu wyjscie tego monitora. No i pokaz jeszcze blkid -o udev /dev/sda1 i blkid -o udev /dev/sda5

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

Tak pomieszalem i tu masz racje, jednak sam odkrylem ten blad jak wykonywalem instrukcje z Twojego posta nr 8. Partycja to sdb4 i taka mam wpisana.

udevadm monitor

KERNEL[7358.526592] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[7358.527092] add	  /devices/virtual/block/dm-0 (block)
UDEV  [7358.530850] add	  /devices/virtual/bdi/253:0 (bdi)
UDEV  [7358.553850] add	  /devices/virtual/block/dm-0 (block)
KERNEL[7358.577300] add	  /module/dm_crypt (module)
UDEV  [7358.577689] add	  /module/dm_crypt (module)
KERNEL[7358.577718] add	  /kernel/slab/:t-0000152 (slab)
UDEV  [7358.577740] add	  /kernel/slab/:t-0000152 (slab)
KERNEL[7358.641396] add	  /module/sha256_generic (module)
UDEV  [7358.642036] add	  /module/sha256_generic (module)
KERNEL[7358.652572] add	  /module/padlock_sha (module)
UDEV  [7358.653157] add	  /module/padlock_sha (module)
KERNEL[7358.656281] remove   /module/padlock_sha (module)
UDEV  [7358.656754] remove   /module/padlock_sha (module)
KERNEL[7358.657914] change   /devices/virtual/block/dm-0 (block)
KERNEL[7358.657960] change   /devices/virtual/block/dm-0 (block)
UDEV  [7358.659606] change   /devices/virtual/block/dm-0 (block)
UDEV  [7358.689128] change   /devices/virtual/block/dm-0 (block)
KERNEL[7358.692686] remove   /devices/virtual/block/dm-0 (block)
KERNEL[7358.693753] remove   /devices/virtual/bdi/253:0 (bdi)
UDEV  [7358.694218] remove   /devices/virtual/bdi/253:0 (bdi)
KERNEL[7358.695181] remove   /devices/virtual/block/dm-0 (block)
UDEV  [7358.696744] remove   /devices/virtual/block/dm-0 (block)
UDEV  [7358.697297] remove   /devices/virtual/block/dm-0 (block)
KERNEL[7358.836415] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[7358.836517] change   /devices/pci0000:00/0000:00:11.0/ata6/host5/target5:0:0/5:0:0:0/block/sdb/sdb4 (block)
KERNEL[7358.836612] add	  /devices/virtual/block/dm-0 (block)
KERNEL[7358.838201] change   /devices/virtual/block/dm-0 (block)
UDEV  [7358.838235] add	  /devices/virtual/bdi/253:0 (bdi)
UDEV  [7358.841381] add	  /devices/virtual/block/dm-0 (block)
UDEV  [7358.924949] change   /devices/virtual/block/dm-0 (block)
UDEV  [7368.886388] change   /devices/pci0000:00/0000:00:11.0/ata6/host5/target5:0:0/5:0:0:0/block/sdb/sdb4 (block)
KERNEL[7373.517294] add	  /devices/virtual/bdi/btrfs-6 (bdi)
UDEV  [7373.518762] add	  /devices/virtual/bdi/btrfs-6 (bdi)

blkid -o udev /dev/sdb4

ID_FS_UUID=4929ec5d-15c1-49b5-a0b3-549282bd26d0
ID_FS_UUID_ENC=4929ec5d-15c1-49b5-a0b3-549282bd26d0
ID_FS_TYPE=crypto_LUKS

Odnośnik do komentarza
Udostępnij na innych stronach

No to jak masz dobra nazwe urzadzenia to powinno dzialac. U mnie dziala, ale ja nie uzywam Fedory i tak sobie mysle, ze moze SELinux blokuje wykonanie tej reguly lub skryptu? Ewentualnie, zeby sie upewnic, ze skrypt nie jest wykonywany to dodaj sobie zaraz na poczatku /root/scripts/udev_remount jakies echo do pliku np. echo "test" >> /root/udev.test. Jesli taki plik nie zostanie utworzony to trzeba szukac w regule, dlaczego ona nie wykonuje sie chociaz powinna, bo zwróc uwage na linie KERNEL[7358.836517] change /devices/pci0000:00/0000:00:11.0/ata6/host5/target5:0:0/5:0:0:0/block/sdb/sdb4 (block), czyli warunki KERNEL=="sda5", ACTION=="change" zostaly spelnione i powinno przejsc do wykonania RUN. Podejrzewam, ze albo jakies zabezpieczenia w Fedorze, albo masz gdzies jakis glupi blad. Ten plik reguly powinien standardowe prawa -rw-r--r-- 1 root root.

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dodalem i skrypt okazalo ze skrypt wykonywany jest bez problemu. Przerobilem go tak:

#!/bin/bash
echo "test" >> /root/udev.test
# nalezy zmienic uuid na wlasciwy dla urzadzenia
uuid="4929ec5d-15c1-49b5-a0b3-549282bd26d0"
# opoznienie, aby luks zdazyl otworzyc partycje i udisks zamontowac
# w razie problemow nalezy zwiekszyc
sleep 3
mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/udisks-luks-uuid-$uuid-uid1000 > /root/out/out.txt
# czy partycja o uuid jest zamontowana
cond=`grep "$uuid" /proc/self/mounts`
if [ "$cond" != "" ]
then
mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/udisks-luks-uuid-$uuid-uid1000
fi
exit

Efekt taki ze udev.test powstaje z tekstem test a out.txt jest pusty. Niby wszystko super tyle ze grep uuid /proc/self/mounts daje

/dev/mapper/udisks-luks-uuid-4929ec5d-15c1-49b5-a0b3-549282bd26d0-uid1000 /media/backup btrfs rw,seclabel,nosuid,nodev,relatime,nospace_cache 0 0

Czyli nie tak jak powinno byc. Wylacze jutro SELinux, choc pewnie wyrzucalo by bledy przez setroubleshoot.

Odnośnik do komentarza
Udostępnij na innych stronach

No w tym out.txt na pewno nic nie bedzie, bo niby co mialoby zostac wydrukowane z polecenia montowania? Czyli wszystko jest wykonywane ok. Jesli skrypt jest wykonywany z palca dziala to moze ten sleep jest za krótki, bo ja to w sumie testowane na pamieci flash. Spróbuj takich poprawek:

#!/bin/bash echo "test" >> /root/udev.test 
uuid="4929ec5d-15c1-49b5-a0b3-549282bd26d0"
sleep 7 
cond=`grep "$uuid" /proc/self/mounts` 
if [ "$cond" != "" ] 
then 
mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/udisks-luks-uuid-$uuid-uid1000 
else
echo "niezamontowana" >> /root/udev.test
fi
exit

Jesli skrypt sie wykona i partycja nie bedzie zamontowana to wydrukuje "niezamontowana" do pliku /root/udev.test.

  • Upvote 1
Odnośnik do komentarza
Udostępnij na innych stronach

Wiem w czym problem chyba. Jesli sie od montuje i ponownie podmontuje w calach testu to skrypt sie nie aktywuje.

Log jest taki

KERNEL[383.218518] remove   /devices/virtual/bdi/btrfs-6 (bdi)
UDEV  [383.220280] remove   /devices/virtual/bdi/btrfs-6 (bdi)
KERNEL[383.491694] remove   /devices/virtual/block/dm-0 (block)
KERNEL[383.492362] remove   /devices/virtual/bdi/253:0 (bdi)
KERNEL[383.492711] remove   /devices/virtual/block/dm-0 (block)
UDEV  [383.492884] remove   /devices/virtual/bdi/253:0 (bdi)
UDEV  [383.501241] remove   /devices/virtual/block/dm-0 (block)
UDEV  [383.502164] remove   /devices/virtual/block/dm-0 (block)
KERNEL[387.588452] add	  /devices/virtual/bdi/253:0 (bdi)
UDEV  [387.589426] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[387.589475] add	  /devices/virtual/block/dm-0 (block)
KERNEL[387.590162] change   /devices/virtual/block/dm-0 (block)
KERNEL[387.590210] change   /devices/virtual/block/dm-0 (block)
UDEV  [387.591784] add	  /devices/virtual/block/dm-0 (block)
UDEV  [387.592074] change   /devices/virtual/block/dm-0 (block)
UDEV  [387.598794] change   /devices/virtual/block/dm-0 (block)
KERNEL[387.600518] remove   /devices/virtual/block/dm-0 (block)
KERNEL[387.601140] remove   /devices/virtual/bdi/253:0 (bdi)
KERNEL[387.601225] remove   /devices/virtual/block/dm-0 (block)
UDEV  [387.601610] remove   /devices/virtual/bdi/253:0 (bdi)
UDEV  [387.601994] remove   /devices/virtual/block/dm-0 (block)
UDEV  [387.602535] remove   /devices/virtual/block/dm-0 (block)
KERNEL[387.733239] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[387.733364] change   /devices/pci0000:00/0000:00:11.0/ata6/host5/target5:0:0/5:0:0:0/block/sdb/sdb4 (block)
KERNEL[387.733387] add	  /devices/virtual/block/dm-0 (block)
UDEV  [387.733713] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[387.734082] change   /devices/virtual/block/dm-0 (block)
UDEV  [387.735341] add	  /devices/virtual/block/dm-0 (block)
UDEV  [387.831222] change   /devices/virtual/block/dm-0 (block)
KERNEL[418.613272] remove   /devices/virtual/block/dm-0 (block)
KERNEL[418.613315] remove   /devices/virtual/bdi/253:0 (bdi)
KERNEL[418.613644] remove   /devices/virtual/block/dm-0 (block)
UDEV  [418.613809] remove   /devices/virtual/bdi/253:0 (bdi)
UDEV  [418.621681] remove   /devices/virtual/block/dm-0 (block)
UDEV  [418.622540] remove   /devices/virtual/block/dm-0 (block)
KERNEL[426.188599] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[426.188892] add	  /devices/virtual/block/dm-0 (block)
UDEV  [426.189619] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[426.189988] change   /devices/virtual/block/dm-0 (block)
KERNEL[426.190043] change   /devices/virtual/block/dm-0 (block)
UDEV  [426.194787] add	  /devices/virtual/block/dm-0 (block)
UDEV  [426.196134] change   /devices/virtual/block/dm-0 (block)
UDEV  [426.204840] change   /devices/virtual/block/dm-0 (block)
KERNEL[426.207154] remove   /devices/virtual/block/dm-0 (block)
KERNEL[426.207461] remove   /devices/virtual/bdi/253:0 (bdi)
KERNEL[426.207554] remove   /devices/virtual/block/dm-0 (block)
UDEV  [426.207718] remove   /devices/virtual/bdi/253:0 (bdi)
UDEV  [426.209264] remove   /devices/virtual/block/dm-0 (block)
UDEV  [426.210277] remove   /devices/virtual/block/dm-0 (block)
KERNEL[426.347435] add	  /devices/virtual/bdi/253:0 (bdi)
KERNEL[426.347754] add	  /devices/virtual/block/dm-0 (block)
KERNEL[426.348036] change   /devices/virtual/block/dm-0 (block)
UDEV  [426.348195] add	  /devices/virtual/bdi/253:0 (bdi)
UDEV  [426.349316] add	  /devices/virtual/block/dm-0 (block)
UDEV  [426.404436] change   /devices/virtual/block/dm-0 (block)
KERNEL[426.466339] add	  /devices/virtual/bdi/btrfs-7 (bdi)
UDEV  [426.467486] add	  /devices/virtual/bdi/btrfs-7 (bdi)

/devices/pci0000:00/0000:00:11.0/ata6/host5/target5:0:0/5:0:0:0/block/sdb/sdb4 (block) jest tylko raz a dysk montowalem co najmniej dwukrotnie. Za pewne konieczna jest zmiana w /etc/udev/rules.d/99-remount.rules aby to poprawic. Poszukam w https://wiki.archlin...v#Mount_options jednak te reguly sa dla mnie jeszcze nie zbyt jasne.

 

Dla testów (i troche wygody) przerobilem Twój skrypt:

#!/bin/bash

uuid="4929ec5d-15c1-49b5-a0b3-549282bd26d0"

i=0;
while [ $i -le 60 ] ; do
	cond=`grep "$uuid" /proc/self/mounts`
	if [ "$cond" != "" ]
			then
			echo "Montuje"
			mount -o remount,compress-force,compress=zlib,autodefrag /dev/mapper/udisks-luks-uuid-$uuid-uid1000
			exit

	else

			echo "Dysk niezamontowany, czekam juz $i s"
			i=$[i + 1]
			sleep 1
	fi

done

echo "TIMEOUT $i"
exit

Pewnie bardziej obciaza procesor ale montuje szybciej i moze dluzej czekac. Bardzo dziekuje za pomoc i poswiecony czas.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...