На щастя, ви є користувачем Linux і у вас є fsck (Перевірка файлової системи), який допоможе вам впоратися з потенційно пошкодженою файловою системою. Ця утиліта використовується для перевірки та (опціонально) відновлення файлової системи. Існує кілька сценаріїв, у яких можна використовувати fsck. Зазвичай потрібно запустити цю команду, якщо ваша система не завантажується, пристрій (зовнішні диски або носії даних) не працює належним чином або якщо ви помітили ознаки пошкодження файлів. Fsck насправді є "інтерфейсом" для низки засобів перевірки файлової системи, таких як fsck.vfat, fsck.ext2 і т.д. буд. Їх не обов'язково вказувати, але ви можете знайти складніші параметри у файлі man. сторінки цих точніших команд. Команда fsck працює за схемою, аналогічною до більшості команд Linux. Якщо ви не вкажете файлову систему, система проаналізує файл fstab ( /etc/fstab ) на наявність пристроїв для сканування. Вам потрібно буде запустити команду від імені користувача root, або використовувати її з sudo. Ви можете використовувати команду fdisk або df для відображення жорсткого диска на Linux. Таким чином, можна вказати, який пристрій потрібно перевірити за допомогою команди fsck. Не запускайте fsck на змонтованому пристрої: спочатку потрібно вимкнути цільовий пристрій, щоб уникнути пошкодження файлів. Якщо ви спробуєте запустити fsck на підключеному пристрої, ви повинні побачити таку помилку: Запуск fsck на звичайному справному диску виглядає так: Хоча fsck приймає ім'я пристрою, наприклад /dev/sda , ви можете ввести UUID, щоб уникнути плутанини під час підключення та вимкнення пристроїв. UUID – це фіксоване значення, присвоєне вашому пристрою, і ці системні зміни не вплинуть на нього. Це список кодів, які можна повернути функцією fsck після перевірки диска. Ваш код виходу буде сумою цих кодів, якщо ви аналізуєте один диск. Якщо ви використовуєте fsck на кількох пристроях, він поверне побітове АБО двох сум. Ви можете перевірити код завершення останньої команди запуску за допомогою команди echo $? . Тепер, коли ви трохи знайомі з командою fsck, розглянемо практичні варіанти використання цієї команди. Для нашої мети припустимо, що ви визначили проблемний пристрій /dev/sdb . Для початку необхідно переконатися, що диск вимкнено: Тепер запустіть команду fsck: Перевірте висновок про наявність помилок. Якщо нічого не відображається, перевірте код виходу за допомогою echo$? . Є також кілька прапорів опцій, які ми можемо додати, щоб надати можливість автоматичного виправлення. Однак ці команди не стандартизовані, і вам слід перевірити тип файлової системи та порівняти документацію на цій конкретній сторінці посібника. Незважаючи на це, зазвичай ви можете використовувати -p для дозволу fsck автоматично застосовувати виправлення. Аналогічним чином -y буде застосовувати виправлення до будь-якого виявленого пошкодження файлової системи. Ви не можете вимкнути кореневий розділ, доки система активна. Якщо ви підозрюєте, що ваша основна файлова система пошкоджена, вам доведеться використати інший підхід. Насправді є кілька різних варіантів, які можна використовувати.Можна запустити fsck під час завантаження, в режимі відновлення або використовувати Live CD з темою відновлення. Багато дистрибутивів Linux автоматично запускають fsck під час запуску після певної кількості невдалих спроб завантаження. Якщо ви вважаєте за краще взяти справу у свої руки, ви можете запланувати, щоб система зробила це самостійно. У більшості сучасних версій Linux є інструмент під назвою tune2fs. Припускаючи, що ваш кореневий пристрій – dev/sda, вам слід ввести саме цю команду. Насправді відбувається наступне: ви змінюєте системні налаштування так, щоб fsck запускався при кожному n числа завантажень (1 у прикладі). Ви також можете встановити для цього стандартний проміжок часу. Можливі варіанти: днідні, тижнятижня або місяцімісяці. Припустимо, ви хочете, щоб fsck запускався під час кожного завантаження, якщо протягом тижня не проводилося перевірок. Ви можете використовувати -i , щоб вказати інтервал, і команда буде виглядати так. Якщо ви використовуєте systemd, ви можете примусово запустити fsck під час наступного завантаження, ввівши таке: Висновок Ви завжди можете звернутися до man-сторінок за додатковою інформацією. Просто використовуйте man fsck у терміналі. Сподіваюся, ви дізналися щось нове про команду fsck. Якщо у вас є будь-які коментарі або питання, будь ласка, залиште їх нижче. Кожній операційній системі необхідний механізм зберігання та відновлення даних. Цей механізм називається файловою системою. Але можливість збою файлової системи з часом з тієї чи іншої причини збільшується. Якщо файлова система пошкоджена, ви не зможете отримати доступ до певних частин ваших даних. Хорошою новиною є те, що невідповідності можна виявити та відповідним чином виконати ремонт. Ви можете використовувати системну утиліту fsck для перевірки цілісності файлової системи. У цьому короткому пості ми покажемо вам, як використовувати утиліту та виправляти помилки диска. Перевірка цілісності файлової системи або скорочено fsck зазвичай запускається під час завантаження, якщо виявляє, що файлова система знаходиться в певному стані. Він призначений для автоматичного запуску, коли: Перевага fsck в тому, що ви можете запустити його вручну, якщо вважаєте, що у вашій файловій системі виникла проблема. Майте на увазі, що вам потрібні права суперкористувача та відключіть файлову систему перед використанням утиліти. Запуск утиліти рекомендується у таких випадках: Коли ви запускаєте fsck, він взаємодіє з іншою утилітою fsck, специфічною для файлової системи, яку автори утиліти навмисно розробили. Але незалежно від типу файлової системи утиліта працює у трьох режимах: Як згадувалося раніше, для використання цієї утиліти вам потрібний доступ root або суперкористувача. Але примітно, що використовувати інструмент можна з різними аргументами. Ось деякі з найбільш корисних варіантів: Вказує fsck, щоб перевірити всі файлові системи, як зазначено в /etc/fstab. Відображає індикатор виконання Усуває можливість використання розділу іншими програмами під час роботи fsck. Пропускає перевірку змонтованих файлових систем. Відображає можливі зміни без будь-яких змін. Паралельна перевірка файлових систем, включаючи root Пропускає перевірку кореневої файлової системи (що робить її корисною лише при використанні -A) Надає статистику витратних матеріалів для кожного пристрою, що перевіряється. Пропускає відображення заголовка Дозволяє вказати типи файлових систем для перевірки. Відображає опис, що робить fsck. Є деякі параметри, які fsck не розуміє та передає засобу перевірки конкретної файлової системи. Опції та аргументи, що йдуть після «-», вважаються специфічними для файлової системи. Ось параметри, які підтримують більшість засобів перевірки файлової системи: Відновлює файлову систему автоматично без запиту. Хоча деякі програми перевірки файлової системи підтримують цю опцію, єдина причина, з якої e2fsck підтримує її, - це зворотна сумісність. Цей параметр можна порівняти з параметром -p. Примушує fsck уникати спроб виправити будь-які проблеми та повідомляти про них лише на стандартний висновок у деяких програмах перевірки, специфічних для файлової системи. Але ця опція працює не з усіма програмами перевірки, специфічними для fs і програма перевірки на вашому комп'ютері може робити деякі речі по-іншому. Відновлює файлову систему в режимі онлайн. Використання цієї опції є недоцільним, якщо ви запускаєте кілька fsck паралельно.Зауважте, що ця опція є надмірною в e2fsck, оскільки за умовчанням вона відновлюється в інтерактивному режимі. Він підтримує цю опцію лише для зворотної сумісності. В результаті fsck спробує автоматично виправити будь-які пошкодження. Але не кожна програма перевірки файлової системи підтримує цю опцію. Оскільки fsck не може визначити, які параметри є аргументами, а які ні, важливо зазначити, що ці аргументи не можна використовувати з іншими аргументами. Команда fsck є системною утилітою і не може обробляти та відправляти складні параметри fsck. Передача складних аргументів та опцій майже завжди закінчується тим, що ви не отримуєте бажаного результату. І якщо це так, ви, мабуть, робите з утилітою щось, чого не слід робити. Як ви могли здогадатися, параметри, які працюють із різними fsck, специфічними для файлової системи, не стандартизовані. Отже, якщо ви не знаєте, що робити, перегляньте сторінку керівництва програми перевірки файлової системи на вашому комп'ютері. Наступні змінні середовища впливають на поведінку системної утиліти fsck: Environment Variable
FSCK_FORCE_ALL_PARALLEL
Установка цього змінного середовища призводить до того, що утиліта намагається запустити всі файлові системи паралельно. Ця спроба не буде перервана, навіть якщо файлові системи з'являться на одному пристрої. З цієї причини встановлення цього змінного середовища особливо корисне у високопродуктивних файлових системах та системах RAID. Майте на увазі, що значення fs_passno, як і раніше, використовується. Це обмежує кількість засобів перевірки файлової системи, які можуть працювати одночасно.Таким чином, машини з кількома дисками не запускають занадто багато екземплярів fsck одночасно, уникаючи навантаження процесора та пам'яті. Якщо значення дорівнює нулю, кількість процесів, які може запустити машина, не обмежена. Нуль — значення за промовчанням. Ця змінна допомагає знайти засоби для перевірки файлової системи на комп'ютері. Він починається з пошуку у певних системних каталогах: /sbin, /sbin/fs.d, /sbin/fs, /etc/fs та /etc. Пізніше виконується пошук у каталогах PATH. Це дозволяє адміністратору перевизначити розташування файлу /etc/fstab. Це змінне середовище може бути корисним розробникам, що тестують fsck. Перш ніж ви зможете запустити fsck, ви повинні двічі перевірити, що розділ, у якому ви збираєтеся використовувати fsck, вимкнено. Ми використовуємо додатковий диск /dev/sdb, змонтований у /mnt, щоб проілюструвати використання fsck. Якщо ми спробуємо запустити fsck, коли диск все ще підключено, наприклад: Термінал повертає текст: Але це не той результат, якого слід очікувати своєю машиною. Це може призвести до пошкодження даних файлової системи замість переривання операції. Щоб уникнути будь-якого потенційного пошкодження, почніть з розмонтування розділу таким чином: Тепер ви можете безпечно запустити fsck за допомогою першої команди, яку ми випробували у цьому розділі. Коли команда виконується успішно, обов'язково повертає код виходу. Існує безліч можливих кодів виходу, кожен із яких має унікальне значення. Щоб знайти їх, ви можете звернутися до керівництва команди, але для зручності ми склали таблицю з кодами та їх значеннями. Виправлено помилки файлової системи. Систему слід перезавантажити Помилки файлової системи залишилися невиправленими Помилка використання або синтаксис Перевірка скасована на запит користувача Помилка загальної бібліотеки Тепер, коли ми завершили перевірку і знаємо проблему, настав час розпочати відновлення файлової системи. Імовірно, що у вашій файловій системі є більше однієї помилки. У таких випадках найкраще дозволити fsck автоматично виправляти помилки. Використовувати утиліту так само просто, як запустити: У наведеній вище команді прапор -y автоматично відповідає так на будь-які запити, які fsck намагається відправити вам, коли хоче виправити помилку. Якщо у вас немає прав root і ви хочете виконати автоматичне виправлення помилок, ви можете запустити наступну команду в будь-якій файловій системі: Якщо вам потрібно перевірити кореневий розділ, вам потрібно буде або запустити fsck у режимі відновлення, або примусово завантажити його під час завантаження системи, оскільки ви не можете запустити утиліту, коли розділ змонтовано. Щоб запустити fsck під час завантаження системи, ви повинні створити файл з ім'ям forcefsck у кореневому розділі за допомогою цієї команди: Потім можна перезавантажити систему або запланувати перезавантаження. Машина запустить fsck під час наступного завантаження. Майте на увазі, що якщо до вашої системи підключено багато використовуваних індексних дескрипторів, утиліті може знадобитися кілька годин, щоб завершити свою роботу. Тому вам, можливо, доведеться ретельно запланувати завантаження. Коли система нарешті завантажиться, переконайтеся, що створений файл все ще існує, виконавши: Якщо файл не вийшов, видаліть його вручну, інакше утиліта запускатиметься під час кожного завантаження. Щоб запустити fsck у режимі відновлення, потрібно виконати деякі додаткові дії. Зупиніть всі критично важливі служби, які можуть працювати, а потім виконайте наступну команду: Це підготує вашу систему до перезавантаження, і ваша система зрештою завантажиться. Коли це станеться, натисніть і утримуйте Shift, щоб з'явилося меню grub. Виділіть кнопку «Додаткові параметри» та натисніть Enter, потім виберіть опцію «Режим відновлення». З'явиться меню відновлення. Тут потрібно вибрати опцію fsck, а потім підтвердити, що хочете перемонтувати файлову систему. Потім ви побачите чорний екран обробки з білим текстом, який триматиме вас в курсі прогресу. Коли fsck завершить роботу, можна повернутися до роботи, вибравши опцію «відновити». Утиліта Linux fsck (File System Consistency Check – перевірка узгодженості файлової системи) перевіряє файлові системи на наявність помилок чи невирішених проблем. Інструмент використовується для виправлення потенційних помилок та створення звітів. Ця утиліта за умовчанням входить до складу дистрибутивів Linux. Для використання fsck не потрібно жодних спеціальних кроків або процедури встановлення. Після завантаження терміналу ви можете використовувати функції інструменту. Дотримуйтесь цього посібника, щоб дізнатися, як використовувати fsck для перевірки та відновлення файлової системи на Linux-машині. У посібнику будуть наведені приклади того, як використовувати інструмент і для яких варіантів використання. Інструмент fsck можна використовувати у різних ситуаціях: Базовий синтаксис утиліти fsck дотримується цього шаблону: У наведеному прикладі файлової системою може бути пристрій, розділ, точка монтування і так далі. Ви також можете використовувати параметри, що стосуються файлової системи, наприкінці команди. Перед перевіркою та відновленням файлової системи потрібно виконати кілька кроків. Вам потрібно знайти пристрій та розмонтувати його. Щоб переглянути всі підключені пристрої у вашій системі та перевірити розташування диска, використовуйте один із доступних інструментів у Linux. Один із способів знайти диск, який ви хочете просканувати, - це перерахувати диски файлової системи за допомогою команди df: Інструмент показує використання даних у вашій системі та файлових системах. Зверніть увагу на диск, який потрібно перевірити, за допомогою команди fsck . Наприклад, для перегляду розділів першого диску використовуйте наступну команду: sda – це те, як Linux ставиться до вашого першого SCSI-диска. Якщо у вас два, другий буде sdb і так далі. У нашому прикладі ми отримали один результат, оскільки на цій віртуальній машині був лише один розділ. Ви отримаєте більше результатів, якщо у вас буде більше розділів. Ім'я диска тут /dev/sda , а потім кількість розділів відображається у стовпці Number. У нашому випадку це одне: sda1. Перш ніж ви зможете запустити перевірку диска за допомогою fsck, вам необхідно вимкнути диск або розділ.Якщо ви спробуєте запустити fsck на змонтованому диску або розділі, ви отримаєте попередження: Обов'язково виконайте команду змонтування: Замініть пристрій /dev/sdb, який ви бажаєте розмонтувати. Зверніть увагу, що ви не можете розмонтувати кореневі файлові системи. Отже, тепер fsck не можна використовувати на машині, що працює. Докладніше про це наприкінці керівництва. Тепер, коли ви вимкнули диск, можна запустити fsck . Щоб перевірити другий диск, введіть: У цьому прикладі показаний результат для чистого диска. Якщо на диску є кілька проблем, для кожної з них з'являється запит, у якому ви повинні підтвердити дію. Код виходу, який повертає утиліта fsck являє собою суму цих станів: Коли ви закінчите перевірку та ремонт пристрою, змонтуйте диск, щоб ви могли використовувати його знову. У нашому випадку ми перемонтуємо SDB-диск: Перед виконанням перевірки в реальному часі можна виконати тестовий запуск за допомогою fsck . Передайте параметр -N команді fsck , щоб виконати тест: На виході друкується, що могло статися, але не виконується жодних дій. Щоб спробувати усунути потенційні проблеми без будь-яких запитів, передайте параметр -y команді fsck . Таким чином, ви кажете «так, спробуйте виправити всі виявлені помилки» без необхідності щоразу отримувати запит. Якщо помилок не виявлено, результат буде таким самим, як і без опції -y. Використовуйте -n , якщо ви хочете перевірити потенційні помилки у файловій системі, не виправляючи їх. У нас є другий диск sdb з деякими помилками журналу. Коли ви виконуєте fsck на чистому пристрої, інструмент пропускає перевірку файлової системи. При скануванні буде виконано всі п'ять перевірок для пошуку пошкоджень, навіть якщо буде виявлено, що проблем немає. Якщо ви хочете перевірити всі файлові системи за допомогою fsck за один раз, передайте прапорець -A . Оскільки кореневі файлові системи не можна розмонтувати на машині, додайте параметр -R , щоб пропустити їх: Щоб уникнути запитів, додайте параметр -y, про який ми говорили. Якщо ви хочете, щоб fsck пропустив перевірку файлової системи, потрібно додати -t і no перед файловою системою. Наприклад, щоб пропустити файлову систему ext3 , виконайте цю команду: Ми додали -y для пропуску запитів. Щоб переконатися, що ви не намагаєтеся запустити fsck на змонтованій файловій системі, додайте параметр -M . Щоб показати різницю, ми запустимо fsck на sdb , поки він змонтований, а потім, коли ми його розмонтуємо. Поки sdb змонтовано, інструмент виходить без перевірки.Потім ми розмонтуємо sdb і знову запускаємо ту саму команду. Цього разу fsck перевіряє диск та повідомляє, що він чистий чи з помилками.Як використовувати команду Fsck у Linux (для відновлення файлової системи)
Знайомство з командою fsck
fsck [options] [filesystem]
Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors Disk model: THNSN5256GPUK 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380 Device Start End Sectors 1050623 1048576 512M EFI System /dev/nvme0n1p2 1050624 98563270 97512647 46.5G Linux filesystem /dev/nvme0n1p3 98564096 503 191.5G Linux filesystemПеред запуском fsck вимкніть пристрій.
chris@handbook:~$ sudo fsck /dev/sda3 fsck from util-linux 2.34 e2fsck 1.45.5 (07-Jan-2020) /dev/sda3 is mounted. e2fsck: Cannot continue, aborting.chris@handbook:~$ sudo fsck /dev/sda2 fsck from util-linux 2.34 fsck.fat 4.1 (2017-01-24) /dev/sda2: 5 files, 1967/1972 clustersРозуміння кодів виходу команди fsck
Практичне використання команди fsck
Ремонт USB-диска та інших знімних пристроїв
Відновити кореневу файлову систему
sudo tune2fs -c 1 /dev/sda
sudo tune2fs -i 1w /dev/sda
fsck.mode=force fsck.repair=yes
Статті з цієї тематики:
Fsck: як перевірити та відновити файлову систему
Що таке fsck?
Параметри доступні для fsck
Параметри, що залежать від файлової системи
Змінні середовища fsck
Запуск fsck для перевірки та відновлення файлової системи у Linux
Запуск fsck під час завантаження системи
Запуск fsck у режимі відновлення
Статті з цієї тематики:
Посібник із команди fsck для перевірки та відновлення файлової системи
Коли використовувати fsck в Linux
Базовий синтаксис fsck
Як перевірити та відновити файлову систему
Перегляд підключених дисків та розділів
sudo parted /dev/sda 'print'
Розмонтувати диск
Запустити fsck для перевірки помилок
Змонтувати диск
Зробити пробний запуск із fsck
Автоматичне виправлення виявлених помилок за допомогою fsck
sudo fsck -y/dev/sdb
Пропускати відновлення, але виводити помилки fsck на виході
Змусити fsck перевірити файлову систему
Запустити fsck відразу для всіх файлових систем
Пропустити перевірку fsck у певній файловій системі
sudo fsck -AR -t noext3 -y
Пропустити Fsck у підключених файлових системах
Примітка. Щоб видалити перший рядок заголовка інструмента fsck "fsck from util-linux 2.31.1", використовуйте -T .
Запустити fsck у кореневому розділі Linux
Як ми вже згадували, fsck не може перевірити кореневі розділи на працюючій машині, оскільки вони змонтовані та використовуються. Однак навіть кореневі розділи Linux можна перевірити, якщо ви завантажитеся в режимі відновлення та запустіть перевірку fsck :
1. Для цього увімкніть або перезавантажте комп'ютер через графічний інтерфейс або за допомогою терміналу:
2. Натисніть та утримуйте Shift під час завантаження. Відобразиться меню GNU GRUB.
3. Виберіть Advanced options for Ubuntu (Додаткові параметри для Ubuntu).
4. Потім виберіть запис із (recovery mode - режим відновлення) наприкінці. Зачекайте, доки система завантажиться в меню відновлення.
5. Виберіть fsck у меню.
6. Підтвердіть, вибравши Yes у відповідь на запит.
7. Після завершення виберіть resume у меню відновлення, щоб завантажити машину.
Що робити, якщо fsck переривається?
Вам не слід переривати роботу інструмента fsck, поки він працює. Однак, якщо процес буде перервано, fsck завершить поточну перевірку, а потім зупиниться.
Якщо утиліта виявила помилку під час перевірки, вона не намагатиметься щось виправити, якщо її перервати. Ви можете повторно запустити перевірку наступного разу та дочекатися її завершення.
Огляд параметрів команди Linux fsck
Підводячи підсумки, нижче наведено список параметрів, які можна використовувати з утилітою fsck Linux.
- -а - Спробує автоматично виправити помилки файлової системи.Підказок не буде, тому використовуйте його обережно.
- -А - Перевіряє всі файлові системи, перелічені /etc/fstab.
- -C - Показати прогрес для файлових систем ext2 та ext3.
- -f - Змусить fsck перевірити файлову систему. Інструмент перевіряє, навіть якщо файлова система здається чистою.
- -l - Заблокує пристрій, щоб інші програми не могли використовувати розділ під час сканування та відновлення.
- -M - Не перевіряє змонтовані файлові системи. Інструмент повертає код виходу 0, коли змонтовано файлову систему.
- -N - Здійснює пробний запуск. У висновку друкується, що fsck буде робити без виконання будь-яких дій. Також друкуються попередження або повідомлення про помилки.
- -П - Використовується для паралельного сканування кількох файлових систем. Це може викликати проблеми, залежно від ваших налаштувань. Використовуйте з обережністю.
- -Р - Повідомляє інструмент fsck, щоб він не перевіряв кореневі файлові системи при використанні параметра -A.
- -р - Надрукувати статистику пристрою.
- -t - Вкажіть тип файлових систем для перевірки за допомогою fsck. Зверніться до сторінки посібника для отримання докладної інформації.
- -T - Сховати заголовок під час запуску інструмента.
- -у - Спробує автоматично виправити помилки файлової системи під час перевірки.
- -V - Детальний висновок.