Co jest nie tak z tą sekwencją operacji, działającą w systemie Debian Squeeze z systemem plików Btrfs?
$ dd if=/dev/zero of=swapfile2 bs=1024 count=524288
$ sudo mkswap swapfile2
$ sudo chown root:root swapfile2
$ sudo chmod 0600 swapfile2
$ sudo swapon -v -f swapfile2
swapon on swapfile2
swapon: /home/mathieu/swapfile2: found swap signature: version 1, page-size 4, same byte order
swapon: /home/mathieu/swapfile2: pagesize=4096, swapsize=536870912, devsize=536870912
swapon: swapfile2: swapon failed: Invalid argument
Mój system plików to:
$ mount
/dev/mapper/voxbox-root on / type btrfs (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/mapper/voxbox-boot on /boot type ext2 (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
linux
filesystems
swap
btrfs
malat
źródło
źródło
Odpowiedzi:
jak pisał przez Malát
źródło
btrfs
plików nie może obsługiwać plików wymiany, ponieważ przenosi dane pliku, a kod wymiany systemu Linux pobiera mapowanie pliku wymiany tylko raz. Gdyby było to dozwolone, nastąpiłaby katastrofa - losowe dane pliku, które korzystały z bloków, które kiedyś użył plik wymiany, zostałyby uszkodzone.Mam mniej niż 50 reputacji, więc nie mogę komentować. Ale muszę zaktualizować istniejące odpowiedzi. W jądrze Linuksa 5.0.0, btrfs natywnie obsługuje teraz plik wymiany. (Musisz ustawić jako no-COW)
Oto kilka informacji z kernel.org: https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F
Ten link pokazuje, jak to zrobić: https://wiki.archlinux.org/index.php/swap#Swap_file .
NIE WYPRÓBUJ GO W LINUX <4.21 !!!
źródło
Jeśli mimo wszystko chcesz zamienić plik, po prostu użyj btrfs-swapon
źródło
truncate -s 4G swapfile_holes.img
. To jest powodem, dla któregoswapon
sprawdza się coś, że plik wymiany powinien spełniać pewne wymagania dotyczące rozsądnej wydajności.losetup
mapowania. Mój system utknął po rozpoczęciu korzystania z wymianylosetup
na btrfs (z wcześniej przydzielonym plikiem). Może to w jakiś sposób zakłóca bufory i pamięci podręczne. Tj. System chce zwolnić pamięć i coś wymienia, ale powoduje to zwiększenie pamięci podręcznej dla tego samego rozmiaru. Chociaż nie jestem pewien, unikałbym tego.Aktualizacja kwiecień 2019 : Zobacz odpowiedź recolic, która twierdzi, że Btrfs zaczął obsługiwać swap od jądra Linuksa w wersji 5.0.0.
Oryginalna odpowiedź:
Odpowiedź Sathya wydaje się zawierać martwe linki.
Znalazłem to w FAQ Btrfs:
Źródło: https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F
źródło
Invalid argument
mówi, że coś jest nie tak z argumentamiswapon
polecenia.Przede wszystkim czytaj
man swapon
.Spróbować
sudo swapon swapfile2
. W moim przypadku to działa.źródło