ทุบตีสามารถซิงค์กับระบบไฟล์ได้หรือไม่


12

ฉันอาจใช้ถ้อยคำของคำถามไม่ถูกต้อง แต่ฉันจะพยายามอย่างเต็มที่เพื่ออธิบายอาการที่ฉันพบ อันดับแรกสำหรับบริบทฉันใช้เซิร์ฟเวอร์ Ubuntu (ไม่มี GUI) รุ่น 12.04.3 LTS (ตามยูทิลิตี้ lsb_release) ฉันมักจะทำงานทั้งหมดของฉันใน tmux ฉันเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน Putty และฉันใช้เป็นกลุ่มสำหรับการแก้ไขข้อความทั้งหมดของฉัน

ตอนนี้สำหรับอาการ ตั้งแต่ฉันใช้ tmux ฉันมักจะเปิดหน้าต่างไม่กี่ครั้งตลอดเวลา หนึ่งในนั้นมีโหนดเซิร์ฟเวอร์ที่ฉันเล่นด้วยและมันอยู่ในไดเรกทอรีย่อยของบ้านบัญชีผู้ใช้ของฉัน (โดยเฉพาะ~/battleship) เซิร์ฟเวอร์โต้ตอบกับเว็บเพจฉันยังโฮสต์นอกเซิร์ฟเวอร์โดยใช้ nginx และรหัสเว็บไซต์ทั้งหมดอยู่ใน/usr/share/nginx/www/bs(ฉันยังเปิดหน้าต่างแยกต่างหากสำหรับการแก้ไขแหล่งไคลเอนต์) สิ่งที่เกิดขึ้นคือหลังจากผ่านไปหลายชั่วโมงที่ปล่อยให้หน้าต่างเซิร์ฟเวอร์ว่างและไม่มีการแตะต้องดูเหมือนว่าจะไม่ซิงค์กัน ฉันสามารถเรียกใช้lsและดูไฟล์และฉันสามารถเปิดเพื่อแก้ไข ( vim server.js) อย่างไรก็ตามเมื่อฉันทำเช่นนั้นไม่ว่าฉันจะทำการเปลี่ยนแปลงและบันทึกหรือเลิกเล่นทันทีเมื่อฉันรันlsอีกครั้งฉันเห็นไฟล์ .server.js.swp และไม่มีการเปลี่ยนแปลงใด ๆ (ถ้าทำ) ยังคงมีอยู่ ถ้าฉันย้ายออกจากไดเรกทอรีนั้นแล้วกลับมาอีกครั้งมันจะแก้ไขตัวเอง - ฉันสามารถเปิดไฟล์และแก้ไขได้สำเร็จโดยไม่ทิ้ง a .swp ไว้เมื่อฉันปิดมัน ฉันพูดถึงแหล่งที่มาของลูกค้าครึ่งสิ่งเพราะฉันสังเกตเห็นว่าสิ่งนี้ไม่ได้เกิดขึ้นในโฟลเดอร์ / www (น่าจะเป็นเพราะมันอยู่นอกไดเรกทอรีหลักของบัญชีผู้ใช้ของฉัน)

หลังจากกำแพงข้อความนั้นคำถามของฉันคือ: ไม่มีใครรู้ว่าทำไมสิ่งนี้ถึงเกิดขึ้นและจะป้องกันได้อย่างไร? ฉันนึกได้แค่ว่ามีบางวิธีพิจารณาว่านี่ไม่ใช่เซิร์ฟเวอร์ Linux ตัวเดียวที่ฉันเชื่อมต่อผ่านทาง Putty และใช้ tmux / vim บน แต่ก็เป็นสิ่งเดียวที่พฤติกรรมแปลกประหลาดนี้เกิดขึ้น ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

หมายเหตุ: ฉันติดแท็กสิ่งนี้ด้วย bash, tmux และ putty เพราะฉันสมมติว่าหนึ่งในนั้นคือโทษ แต่จริง ๆ แล้วฉันก็ไม่รู้เลย

อัปเดต:นี่คือผลลัพธ์ของcat /proc/mountตามที่ Gilles ร้องขอ (แม้ว่าชื่อผู้ใช้ของฉันและค่าของecryptfs_fnek_sigและการecryptfs_sigเซ็นเซอร์เพราะในขณะที่ฉันไม่ทราบว่าทั้งสองสิ่งคืออะไรพวกเขาดูเหมือนจะเกี่ยวข้องกับการเข้ารหัสและปลอดภัยกว่าขออภัย)

rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,relatime,size=2008532k,nr_inodes=502133,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=807840k,mode=755 0 0
/dev/disk/by-uuid/2da27263-f079-47ba-90ad-66e4c3a53810 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
/home/[username]/.Private /home/[username] ecryptfs rw,relatime,ecryptfs_fnek_sig=[censored],ecryptfs_sig=[censored],ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs 0 0

อัปเดต 2:นี่คือผลลัพธ์ของuname -a:

Linux [server-name] 3.5.0-39-generic #60~precise1-Ubuntu SMP Wed Aug 14 15:38:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

อัปเดต 3:ฉันทำข้อสอบเสร็จแล้ว นี้เป็นผลจากการทดสอบดังกล่าว ดูเหมือนว่าจะเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาดดังนั้นฉันไม่แน่ใจว่าจะช่วยอะไรได้หรือไม่ คุณยังสามารถดูรายละเอียดฮาร์ดแวร์บางอย่างในกรณีที่ช่วยได้ แต่อย่างใด


3
ไม่ bash ไม่สามารถ "ไม่ซิงค์กับระบบไฟล์" และนั่นไม่ใช่สิ่งที่เกิดขึ้น มันเป็นเหมือนระบบไฟล์กำลังซิงค์กับระบบไฟล์ไม่ได้ มันเป็นปัญหาอย่างแน่นอนและเป็นเรื่องแปลก คุณใช้ระบบไฟล์ใด (โพสต์เอาต์พุตcat /proc/mounts) นี่อาจเป็นเซิร์ฟเวอร์เสมือนจริงที่ใช้เวอร์ชวลไลเซชันชนิดใด
Gilles 'หยุดความชั่วร้าย'

1
@Gilles ฉันได้อัปเดตคำถามเพื่อรวมผลลัพธ์ของcat /proc/mountsคุณไว้ด้วย หวังว่ามันจะมีความหมายกับคุณ - ฉันยังใหม่กับ Linux ดังนั้นจึงมีการเรียนรู้มากมายจากการทำและฉันยังไม่ได้พูดถึงระบบไฟล์เลย (ยังไม่ได้ใช้)
อเล็กซ์

4
ดังนั้นปัญหาเกิดขึ้นกับระบบไฟล์ ecryptfs สิ่งนี้ดูเหมือนข้อบกพร่องใน ecryptfs หรือในส่วนอื่น ๆ ของเคอร์เนลหรือในซอฟต์แวร์การจำลองเสมือนถ้ามีหรือข้อผิดพลาดของฮาร์ดแวร์ สิ่งนี้ทำงานบนฮาร์ดแวร์ของคุณเองในกล่องหรือบนชั้นวางหรือเป็นเซิร์ฟเวอร์เสมือนจริงที่มีผู้ให้บริการโฮสต์บางรายหรือไม่ ผลลัพธ์ของuname -aอะไร หากเป็นฮาร์ดแวร์ของคุณให้เสียบคอนโซลและทำการทดสอบหน่วยความจำในการบูตครั้งถัดไป หากโฮสต์อยู่โปรดติดต่อผู้ให้บริการโฮสต์ของคุณและอธิบายถึงอาการเหล่านี้
Gilles 'หยุดความชั่วร้าย'

1
หากคุณเรียกใช้sudo syncไฟล์จะได้รับการอัพเดตหรือไม่?
Braiam

1
ลองคำสั่ง sync นอกจากนี้ df cmd ยังมีประโยชน์ในการแสดงว่า dir อยู่ที่ใด กดไลค์ / proc / mount แต่ให้เอาต์พุตที่อ่านได้มากกว่า df -h /www ~/battleship /usr/share/nginx/www/bsDo ปัญหาเกี่ยวกับการเข้ารหัส mounts หรือไม่? อาจจำเป็นต้องมีการประมวลผล sw พิเศษสำหรับการเขียนลงดิสก์นั้น
gaoithe

คำตอบ:


1

ประสบการณ์เดียวที่ฉันได้เห็นจากสิ่งนี้คือเมื่อไดเรกทอรีถูกลบและสร้างขึ้นใหม่ AIX และ Solaris มีปัญหานี้ย้อนหลังไปหลายปี หากคุณมีเซสชั่นเปลือกเปิดในไดเรกทอรีที่ลบออกคุณสามารถรับผลลัพธ์ที่คาดเดาไม่ได้ซึ่งมีลักษณะเหมือนระบบไฟล์ที่ไม่ซิงค์กัน

bash1: mkdir test1
bash2: cd test1
bash1: touch test1/testfile
bash1: ls test1
testfile
bash2: ls
testfile
bash1: rm -rf test1
bash2: ls
???(unknown results)???

ระบบไฟล์ที่เข้ารหัสดูเหมือนจะมีบางอย่างที่ต้องรีวิวเช่นกัน คุณลองในระบบไฟล์ที่ไม่ได้เข้ารหัสหรือไม่?

ขออภัยฉันยังไม่สามารถโพสต์ความคิดเห็น คะแนนไม่เพียงพอ


สิ่งนี้เกี่ยวข้องกับคำถามโดยที่ bash shell จะอยู่ในไดเรกทอรีเริ่มต้นซึ่งไม่มีอยู่และมันเป็นไปไม่ได้ที่จะสร้างไฟล์
ubfan1

1
ฉันสามารถทดลองเล็ก ๆ น้อย ๆ นี้ได้ แต่ฉันค่อนข้างมั่นใจในตอนนี้ว่ามันเป็นปัญหาของการเข้ารหัสลับ ไดเรกทอรีที่สงสัยยังคงมีอยู่; ฉันสามารถทำงานได้ตามปกติหลังจากง่ายcd .เมื่อฉันกลับมาที่เซสชั่นหลังจากที่ในขณะ ณ จุดนี้ฉันเพียงแค่พิจารณาการสำรองข้อมูลทุกอย่างล้างเซิร์ฟเวอร์และติดตั้งใหม่โดยไม่ต้องใช้ระบบไฟล์ที่เข้ารหัส ฉันไม่เก็บอะไรที่สำคัญไว้จากระยะไกลดังนั้นฉันจึงไม่กังวลเกี่ยวกับการเข้ารหัสไฟล์ของฉัน
Alex

ผู้ดูแล / ผู้เขียน eCryptfs ใน Ubuntu ตอบสนองต่อรายงานบั๊กได้เป็นอย่างดี หากคุณไม่พบวิธีแก้ปัญหาอาจเป็นไปได้ที่จะขอให้เขาหรือรายงานข้อผิดพลาด
blujay

0

คุณสามารถลองใช้คำสั่ง sync ระหว่างคำสั่ง bash ของคุณ

sync - flush file system buffers

ฉันไม่เคยพบว่ามีความต้องการตัวเอง แต่ได้รู้จักคนอย่างน้อยหนึ่งคนที่พิมพ์มันตามจริงทุกคำสั่งที่สอง! ต้องมีการเขียนที่ไม่ดีในอดีตด้วยดิสก์ที่ช้า

อินเทอร์เน็ตดูเหมือนจะมีข้อsyncสงสัยเกี่ยวกับการใช้คำสั่ง นี่คือลิงค์ไปยังรายการคู่มือสั้น ๆ สำหรับsync: http://www.gnu.org/software/coreutils/manual/html_node/sync-invocation.html

syncรับประกันว่าข้อมูลจะถูกเขียนจากหน่วยความจำไปยังอุปกรณ์ดิสก์ ข้อมูลอาจยังอยู่ในหน่วยความจำแคชของอุปกรณ์ดิสก์และไม่ได้เขียนลงดิสก์ถ้าอุปกรณ์ดิสก์ทำงานช้าหรือมีปัญหา

คุณใช้เซิร์ฟเวอร์อูบุนตู . . นั่นคือเครื่องบนเดสก์ท็อปของคุณ? หรือมันอยู่ในก้อนเมฆ? หรือ . . . อื่น ๆ อีก? ดูที่นี่: /server/534627/what-does-the-sync-command-do ทำการซิงค์ช้าจากหน่วยความจำไปยังดิสก์ที่เกี่ยวข้องกับปัญหาฮาร์ดดิสก์หรืออาจเป็นกับ Amazon AWS อินสแตนซ์ขนาดเล็ก


1
ฉันไม่แน่ใจว่าsyncจะใช้งานได้หรือไม่ ฉันพบว่าการทำเช่นนี้cd .ช่วยบรรเทาปัญหาได้แล้ว ฉันทำนามแฝงrefสำหรับมัน (ฉันรู้ว่าการประหยัดอักขระหนึ่งตัวเป็นเรื่องโง่ ๆ ) ซึ่งฉันใช้ในการนิสัยทุกครั้งที่ฉันกลับมาที่เซสชั่นเก่าตอนนี้ สำหรับเซิร์ฟเวอร์คืออะไรมันคือเดสก์ท็อปทาวเวอร์รุ่นเก่าของฉัน (ฉันสร้างขึ้นใหม่เมื่อปีที่แล้ว) ซึ่งตอนนี้อยู่ที่มุมห้องนั่งเล่นที่ใช้ Ubuntu distro ดังนั้นฉันจึงสามารถเข้าถึงฮาร์ดแวร์ได้อย่างเต็มประสิทธิภาพ บนมัน
Alex

0

FWIW ปัญหาถูกแสดงโดยคำสั่ง ls ไม่ใช่โดย bash

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

คุณใช้เซสชัน VIM หรือไม่? ฉันไม่ทราบว่าเซสชัน VIM ไม่เคยใช้ด้วยตนเอง แต่ฉันคิดว่า tmux อาจทำให้ตัวจัดการเซสชัน VI ไม่ทราบว่าไฟล์ถูกปิดและติดตามการเปลี่ยนแปลงของคุณ

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