एक विरल फ़ाइल को कॉपी करने का सबसे तेज़ तरीका क्या है? सबसे छोटी फ़ाइल में क्या विधि परिणाम है?


11

पृष्ठभूमि : मैं एक विरल qcow2 VM छवि की प्रतिलिपि बना रहा हूँ जो आकार में 200GB है, लेकिन इसमें 16GB आवंटित ब्लॉक है। मैंने एक ही सर्वर के भीतर इस विरल फ़ाइल को कॉपी करने के लिए विभिन्न तरीकों की कोशिश की है और कुछ प्रारंभिक परिणाम हैं। पर्यावरण RHEL 6.6 या CentOS 6.6 x64 है।

ls -lhs srcFile 
16G -rw-r--r-- 1 qemu qemu 201G Feb  4 11:50 srcFile

वाया सीपीपी - सबसे अच्छी गति

cp --sparse=always srcFile dstFile
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/26GB actual, bloat: 10GB
    Copy time: 1:02 (mm:ss) 

वाया dd - सर्वश्रेष्ठ समग्र कलाकार

dd if=srcFile of=dstFile iflag=direct oflag=direct bs=4M conv=sparse
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/21GB actual, bloat: 5GB
    Copy time: 2:02 (mm:ss)

वाया सीपीओ

mkdir tmp$$
echo srcFile | cpio -p --sparse tmp$$; mv tmp$$/srcFile dstFile
rmdir tmp$$
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/26GB actual, bloat: 10GB
    Copy time: 9:26 (mm:ss)

वाया rsync

rsync --ignore-existing -aS srcFile dstFile
Performance Notes:
    Copied 200GB max/16GB actual VM as 200GB max/26GB actual, bloat: 10GB
    Copy time: 24:49 (mm:ss)

सबसे अच्छा आकार के माध्यम से

virt-sparsify srcFile dstFile
    Copied 200GB max/16GB actual VM as 200GB max/16GB actual, bloat: 0
    Copy time: 17:37 (mm:ss)

अलग-अलग ब्लॉक करना

मैं डीडी कॉपी करने के दौरान 'ब्लोट' के बारे में चिंतित था (मूल से फ़ाइल का आकार बढ़ाना), इसलिए मैंने ब्लॉकेज को विविध किया। मैंने कुल समय और सीपीयू% पाने के लिए 'समय' का उपयोग किया। इस मामले में मूल फ़ाइल एक 7.3GB विरल 200GB फ़ाइल है:

4K:   5:54.64, 56%, 7.3GB
8K:   3:43.25, 58%, 7.3GB
16K:  2:23.20, 59%, 7.3GB
32K:  1:49.25, 62%, 7.3GB
64K:  1:33.62, 64%, 7.3GB
128K: 1:40.83, 55%, 7.4GB
256K: 1:22.73, 64%, 7.5GB
512K: 1:44.84, 74%, 7.6GB
1M:   1:16.59, 70%, 7.9GB
2M:   1:21.58, 66%, 8.4GB
4M:   1:17.52, 69%, 9.5GB
8M:   1:10.92, 76%, 12GB
16M:  1:17.09, 78%, 16GB
32M:  2:54.10, 90%, 22GB

प्रश्न : क्या आप यह सत्यापित कर सकते हैं कि सर्वोत्तम प्रदर्शन पाने के लिए विरल फ़ाइल की प्रतिलिपि बनाने के सर्वोत्तम तरीकों की पहचान की है? इसे बेहतर तरीके से करने के बारे में किसी भी सुझाव का स्वागत किया जाता है क्योंकि आपके द्वारा उपयोग किए जा रहे तरीकों से कोई चिंता हो सकती है।


आपके सराहनीय प्रयासों को देखते हुए एकमात्र अन्य प्रयास मैं, rsync - ssparse विकल्प के साथ कर रहा हूँ। यह भी संभव है कि dd में अलग-अलग ब्लॉक आकार इसकी गति या ब्लोट में सुधार करेंगे।
mpez0

टार भी एक अच्छा प्रयास करने के लिए है
ओलिवियर दुलैक

@OlivierDulac मैंने टार की कोशिश की, लेकिन यह इतना खराब कलाकार था कि मैंने इसे शामिल नहीं किया। मेरे पास होना चाहिए था। ऊपर स्थानीय प्रतियां हैं। मैं 10Gbps नेटवर्क के लिए नेटवर्क कॉपीिंग प्रदर्शन डेटा जोड़ूंगा, उसी सबनेट में कॉपी कर रहा हूं। एक बार मेरे पास ऐसा हो, मुझे लगता है कि मेरे पास एक व्यावहारिक निष्कर्ष निकालने के लिए पर्याप्त डेटा होगा जिसके लिए सबसे अच्छा समग्र कलाकार है।
स्टीव अमेरिजिया

rsync भी कॉपी की इस शैली को करने के लिए समर्थन करता है। आप कोशिश कर सकते हैं कि। इसके अलावा स्थानीय और ओवर-द-नेटवर्क दोनों ही प्रकार की कॉपी करने में अतिरिक्त लाभ है।
ट्रैविस कैंपबेल

@TravisCampbell मैंने rsync के लिए डेटा जोड़ा। यह मेरे द्वारा चलाए गए सभी परीक्षणों में सबसे खराब प्रदर्शन था।
स्टीव आमेरिज

जवाबों:


5

उपरोक्त बेंचमार्किंग से, ऐसा लगता है कि 64K के एक ब्लॉक के साथ हमारे लक्ष्य हार्डवेयर पर dd का उपयोग करने से हमें प्रतिलिपि समय और ब्लोट पर विचार करने का सबसे अच्छा समग्र परिणाम प्राप्त होता है:

dd if=srcFile of=dstFile iflag=direct oflag=direct bs=64K conv=sparse

2
हाय स्टीव, कृपया एक सवाल के जवाब में विभाजित करें, यह कैसे स्टेक्सएक्सचेंज साइट्स काम करती है।
बुम्मी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.