ডাটা = জার্নালটি ডেটা = অর্ডারের বিপরীতে এক্সটোর 4 এর পক্ষে আরও নিরাপদ?


36

Ext4 এর জন্য ডিফল্ট জার্নাল মোড data=ordered, যা ডকুমেন্টেশন অনুসারে এর অর্থ

"পত্রিকার প্রতি মেটাডেটা প্রতিশ্রুতিবদ্ধ হওয়ার আগে সমস্ত ডেটা সরাসরি ফাইল সিস্টেমের বাইরে সরাসরি বাধ্য করা হয়।"

তবে data=journalবিকল্পটিও রয়েছে, যার অর্থ means

"মূল ফাইল সিস্টেমে লেখার আগে সমস্ত ডেটা জার্নালে প্রতিশ্রুতিবদ্ধ হয় this

এটি সম্পর্কে আমার বোঝা হ'ল data=journalমোডটি সমস্ত ডেটা পাশাপাশি মেটাডেটা জার্নাল করবে যা এর মুখোমুখি হ'ল বোঝা যাচ্ছে যে এটি ডেটা অখণ্ডতা এবং নির্ভরযোগ্যতার দিক থেকে সবচেয়ে নিরাপদ বিকল্প, যদিও পারফরম্যান্সের জন্য এতটা নাও হতে পারে।

নির্ভরযোগ্যতা যদি সর্বোচ্চ উদ্বেগের হয় তবে আমার এই বিকল্পটি নিয়ে যাওয়া উচিত তবে পারফরম্যান্স এত কম? এই বিকল্পটি ব্যবহার করার জন্য কোনও সতর্কতা রয়েছে?

পটভূমির জন্য, প্রশ্নে থাকা সিস্টেমটি একটি ইউপিএসে রয়েছে এবং ড্রাইভগুলিতে লেখার ক্যাশে অক্ষম করা আছে।

উত্তর:


30

হ্যাঁ, data=journalডিস্কে ডেটা লেখার নিরাপদতম উপায়। যেহেতু সমস্ত ডেটা এবং মেটাডেটা ডিস্কে লিখিত হওয়ার আগে জার্নালে লিখিত হয়, আপনি ক্রাশের ক্ষেত্রে সর্বদা বাধা আই / ও জব পুনরায় খেলতে পারেন lay এটি বিলম্বিত বরাদ্দ বৈশিষ্ট্যটিও অক্ষম করে , যা ডেটা ক্ষতি হতে পারে

ম্যানুয়ালটিতে নিরাপদতার জন্য 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
'45 এ জেরুমে পাইউলার '

এটি বিলম্বিত বরাদ্দটি অক্ষম করছে না যা ডেটা ক্ষতি হতে পারে।
ctrl-alt-delor

3

এই থ্রেডটি অতি পুরানো, তবে এখনও প্রাসঙ্গিক।

আমরা মাইএসকিউএল ডাটাবেজে অনেক ছোট লেখার একত্রীকরণ করতে চেয়েছিলাম, কেভিএমের অধীনে ভিএফ হিসাবে চলছিল কেফ আরবিডি চিত্র ব্যবহার করে।

অতিথি: CentOS 6 ভিএম এর / ইত্যাদি / fstab:

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

'/ Dev / sda' ডিভাইস (1 টিআইবি) একটি সংকুচিত মুছে যাওয়া কোডেড এনভিএম পুলে রয়েছে, একটি ট্রিপল প্রতিলিপিযুক্ত এনভিএম পুলটিতে তুলনামূলকভাবে ক্ষুদ্র (128 এমবি) উত্সর্গীকৃত জার্নাল ডিভাইস রয়েছে।

উদ্ধার পরিবেশে আমরা যে কমান্ডগুলি ব্যবহার করেছি তা এর সাথে:

জার্নালটি আলাদা করুন:

tune2fs -O ^has_journal /dev/sda1;

অসঙ্গতিগুলির জন্য ফাইল সিস্টেমটি পরীক্ষা করুন:

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

ব্লকের আকার পান:

tune2fs -l /dev/sda1;

উত্সর্গীকৃত জার্নাল ডিভাইস (সতর্কতা):

ন্যূনতম জার্নালের আকার 1024 * ব্লকের আকার হওয়া উচিত (আমরা নিরাপদে থাকতে 128 এমআইবি ব্যবহার করি)

/ Dev / sda1 এর সাথে মেলে ব্লকের আকার নির্ধারণ করুন

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

ডেডিকেটেড জার্নাল ডিভাইসটি ফাইল সিস্টেমে সংযুক্ত করুন:

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

মাইএসকিউএল সেটিংস:

[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
তাই? কী বদলে গেল?
সিভান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.