มีข้อเสียใด ๆ ของ `cp --sparse = always` หรือไม่?


10

มีเหตุผลใด ๆไม่ได้ที่จะใช้การใช้งาน--sparse=alwaysด้วยการภาวนาทุกcp?

info cp พูดว่า:

‘--sparse=WHEN’
     A “sparse file” contains “holes”—a sequence of zero bytes that does
     not occupy any physical disk blocks; the ‘read’ system call reads
     these as zeros.  This can both save considerable disk space and
     increase speed, since many binary files contain lots of consecutive
     zero bytes.  By default, ‘cp’ detects holes in input source files
     via a crude heuristic and makes the corresponding output file
     sparse as well.  Only regular files may be sparse.

    The WHEN value can be one of the following:

...

    ‘always’
          For each sufficiently long sequence of zero bytes in the input
          file, attempt to create a corresponding hole in the output
          file, even if the input file does not appear to be sparse.
          This is useful when the input file resides on a file system
          that does not support sparse files (for example, ‘efs’ file
          systems in SGI IRIX 5.3 and earlier), but the output file is
          on a type of file system that does support them.  Holes may be
          created only in regular files, so if the destination file is
          of some other type, ‘cp’ does not even try to make it sparse.

มันยังบอกว่า:

[... ] ด้วยนามแฝงต่อไปนี้ 'cp' จะใช้จำนวนพื้นที่ขั้นต่ำที่ระบบไฟล์รองรับ

alias cp='cp --reflink=auto --sparse=always'

เหตุใดจึงไม่--sparse=alwaysเริ่มต้น


1
มันเข้ากันไม่ได้กับ--reflinkที่ฉันไม่รู้ ...
สตีเฟ่น Kitt

อาจเป็นเพราะนักพัฒนาซอฟต์แวร์ต้องการที่จะใช้หลักการของความประหลาดใจน้อยที่สุดหรือเพราะ POSIX ระบุไว้เป็นอย่างอื่น? (คือ cp แม้ใน posix ฉันลืม)
cat

2
การตรวจสอบการกระจัดกระจายอาจจะ detrimal cp --sparseกับประสิทธิภาพไฟล์เบาบางอาจทำให้เกิดการกระจายตัวของระบบแฟ้มรุนแรงและมีอย่างน้อยหนึ่งตัวอย่างของความเสียหายของข้อมูลด้วย
frostschutz

1
การคัดลอกข้อมูลสำหรับไฟล์ (ส่วนใหญ่ที่ไม่กระจัดกระจาย) ผ่านลูปการอ่าน / เขียนเกี่ยวข้องกับ dma ของข้อมูลเข้าและออกจากหน่วยความจำในขณะที่การค้นหาการทำงานของศูนย์เป็นนัยโดยเสมอ (หรืออัตโนมัติที่จำนวนบล็อกไม่ตรงกับไฟล์ ขนาด) จะลากข้อมูลไปยังแคช cpu และเกี่ยวข้องกับแบนด์วิดท์และรอบ cpu มากขึ้น
meuh

1
@StephenKitt มันคือเข้ากันได้กับ --reflink: info cpประกอบด้วย:with the following alias, ‘cp’ will use the minimum amount of space supported by the file system. alias cp='cp --reflink=auto --sparse=always'
ทอมเฮล

คำตอบ:


2

มีสาเหตุบางประการที่ไม่ได้เป็นค่าเริ่มต้นเหตุผลหนึ่งคือความเข้ากันได้แบบย้อนหลังประสิทธิภาพการทำงานและสุดท้าย แต่ไม่ท้ายสุดหลักการที่ทำให้ประหลาดใจน้อยที่สุด

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

ฉันคิดว่าความคิดเห็นที่คุณได้รับยังเน้นด้วยเหตุผลอื่น ๆ

หลักการของความประหลาดใจน้อยที่สุดหมายความว่าคุณไม่ได้เปลี่ยนสิ่งที่ไม่จำเป็นcpได้รับมานานหลายทศวรรษการเปลี่ยนพฤติกรรมเริ่มต้นจะทำให้ทหารผ่านศึกจำนวนมากผิดหวัง

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