проверить и восстановить файловую систему XFS на RHEL

Thank you for reading this post, don't forget to subscribe!

Коман­да xfs_repair вос­ста­нав­ли­ва­ет повре­жден­ные или повре­жден­ные фай­ло­вые систе­мы XFS.

Она отли­ча­ет­ся высо­кой мас­шта­би­ру­е­мо­стью, про­из­во­ди­тель­но­стью и пред­на­зна­че­на для эффек­тив­но­го вос­ста­нов­ле­ния даже очень боль­ших фай­ло­вых систем с боль­шим коли­че­ством inodes.

В отли­чие от дру­гих фай­ло­вых систем Linux, xfs_repair не запус­ка­ет­ся во вре­мя загруз­ки, даже если фай­ло­вая систе­ма XFS не была чисто размонтирована.

Это 64-бит­ная жур­на­ли­ру­е­мая фай­ло­вая систе­ма, кото­рая под­дер­жи­ва­ет очень боль­шие фай­лы (8 EB) и фай­ло­вые систе­мы (16 EB) на одном хосте.

XFS явля­ет­ся фай­ло­вой систе­мой по умол­ча­нию для Red Hat Enterprise Linux 7.

Вос­ста­нав­ли­ва­е­мая фай­ло­вая систе­ма не долж­на быть смон­ти­ро­ва­на перед выпол­не­ни­ем xfs_repair, ина­че резуль­ти­ру­ю­щая фай­ло­вая систе­ма может быть непо­сле­до­ва­тель­ной или поврежденной.

Эту же про­це­ду­ру мож­но исполь­зо­вать для дру­гих систем­ных раз­де­лов, кото­рые нель­зя раз­мон­ти­ро­вать во вре­мя рабо­ты системы.

В этом руко­вод­стве мы пока­жем вам, как исполь­зо­вать коман­ду ‘xfs_repair’ в Linux для вос­ста­нов­ле­ния повре­жден­ной фай­ло­вой систе­мы XFS.

⛬ Фай­ло­вая систе­ма XFS уста­нав­ли­ва­ет­ся толь­ко для чте­ния (CentOS / RHEL)

Общий син­так­сис:

xfs_repair [option] [device or partition or mount point]

Повреждение файловой системы XFS

Мы наме­рен­но испор­тим фай­ло­вую систе­му XFS, выпол­нив сле­ду­ю­щую команду.

Она уда­лит слу­чай­но выбран­ные бло­ки мета­дан­ных фай­ло­вой системы.

При­ме­ча­ние: Пожа­луй­ста, не тести­руй­те это на про­из­вод­ствен­ном сер­ве­ре, так как это может силь­но повре­дить ваши данные.

Эта коман­да доступ­на толь­ко в отла­доч­ных вер­си­ях ‘xfs_db’.

Это полез­но для тести­ро­ва­ния xfs_repair и xfs_check.

sudo umount /data

Повре­жде­ние фай­ло­вой систе­мы xfs с помо­щью коман­ды xfs_db.

sudo xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/sdb1

Когда вы попы­та­е­тесь загру­зить фай­ло­вую систе­му, вы уви­ди­те сле­ду­ю­щее сооб­ще­ние об ошиб­ке, посколь­ку она была повреждена.

sudo mount -a

mount: /data: mount(2) system call failed: Structure needs cleaning.

1) Восстановление файловой системы XFS

Вы може­те вос­ста­но­вить повре­жден­ную фай­ло­вую систе­му XFS без рута на рабо­та­ю­щей систе­ме Linux.

Вам может пона­до­бить­ся загру­зить систе­му в режи­ме Rescue Mode или Emergency Mode для вос­ста­нов­ле­ния фай­ло­вой систе­мы, если ее невоз­мож­но раз­мон­ти­ро­вать во вре­мя рабо­ты системы.

Шаг-1: Размонтируйте файловую систему, для которой вы хотите запустить fsck.

sudo umount /data

Шаг-2: Запустите xfs_repair с опцией ‘-n’, чтобы выполнить пробный запуск.

Обра­ти­те вни­ма­ние, что инстру­мент ‘xfs_check’ был упразд­нен в поль­зу ‘xfs_repair -n’.

sudo xfs_repair -n /dev/sdb1

Шаг-3: Запустите xfs_repair для восстановления файловой системы:

sudo xfs_repair /dev/sdb1

Шаг-4: Как только файловая система будет восстановлена, смонтируйте раздел

sudo mount /dev/sdb1

2) Восстановление тома XFS LVM с помощью xfs_repair

xfs_repair мож­но запус­кать на логи­че­ских томах LVM так же, как фай­ло­вые систе­мы на стан­дарт­ных разделах.

Для вос­ста­нов­ле­ния LVM-раз­де­ла сле­дуй­те при­ве­ден­ной ниже процедуре:

Шаг-1: Убедитесь, что конкретный том LVM находится в активном состоянии для запуска xfs_repair. Чтобы проверить состояние LVM, выполните:

sudo lvscan

Если он “inactive“, акти­ви­руй­те его, выпол­нив сле­ду­ю­щую команду:

sudo lvchange -ay /dev/myvg/vol02 -v

Шаг-2: Размонтируйте устройство или файловую систему, для которой вы хотите запустить xfs_repair.

sudo umount /dev/myvg/vol02

Шаг-3: Запустите xfs_repair для восстановления файловой системы.

Для запус­ка xfs_repair необ­хо­ди­мо вве­сти путь к LVM-тому, а не к реаль­но­му физи­че­ско­му разделу.

sudo xfs_repair /dev/myvg/vol02

 

Шаг-4: Как только файловая система будет восстановлена, смонтируйте раздел.

sudo mount /apps1