{"id":792,"date":"2017-04-14T19:17:34","date_gmt":"2017-04-14T17:17:34","guid":{"rendered":"http:\/\/miroslaw.borodziuk.eu\/?p=792"},"modified":"2017-05-18T17:43:46","modified_gmt":"2017-05-18T15:43:46","slug":"naprawa-systemu-plikow","status":"publish","type":"post","link":"http:\/\/miro.borodziuk.eu\/index.php\/2017\/04\/14\/naprawa-systemu-plikow\/","title":{"rendered":"Naprawa systemu plik\u00f3w"},"content":{"rendered":"<p><span style=\"color: #3366ff;\">Sprawdzanie i naprawa systemu plik\u00f3w extended.<\/span><\/p>\n<p>Struktura systemu plik\u00f3w extended mo\u017ce zosta\u0107 uszkodzona gdy system zostanie niepoprawnie wy\u0142\u0105czony lub nast\u0105pi jego awaria. Do utrzymania integralno\u015bci systemu plik\u00f3w extended u\u017cywane jest narz\u0119dzie <em>e2fsck<\/em>, zlinkowane hardlinkiem do komend <em>fsck.ext3<\/em> i <em>fsck.ext4<\/em>, kt\u00f3re mog\u0105 tak\u017ce u\u017cywane. <em>e2fsck<\/em> uruchamiane jest automatycznie podczas startu systemu, przed kt\u00f3rym nast\u0105pi\u0142a awaria systemu. Program uruchamia sprawdzanie i napraw\u0119 ca\u0142ego systemu plik\u00f3w, kt\u00f3ry nie ma dziennika (journal). <!--more-->Je\u017celi program nie jest w stanie usun\u0105\u0107 niesp\u00f3jno\u015bci systemu plik\u00f3w zg\u0142asza to u\u017cytkownikowi. Je\u017celi program ustali, \u017ce system plik\u00f3w ma dziennik (journal), to go przywraca i przywraca poprzedni sp\u00f3jny stan systemu plik\u00f3w. System nie pozwala na zamontowanie systemu plik\u00f3w z uszkodzonym b\u0105d\u017a utraconym podstawowym superblokiem (primary superblock). W\u00a0 takiej sytuacji musimy z ustali\u0107 po\u0142o\u017cenie kopii zapasowej superbloku komend\u0105 <em>dumpe2fs<\/em> po czym ponownie uruchomi\u0107 <em>e2fsck<\/em> wskazuj\u0105c po\u0142o\u017cenie backupu superbloku. Po naprawie podstawowego superbloku mo\u017cliwe jest ponowne zamontowanie systemu plik\u00f3w. W czasie sprawdzania systemu plik\u00f3w e2fsck mo\u017ce napotka\u0107 plik z zagubion\u0105 nazw\u0105. Taki plik trafia do katalogu lost+found w tym samym systemie plik\u00f3w. Plik nazywany jest plikiem sierot\u0105 (orphan file) jako nazw\u0119 nadaje mu si\u0119 numer iw\u0119z\u0142a (inode number).\u00a0 Aby okre\u015bli\u0107 typ takiego pliku mo\u017cna u\u017cy\u0107 komendy file. Je\u017celi jest to plik tekstowy to mo\u017cna podejrze\u0107 jego zawarto\u015b\u0107 komendami cat lub more. Mo\u017cna tak\u017ce u\u017cy\u0107 komendy string aby wypakowa\u0107 czyteln\u0105 zawarto\u015b\u0107 pliku, kt\u00f3ry nast\u0119pnie b\u0119dzie mo\u017cna odczyta\u0107.<\/p>\n<p>&nbsp;<\/p>\n<p>\u0106wiczenie 1. Naprawa uszkodzonego systemu plik\u00f3w extended.<\/p>\n<p>Odmontowujemy uszkodzony system plik\u00f3w:<br \/>\n<code># umount \/mntext4<\/code><\/p>\n<p>Uruchamiamy <em>e2fsck<\/em> na logicznym woluminie <em>\/dev\/vg10\/lvolext4<\/em>:<br \/>\n<code># e2fsck \/dev\/vg10\/lvolext4<\/code><br \/>\n<span style=\"color: #808080;\"><code>\/dev\/vg10\/lvolext4: clean, 11\/73728 files, 13789\/288768 blocks<\/code><\/span><\/p>\n<p>Uzyskujemy list\u0119 kopii zapasowych superblok\u00f3w dla tego system plik\u00f3w:<br \/>\n<code># dumpe2fs \/dev\/vg10\/lvolext4 | grep superblock<\/code><br \/>\n<span style=\"color: #808080;\"><code>Primary superblock at 0, Group descriptors at 1-1<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Backup superblock at 32768, Group descriptors at 32769-32769<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Backup superblock at 98304, Group descriptors at 98305-98305<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Backup superblock at 163840, Group descriptors at 163841-163841<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Backup superblock at 229376, Group descriptors at 229377-229377<\/code><\/span><\/p>\n<p>Uruchamiamy <em>e2fsck<\/em> i wskazujemy po\u0142o\u017cenie pierwszej kopii zapasowej superblocku (32768) aby naprawi\u0107 podstawowy superblock:<br \/>\n<code># fsck \u2013b 32768 \/dev\/vg10\/lvolext4<\/code><br \/>\n<span style=\"color: #808080;\"><code>e2fsck 1.42.9 (28-Dec-2013)<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>\/dev\/vg10\/lvolext4 was not cleanly unmounted, check forced.<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Pass 1: Checking inodes, blocks, and sizes<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Pass 2: Checking directory structure<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Pass 3: Checking directory connectivity<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Pass 4: Checking reference counts<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Pass 5: Checking group summary information<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>\/dev\/vg10\/lvolext4: ***** FILE SYSTEM WAS MODIFIED *****<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>\/dev\/vg10\/lvolext4: 11\/73728 files (9.1% non-contiguous), 13789\/288768 blocks<\/code><\/span><\/p>\n<p>Montujemy naprawiony system plik\u00f3w:<br \/>\n<code># mount \/mntext4<\/code><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #3366ff;\">Sprawdzanie i naprawa systemu plik\u00f3w XFS.<\/span><\/p>\n<p>Do naprawy systemu plik\u00f3w XFS przewidziane jest narz\u0119dzie <em>xfs_repair.<\/em> Wymaga ono aby system plik\u00f3w by\u0142 odmontowany i w znajdowa\u0142 si\u0119 w czystym stanie (clean state). W czasie wykonywania wszystkich niezb\u0119dnych operacji narz\u0119dzie automatycznie przywraca dziennik (journal) bez zadawania pyta\u0144 u\u017cytkownikowi. Uruchomione <em>xfs_repair<\/em> przechodzi przez siedem faz: sprawdzanie element\u00f3w takich jak iw\u0119z\u0142y (inodes), katalogi, nazwy \u015bcie\u017cek, liczniki link\u00f3w i superbloki. Po uszkodzeniu systemu plik\u00f3w w czasie ponownego uruchamiania systemu program nie uruchamia si\u0119 sam tak jak ma to miejsce w przypadku <em>e2fsck<\/em>. Program po prostu powtarza log w czasie montowania systemu plik\u00f3w (replays log at mount time) upewniaj\u0105c si\u0119, \u017ce system plik\u00f3w jest sp\u00f3jny.<\/p>\n<p>Przyk\u0142ad u\u017cycia <em>xfs_repair<\/em>:<br \/>\n<code> # umount \/mntxfs<\/code><br \/>\n<code># xfs_repair \/dev\/vg10\/lvolxfs<\/code><br \/>\n<span style=\"color: #808080;\"><code>Phase 1 - find and verify superblock\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Phase 2 - using internal log<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- zero log\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- scan filesystem freespace and inode maps\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- found root inode chunk<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Phase 3 - for each AG\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- scan and clear agi unlinked lists\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- process known inodes and perform inode discovery\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- agno = 0<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- agno = 1<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- process newly discovered inodes\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Phase 4 - check for duplicate blocks\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- setting up duplicate extent list\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- check for inodes claiming duplicate blocks\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- agno = 0<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- agno = 1<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Phase 5 - rebuild AG headers and trees\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- reset superblock\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Phase 6 - check inode connectivity\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- resetting contents of realtime bitmap and summary inodes<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- traversing filesystem \u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- traversal finished \u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>- moving disconnected inodes to lost+found \u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>Phase 7 - verify and correct link counts\u2026<\/code><\/span><br \/>\n<span style=\"color: #808080;\"><code>done<\/code><\/span><br \/>\n<code># mount \/mntxfs<\/code><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sprawdzanie i naprawa systemu plik\u00f3w extended. Struktura systemu plik\u00f3w extended mo\u017ce zosta\u0107 uszkodzona gdy system zostanie niepoprawnie wy\u0142\u0105czony lub nast\u0105pi jego awaria. Do utrzymania integralno\u015bci systemu plik\u00f3w extended u\u017cywane jest narz\u0119dzie e2fsck, zlinkowane hardlinkiem do komend fsck.ext3 i fsck.ext4, kt\u00f3re mog\u0105 tak\u017ce u\u017cywane. e2fsck uruchamiane jest automatycznie podczas startu systemu, przed kt\u00f3rym nast\u0105pi\u0142a awaria systemu. &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/miro.borodziuk.eu\/index.php\/2017\/04\/14\/naprawa-systemu-plikow\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Naprawa systemu plik\u00f3w&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1093,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[],"_links":{"self":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/792"}],"collection":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/comments?post=792"}],"version-history":[{"count":7,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/792\/revisions"}],"predecessor-version":[{"id":1207,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/posts\/792\/revisions\/1207"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media\/1093"}],"wp:attachment":[{"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/media?parent=792"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/categories?post=792"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/miro.borodziuk.eu\/index.php\/wp-json\/wp\/v2\/tags?post=792"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}