क्या डेटा = जर्नल एक्सटर् 4 के लिए सुरक्षित है जैसा कि डेटा के विपरीत = आदेश दिया गया?


36

Ext4 के लिए डिफ़ॉल्ट जर्नल मोड है data=ordered, जो, प्रलेखन के अनुसार, इसका मतलब है कि

"सभी डेटा सीधे मुख्य फाइल सिस्टम से बाहर करने के लिए मजबूर किया जाता है, क्योंकि इसके मेटाडेटा जर्नल के लिए प्रतिबद्ध है।"

हालांकि, data=journalइसका विकल्प भी है , जिसका मतलब है कि

"सभी डेटा मुख्य फ़ाइल सिस्टम में लिखे जाने से पहले जर्नल में प्रतिबद्ध हैं। इस मोड को सक्षम करने से विलंबित आवंटन और O_DIRECT समर्थन अक्षम हो जाएगा।"

इसके बारे में मेरी समझ यह है कि data=journalमोड सभी डेटा के साथ-साथ मेटाडेटा को भी प्रकाशित करेगा, जो कि इसके चेहरे पर, इसका मतलब प्रतीत होता है कि यह डेटा अखंडता और विश्वसनीयता के मामले में सबसे सुरक्षित विकल्प है, हालांकि प्रदर्शन के लिए इतना अधिक नहीं है।

क्या मुझे इस विकल्प के साथ जाना चाहिए अगर विश्वसनीयता अत्यंत चिंता का विषय है, लेकिन प्रदर्शन इतना कम है? क्या इस विकल्प का उपयोग करने के लिए कोई चेतावनी है?

पृष्ठभूमि के लिए, विचाराधीन प्रणाली एक यूपीएस पर है और ड्राइव पर कैशिंग लिखना अक्षम है।

जवाबों:


30

हां, data=journalडिस्क पर डेटा लिखने का सबसे सुरक्षित तरीका है। चूंकि सभी डेटा और मेटाडेटा डिस्क पर लिखे जाने से पहले जर्नल को लिखे जाते हैं, आप हमेशा क्रैश के मामले में I / O नौकरियों को बाधित कर सकते हैं। यह विलंबित आवंटन सुविधा को भी निष्क्रिय कर देता है , जिससे डेटा हानि हो सकती है

मैनुअल में सुरक्षितता के लिए 3 मोड प्रस्तुत किए गए हैं :

  1. डेटा = पत्रिका
  2. डेटा = आदेश दिया
  3. डेटा = writeback

वहाँ भी एक और विकल्प है जो आप में रुचि हो सकती है:

commit=nrsec    (*) Ext4 can be told to sync all its data and metadata
                    every 'nrsec' seconds. The default value is 5 seconds.

केवल ज्ञात चेतावनी यह है कि यह बहुत धीमा हो सकता है। आप noatimeविकल्प के साथ एक्सेस टाइम अपडेट को अक्षम करके प्रदर्शन प्रभाव को कम कर सकते हैं ।


2
आप कहते हैं कि विलंबित आवंटन को अक्षम करना अधिक सुरक्षित है। हालाँकि, मुझे ऐसा मामला नहीं मिल रहा है जहाँ + data=journalसे अधिक सुरक्षित परिणाम मिले । क्या तुम्हारे पास एक है? data=orderednodelalloc
जेरोम Pouiller

यह विलंबित आवंटन को अक्षम नहीं कर रहा है जिससे डेटा हानि हो सकती है।
सीटीएल-अल्ट-डेलोर

3

यह धागा सुपर पुराना है, लेकिन अभी भी प्रासंगिक है।

हम एक MySQL डेटाबेस पर कई छोटे-छोटे लेखन को मर्ज करना चाहते थे, जो वीएचपी के रूप में केवीएम के तहत सीएफएच आरबीडी छवियों का उपयोग करके चल रहे थे।

अतिथि: CentOS 6 VM / / / fstab:

/dev/sda1               /                       ext4    defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,noatime,nodiratime,commit=60,data=journal,discard 1 1

B / देव / एसडीए ’डिवाइस (1 टीआईबी) एक संकुचित एप्रोच कोडेड एनवीएम पूल में है, जिसमें ट्रिपल रेप्लिकेटेड एनवीएमई पूल में अपेक्षाकृत छोटे (128 मिब) समर्पित जर्नल डिवाइस है।

बचाव के माहौल में हमारे द्वारा उपयोग की जाने वाली कमांड:

पत्रिका को अलग करें:

tune2fs -O ^has_journal /dev/sda1;

विसंगतियों के लिए फ़ाइल सिस्टम की जाँच करें:

fsck.ext4 -f -C 0 /dev/sda1;

ब्लॉक आकार प्राप्त करें:

tune2fs -l /dev/sda1;

समर्पित जर्नल डिवाइस प्रारूप (चेतावनी):

न्यूनतम जर्नल आकार 1024 * ब्लॉक आकार होना चाहिए (हम सुरक्षित होने के लिए 128 MiB का उपयोग करते हैं)

/ Dev / sda1 के मिलान के लिए ब्लॉक आकार सेट करें

mke2fs -O journal_dev -L root_journal /dev/sdb1 -b 4096;

फ़ाइल सिस्टम के लिए समर्पित जर्नल डिवाइस संलग्न करें:

tune2fs -j -J device=LABEL=root_journal /dev/sda1;

MySQL सेटिंग्स:

[mysqld]
innodb_old_blocks_time = 1000           # Prevent buffer pool pollution. Default as of MySQL 5.6
innodb_buffer_pool_size = 24576M        # MySQL Cache
innodb_log_buffer_size = 128M           # 25% of log_file_size
innodb_log_file_size = 512M             # 25% of the buffer_pool (no, not really)
query_cache_size = 128M                 # Query Cache
table_cache = 512                       # Make it large enough for: show global status like 'open%';
#mysqltuner.pl:
innodb_flush_method = O_DSYNC           # Don't validate writes. MySQL 5.6+ should use O_DIRECT
innodb_flush_log_at_trx_commit = 2      # Flush MySQL transactions to operating system cache
join_buffer_size = 256K
thread_cache_size = 4
innodb_buffer_pool_instances = 16
skip-innodb_doublewrite

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