การสลับล้มเหลว: อาร์กิวเมนต์ไม่ถูกต้องบนระบบ Linux พร้อมระบบไฟล์ Btrfs


16

เกิดอะไรขึ้นกับลำดับการทำงานนี้ทำงานบนระบบ Debian Squeeze ด้วยระบบไฟล์ 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

ระบบไฟล์ของฉันคือ:

$ 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)

malat ฉันได้เปิดคำถามของคุณใหม่และเพิ่มคำตอบของคุณด้านล่าง รู้สึกอิสระที่จะโพสต์คำตอบของคุณฉันจะลบของฉัน
Sathyajith Bhat

ที่เกี่ยวข้อง: วิธีการสร้างแฟ้มสลับบน ext4
kenorb

คำตอบ:


16

รายงานข้อผิดพลาดนี้นำไปสู่การสนทนานี้

ดังนั้นควรอ่าน "อาร์กิวเมนต์ไม่ถูกต้อง" ใน "ระบบไฟล์ของคุณไม่รองรับไฟล์สลับ"

เป็นโพสต์โดยMalat


6
รับได้สวย! btrfsระบบแฟ้มไม่สามารถรองรับไฟล์แลกเปลี่ยนเพราะมันย้ายแฟ้มข้อมูลไปรอบ ๆ และรหัสแลกเปลี่ยนลินุกซ์ใช้เวลาเพียงการทำแผนที่แลกเปลี่ยนไฟล์ของครั้ง ความหายนะจะเกิดขึ้นหากได้รับอนุญาต - ข้อมูลไฟล์สุ่มที่ใช้บล็อกว่าไฟล์สลับครั้งที่ใช้จะเสียหาย
David Schwartz

1
swapon man page เอกสารที่มีเคล็ดลับใหม่ "วิธีแก้ไขปัญหาหนึ่งที่เป็นไปได้คือการแมปไฟล์กับอุปกรณ์ลูปแบ็ค" ฉันยังไม่ได้ลอง
malat

8

ฉันมีชื่อเสียงน้อยกว่า 50 จึงไม่สามารถแสดงความคิดเห็นได้ แต่ฉันต้องอัปเดตคำตอบที่มีอยู่ ใน linux kernel 5.0.0, btrfs สนับสนุน swapfile ทันที (คุณต้องตั้งเป็น no-COW)

นี่คือข้อมูลบางส่วนจาก kernel.org: https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F

จากเคอร์เนล 5.0+ btrfs มีการสนับสนุนไฟล์ native swap แต่มีข้อ จำกัด บางประการ สลับไฟล์ - ต้องจัดสรรอย่างสมบูรณ์เป็น NOCOW โดยไม่มีการบีบอัดบนอุปกรณ์เดียว

การเชื่อมโยงนี้แสดงให้เห็นวิธีการทำ: https://wiki.archlinux.org/index.php/swap#Swap_file

อย่าลองใช้มันใน LINUX <4.21 !!!

คำเตือน: Btrfs บนเคอร์เนล Linux ก่อนเวอร์ชัน 5.0 ไม่รองรับไฟล์สลับ การไม่ปฏิบัติตามคำเตือนนี้อาจส่งผลให้ระบบไฟล์เสียหาย ในขณะที่ไฟล์สลับอาจใช้กับ Btrfs เมื่อติดตั้งผ่านอุปกรณ์ลูปซึ่งจะส่งผลให้ประสิทธิภาพการแลกเปลี่ยนลดลงอย่างรุนแรง


1
คุณสามารถอ้างอิงส่วนที่เกี่ยวข้องในลิงค์ของคุณได้หรือไม่?
Burgi

@Burgi ฉันได้แก้ไขคำตอบแล้วตอนนี้ดีกว่าแล้ว!
recolic

2

หากคุณต้องการสลับไฟล์ให้ใช้btrfs-swapon


ฉันมาที่ทางออกเดียวกัน แต่ฉันมีข้อกังวลเกี่ยวกับความถูกต้องของวิธีการดังกล่าว อดีต กับวง dev truncate -s 4G swapfile_holes.imgฉันอ้อยทำงานรอบหลุมตรวจสอบที่สร้างขึ้นด้วย นั่นคือเหตุผลที่ทำไมการswaponตรวจสอบบางอย่างก็คือ swapfile ควรตอบสนองความต้องการบางอย่างเพื่อประสิทธิภาพที่สมเหตุสมผล
ony

1
และเมื่อไม่นานมานี้ฉันตัดสินใจหลีกเลี่ยงการใช้losetupแผนที่ ระบบของฉันค้างหลังจากเริ่มใช้ swap ถึงlosetupบน btrfs (พร้อมไฟล์ที่จัดสรรล่วงหน้า) บางทีมันอาจรบกวนการทำงานของบัฟเฟอร์และแคช ระบบ IE ต้องการที่จะเพิ่มหน่วยความจำและแลกเปลี่ยนบางสิ่งบางอย่าง แต่ผลลัพธ์นี้ในการเพิ่มแคชสำหรับขนาดเดียวกัน แม้ว่าฉันจะไม่แน่ใจ แต่ฉันก็หลีกเลี่ยงสิ่งนั้น
ony

0

อัปเดตเมษายน 2019 : โปรดดูคำตอบของ recolic ซึ่งอ้างว่าBtrfs เริ่มสนับสนุนการแลกเปลี่ยนเป็น Linux kernel เวอร์ชั่น 5.0.0

คำตอบเดิม:

คำตอบของ Sathya ดูเหมือนจะมีลิงค์ที่ตายแล้ว

ฉันพบสิ่งนี้ในคำถามที่พบบ่อย Btrfs:

btrfs รองรับไฟล์ swap หรือไม่

ปัจจุบันไม่มี เพียงแค่การสร้างไฟล์ NOCOW ก็ไม่ได้ช่วยการแลกเปลี่ยนไฟล์นั้นขึ้นอยู่กับฟังก์ชั่นหนึ่งที่ btrfs จงใจไม่ได้ใช้งานเนื่องจากความเสียหายที่อาจเกิดขึ้น การติดตั้งใช้งานจะขึ้นอยู่กับสมมติฐานบางอย่างซึ่งอาจไม่ถือเป็น btrfs เช่นหมายเลขบล็อกในไฟล์สลับในขณะที่ btrfs มีการแมปหมายเลขบล็อกที่แตกต่างกันในกรณีที่มีอุปกรณ์หลายชิ้น มี API ใหม่ที่สามารถใช้เพื่อเปลี่ยนพอร์ตเป็น btrfs; สำหรับรายละเอียดเพิ่มเติมดูที่แนวคิดโครงการ # สนับสนุนไฟล์สลับ

วิธีแก้ปัญหาแม้ว่าจะมีประสิทธิภาพต่ำก็คือการเมาท์ไฟล์ swap ผ่านอุปกรณ์ลูป

ที่มา: https://btrfs.wiki.kernel.org/index.php/FAQ#Does_btrfs_support_swap_files.3F


คำถามที่พบบ่อยยังบอกว่าแลกเปลี่ยนบน Btrfs ได้รับการสนับสนุนตั้งแต่ Linux kernel 5.0
phuclv

@phuclv: Yay, คืบหน้า!
mpb

-2

Invalid argumentบอกว่ามีบางอย่างผิดปกติในการโต้แย้งสำหรับswaponคำสั่ง

man swaponครั้งแรกของทั้งหมดอ่าน

ลองsudo swapon swapfile2ดู ในกรณีของฉันมันใช้งานได้


5
คุณอาจคิดว่าฉันสามารถหาแฟล็ก -v และ -f ได้โดยไม่ต้องอ่าน man page?
malat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.