కెర్నల్ 5.14.xలో BTRFS బ్యాలెన్స్ బగ్

Kernal 5 14 Xlo Btrfs Byalens Bag



కెర్నల్ 5.14.xలో ఒక బగ్ ఉంది, దీని వలన మెటాడేటా ప్రొఫైల్‌ను మార్చేటప్పుడు btrfs ఫైల్‌సిస్టమ్ చదవడానికి-మాత్రమే అవుతుంది. సింగిల్ కు డప్ . ఫైల్‌సిస్టమ్ చదవడానికి-మాత్రమే స్థితికి వెళుతుంది. ఈ సమస్యను పరిష్కరించడానికి అసాధారణ పరిష్కారం అవసరం.

BTRFS ప్రొఫైల్స్ గురించి

విభిన్న రైడ్ ప్రొఫైల్‌లను ఉపయోగించగల సామర్థ్యం btrfs యొక్క గొప్ప లక్షణాలలో ఒకటి. btrfs డేటా మరియు మెటాడేటాను విడివిడిగా నిల్వ చేస్తుంది కాబట్టి, మీరు డిస్క్‌ల అంతటా డేటాను raid0గా చారలు చేయవచ్చు మరియు మొత్తం మెటాడేటాను raid1గా ప్రతిబింబిస్తుంది. మెటాడేటాలో ఈ రిడెండెన్సీ కొంచెం అదనపు స్థలాన్ని తీసుకుంటుంది. మరియు ఇది btrfs raid0 సెటప్‌లలో సిఫార్సు చేయబడింది.

ఒకే డిస్క్‌లో కూడా మెటాడేటాను నకిలీ చేయాలని ఎల్లప్పుడూ సూచించబడింది, ఎందుకంటే మెటాడేటాను కోల్పోవడం అంటే డేటాను కూడా కోల్పోవడం.







Btrfs ప్రత్యక్ష సిస్టమ్‌లో రైడ్ ప్రొఫైల్‌ను మార్చగలదు, డేటా మరియు మెటాడేటాను రిడెండెన్సీని అందించడానికి (లేదా తీసివేయడానికి) మారుస్తుంది. ఇది a తో సంభవిస్తుంది సంతులనం . ఒక btrfs బ్యాలెన్స్ అన్ని ఫైల్‌సిస్టమ్ బ్లాక్‌లను మళ్లీ వ్రాస్తుంది మరియు కొత్త ప్రొఫైల్‌లకు సరిపోయేలా సర్దుబాటు చేస్తుంది.



బగ్

నేను నా సింగిల్ డిస్క్‌లోని మెటాడేటా ప్రొఫైల్‌ని మార్చడానికి ప్రయత్నించాను సింగిల్ కు డప్ రిడెండెన్సీ కోసం.



$ సుడో btrfs బ్యాలెన్స్ ప్రారంభం -mconvert = మోసం / mnt





ఫైల్‌సిస్టమ్ వెంటనే చదవడానికి-మాత్రమే స్థితికి వెళ్లింది. వ్యవస్థ దిగజారింది. ఇది రీబూట్ అయినప్పుడు, నేను రికవరీ initramfsని దాటలేకపోయాను. డిస్క్‌కి డేటా ఏదీ వ్రాయబడదు.

btrfs ఫైల్‌సిస్టమ్‌లో బ్యాలెన్స్ ఆపరేషన్‌కు అంతరాయం ఏర్పడినప్పుడు, ఫైల్‌సిస్టమ్ మౌంట్ చేయబడిన తదుపరిసారి స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది. ఇది సాధారణంగా దీనితో నిలిపివేయబడుతుంది:



$ సుడో మౌంట్ -ఓ skip_balance,rw / dev / sdX / mnt

అప్పుడు, కింది ఆదేశాన్ని ఉపయోగించి అవసరమైతే రద్దు చేయండి:

$ సుడో btrfs బ్యాలెన్స్ రద్దు / mnt

అయినప్పటికీ, బగ్ బ్యాలెన్స్ లాక్ అవ్వడానికి మాత్రమే కాకుండా, దానిని కొనసాగించకుండా ఆపడానికి మౌంట్ ఎంపికలు విస్మరించబడ్డాయి. ఫైల్‌సిస్టమ్ మౌంట్ చేయబడిన ప్రతిసారీ, బ్యాలెన్స్ పునఃప్రారంభించడానికి ప్రయత్నిస్తుంది. ఇది విఫలమైంది మరియు ఫైల్‌సిస్టమ్ చదవడానికి మాత్రమే కొనసాగింది. మీరు దీనిని ఎదుర్కొంటే, మీరు పాత కెర్నల్‌ని ఉపయోగించి ఏదైనా డిస్ట్రోని తప్పనిసరిగా బూట్ చేయాలి. నా విషయంలో, ఇది 4.18 తో ఆర్చ్.

పాత కెనెల్‌తో ఫైల్‌సిస్టమ్‌ను మౌంట్ చేయండి:

$ సుడో మౌంట్ -ఓ skip_balance,rw / dev / sdX / mnt

బ్యాలెన్స్ రద్దు చేయండి:

$ సుడో btrfs బ్యాలెన్స్ రద్దు / mnt

బ్యాలెన్స్‌ని మళ్లీ అమలు చేయండి:

$ సుడో btrfs బ్యాలెన్స్ ప్రారంభం -mconvert = మోసం / mnt

బ్యాలెన్స్ పూర్తయిన తర్వాత, మీరు ఇప్పుడు ఫైల్‌సిస్టమ్‌లో నకిలీ మెటాడేటాతో కొత్త కెర్నల్‌లోకి సురక్షితంగా బూట్ చేయవచ్చు. ఫైల్‌సిస్టమ్ ఉపయోగించే ప్రొఫైల్‌లను తనిఖీ చేయండి. మీరు ఫైల్‌సిస్టమ్ మెటాడేటా యొక్క రెండు కాపీలు మరియు డేటా యొక్క ఒక కాపీని మాత్రమే కలిగి ఉన్నారని మీరు చూస్తారు:

$ సుడో btrfs ఉంటుంది వాడుక < మౌంట్ పాయింట్ >

ముగింపు

Btrfs అనేది అనేక అధునాతన ఎంపికలను కలిగి ఉన్న అద్భుతమైన ఫైల్‌సిస్టమ్. అయితే, btrfsని ఉపయోగిస్తున్నప్పుడు, మీరు సిస్టమ్ రెస్క్యూ కోసం LTS డిస్ట్రో నుండి పని చేసే బ్యాకప్‌లతో పాటు బూటబుల్ కెర్నల్‌ను కలిగి ఉండాలి. మౌంట్ చేయబడిన రూట్ ఫైల్‌సిస్టమ్‌లో బ్యాలెన్స్‌ని అమలు చేయగలిగినప్పటికీ, దీన్ని ఎల్లప్పుడూ చేయమని సలహా ఇవ్వబడదు. ఫైల్‌సిస్టమ్‌లో ఇంకా చాలా బగ్‌లు ఉన్నాయి. btrfs మాడ్యూల్ బ్లీడింగ్-ఎడ్జ్ కెర్నల్స్‌కు వ్యతిరేకంగా పూర్తిగా పరీక్షించబడనప్పుడు మీరు ఫైల్‌సిస్టమ్ రెస్క్యూ కోసం సిద్ధంగా ఉండాలి.