क्या दोनों के बीच अंतर है ddआज्ञाओं है कि अलग अलग bsऔर countमूल्यों, जब तक कि वे गुणा करने के लिए एक ही? उदाहरण के लिए:
dd if=/dev/random of=aa bs=1G count=2dd if=/dev/random of=aa bs=2G count=1
क्या दोनों के बीच अंतर है ddआज्ञाओं है कि अलग अलग bsऔर countमूल्यों, जब तक कि वे गुणा करने के लिए एक ही? उदाहरण के लिए:
dd if=/dev/random of=aa bs=1G count=2dd if=/dev/random of=aa bs=2G count=1जवाबों:
जहां तक अंतिम परिणाम का सवाल है, वे ऐसा ही करेंगे। अंतर यह है कि ddडेटा को कैसे संसाधित किया जाएगा। और वास्तव में, आपके दोनों उदाहरण उस संबंध में काफी चरम हैं: bsपैरामीटर बताता है ddकि इसे आउटपुट करने से पहले मेमोरी में कितना डेटा बफर होना चाहिए।
तो, अनिवार्य रूप से, पहली कमांड 1GB के दो टुकड़ों में 2GB पढ़ने की कोशिश करेगी , और बाद में एक बार में पूरे 2GB को पढ़ने की कोशिश करेगी और फिर इसे aaफ़ाइल में आउटपुट करेगी ।
परिणाम वही होगा लेकिन पहले मामले में ddदो 1GB ब्लॉक लिखेंगे जबकि दूसरे 2GB ब्लॉक में। अंतर यह है कि ddकॉपी किए गए ब्लॉक को मेमोरी में रखता है। आपको पहले मामले में 1GB RAM और दूसरे में 2GB की आवश्यकता होगी।
मेरी राय में इतने बड़े ब्लॉक का इस्तेमाल करने की कोई जरूरत नहीं है। आप कुछ परीक्षण कर सकते हैं लेकिन मेरे मामले में मैं बहुत छोटे ब्लॉकों (<1MB) के साथ अधिक गति प्राप्त करता हूं
उपयोग किए गए ब्लॉक-आकार को स्रोत और लक्ष्य डिवाइस के लिए सर्वोत्तम गति सेटिंग्स से मेल खाना चाहिए।
यदि आप LV डिवाइस को कॉपी करने का प्रयास करते हैं तो आप अंतर देख सकते हैं। बहुत छोटे बीएस-आकार का उपयोग अनावश्यक रूप से पठन-प्रक्रिया को बाधित करेगा। एक बहुत बड़े बीएस-आकार के उपयोग से लेखन के दौरान लंबे समय तक प्रतीक्षा होगी।
चूँकि मानक LVs में सामान्य रूप से 4 MB विखंडू होते हैं, इसलिए इनके लिए भौतिक डिस्क अभिगम I bs = 4M का भी अच्छा आकार है।
16K या 256M के साथ प्रयोग करने की कोशिश करें - आप अंतर को नोट करेंगे - और कॉपी के दौरान डिस्क संकेतक देखें ...