RAID 6.2/5 అమలులో రైట్ హోల్ సమస్యను పరిష్కరించడానికి Linux 6 కెర్నల్లో చేర్చడానికి Btrfs మెరుగుదలలు ప్రతిపాదించబడ్డాయి. సమస్య యొక్క సారాంశం ఏమిటంటే, రికార్డింగ్ సమయంలో క్రాష్ సంభవించినట్లయితే, ఏ RAID పరికరంలో ఏ బ్లాక్లో సరిగ్గా వ్రాయబడిందో మరియు రికార్డింగ్ పూర్తి కాలేదని అర్థం చేసుకోవడం మొదట్లో అసాధ్యం. మీరు ఈ పరిస్థితిలో RAIDని పునరుద్ధరించడానికి ప్రయత్నిస్తే, RAID బ్లాక్ల స్థితి సమకాలీకరించబడనందున అండర్రైట్ బ్లాక్లకు సంబంధించిన బ్లాక్లు నాశనం చేయబడవచ్చు. ఈ ప్రభావాన్ని ఎదుర్కోవడానికి ప్రత్యేక చర్యలు తీసుకోని RAID1/5/6 శ్రేణులలో ఈ సమస్య ఏర్పడుతుంది.
btrfsలో RAID1 వంటి RAID అమలులో, రెండు కాపీలలో చెక్సమ్లను ఉపయోగించడం ద్వారా ఈ సమస్య పరిష్కరించబడుతుంది; సరిపోలని పక్షంలో, డేటా కేవలం రెండవ కాపీ నుండి పునరుద్ధరించబడుతుంది. ఏదైనా పరికరం పూర్తి వైఫల్యానికి బదులుగా తప్పు డేటాను పంపడం ప్రారంభిస్తే కూడా ఈ విధానం పని చేస్తుంది.
అయితే, RAID5/6 విషయంలో, ఫైల్ సిస్టమ్ పారిటీ బ్లాక్ల కోసం చెక్సమ్లను నిల్వ చేయదు: సాధారణ పరిస్థితిలో, బ్లాక్ల యొక్క చెల్లుబాటు అవన్నీ చెక్సమ్డ్ చేయబడి, ప్యారిటీ బ్లాక్ను పునర్నిర్మించగల వాస్తవం ద్వారా ధృవీకరించబడుతుంది. డేటా నుండి. అయితే, పాక్షిక రికార్డింగ్ విషయంలో, ఈ విధానం కొన్ని సందర్భాల్లో పని చేయకపోవచ్చు. ఈ సందర్భంలో, శ్రేణిని పునరుద్ధరించేటప్పుడు, అసంపూర్ణ రికార్డ్లో ఉన్న బ్లాక్లు తప్పుగా పునరుద్ధరించబడే అవకాశం ఉంది.
btrfs విషయంలో, ఉత్పత్తి చేయబడిన రికార్డు స్ట్రిప్ కంటే చిన్నగా ఉంటే ఈ సమస్య చాలా సందర్భోచితంగా ఉంటుంది. ఈ సందర్భంలో, ఫైల్ సిస్టమ్ తప్పనిసరిగా రీడ్-మాడిఫై-రైట్ ఆపరేషన్ (రీడ్-మాడిఫై-రైట్, RMW) చేయాలి. ఇది అసంపూర్తిగా వ్రాయబడిన బ్లాక్లను ఎదుర్కొంటే, RMW ఆపరేషన్ చెక్సమ్లతో సంబంధం లేకుండా గుర్తించబడని అవినీతికి కారణం కావచ్చు. డెవలపర్లు మార్పులు చేసారు, దీనిలో RMW ఆపరేషన్ ఈ ఆపరేషన్ చేయడానికి ముందు బ్లాక్ల చెక్సమ్ను తనిఖీ చేస్తుంది మరియు డేటాను పునరుద్ధరించాల్సిన అవసరం ఉంటే, అది రికార్డింగ్ తర్వాత చెక్సమ్లను కూడా తనిఖీ చేస్తుంది. దురదృష్టవశాత్తూ, అసంపూర్ణ స్ట్రిప్ (RMW) వ్రాసే పరిస్థితిలో, ఇది చెక్సమ్లను లెక్కించడానికి అదనపు ఓవర్హెడ్కు దారితీస్తుంది, కానీ విశ్వసనీయతను గణనీయంగా పెంచుతుంది. RAID6 కోసం, అటువంటి తర్కం ఇంకా సిద్ధంగా లేదు, అయినప్పటికీ, RAID6లో అటువంటి వైఫల్యం కోసం ఒకేసారి 2 పరికరాలలో వ్రాయడం విఫలమవడం అవసరం, ఇది తక్కువ అవకాశం ఉంది.
అదనంగా, డెవలపర్ల నుండి RAID5/6ని ఉపయోగించడం కోసం మేము సిఫార్సులను గమనించవచ్చు, దీని సారాంశం ఏమిటంటే Btrfsలో మెటాడేటా మరియు డేటా నిల్వ ప్రొఫైల్ భిన్నంగా ఉండవచ్చు. ఈ సందర్భంలో, మీరు మెటాడేటా కోసం ప్రొఫైల్ RAID1 (మిర్రర్) లేదా RAID1C3 (3 కాపీలు) మరియు డేటా కోసం RAID5 లేదా RAID6ని ఉపయోగించవచ్చు. ఇది విశ్వసనీయమైన మెటాడేటా రక్షణను మరియు ఒకవైపు "వ్రాత రంధ్రం" లేకపోవడాన్ని నిర్ధారిస్తుంది మరియు మరోవైపు RAID5/6 యొక్క లక్షణమైన స్థలాన్ని మరింత సమర్థవంతంగా ఉపయోగించుకుంటుంది. ఇది మెటాడేటా అవినీతిని నివారించడానికి మరియు డేటా అవినీతిని సరిచేయడానికి అనుమతిస్తుంది.
కెర్నల్ 6.2లోని Btrfsలోని SSDల కోసం, "విస్మరించు" ఆపరేషన్ యొక్క అసమకాలిక అమలు డిఫాల్ట్గా సక్రియం చేయబడుతుందని కూడా గమనించవచ్చు (ఇకపై భౌతికంగా నిల్వ చేయవలసిన అవసరం లేని ఫ్రీడ్ బ్లాక్లను గుర్తించడం). క్యూలో “విస్మరించు” ఆపరేషన్ల సమూహాన్ని సమర్ధవంతంగా చేయడం మరియు బ్యాక్గ్రౌండ్ ప్రాసెసర్ ద్వారా క్యూని మరింత ప్రాసెస్ చేయడం వల్ల ఈ మోడ్ యొక్క ప్రయోజనం అధిక పనితీరును కలిగి ఉంటుంది, అందుకే సాధారణ FS కార్యకలాపాలు సిన్క్రోనస్ మాదిరిగానే నెమ్మదించవు. బ్లాక్లు విముక్తమైనందున విస్మరించండి” మరియు SSD మెరుగైన నిర్ణయాలు తీసుకోగలదు. మరోవైపు, మీరు ఇకపై fstrim వంటి యుటిలిటీలను ఉపయోగించాల్సిన అవసరం లేదు, ఎందుకంటే అదనపు స్కానింగ్ అవసరం లేకుండా మరియు కార్యకలాపాలను నెమ్మదించకుండా FSలో అందుబాటులో ఉన్న అన్ని బ్లాక్లు క్లియర్ చేయబడతాయి.
మూలం: opennet.ru