Воссоздать раздел XFS с существующей файловой системой
У меня есть сервер CentOS с двумя RAID-массивами. Массив ОС и массив ДАННЫХ. Короче говоря, недавно было множество проблем с ОС, и пришлось перезагружать CentOS (было 5,7 и пошло до 6,5). Теперь все работает с частью ОС. Однако у меня возникла проблема с моим массивом данных.
Массив отображается как / dev / sdb, но у меня был раздел (/dev/sdb1), где хранятся все мои данные. Сервер больше не видит / dev / sdb1, поэтому я думаю, что таблица разделов как-то испорчена. Когда я печатаю в parted, он перечисляет тип раздела как цикл:
NON-WORKING SERVER:
Model: Adaptec DATA (scsi)
Disk /dev/sdb: 59.9TB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0.00B 59.9TB 59.9TB xfs
У меня есть другой сервер, который является точной копией этого сервера, он правильно отображается в parted и / dev / sdb1 виден:
WORKING SERVER:
Model: Adaptec STORAGE (scsi)
Disk /dev/sdb: 59.9TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 59.9TB 59.9TB xfs primary
Можно ли как-то исправить раздел, чтобы я не уничтожил свои данные? Мне отчаянно нужно сохранить данные, но я просто не могу понять, есть ли способ исправить раздел и / или почему он отображается в виде цикла.
Спасибо за любую помощь!!
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:
fdisk -l / dev / sdb:
Disk /dev/sdb: 59914.8 GB, 59914783293440 bytes
255 heads, 63 sectors/track, 7284224 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf0b62000
BLKID:
/dev/sda1: UUID="9de0d036-a86f-4557-8e09-a5ccd33c66be" TYPE="ext4"
/dev/sda2: UUID="VYyo4L-lkdG-GivI-a6eM-pFfX-TOoV-E1LxcF" TYPE="LVM2_member"
/dev/mapper/VolGroup-lv_root: UUID="18bbe93e-9b67-4343-8d71-71bd087ab145" TYPE="ext4"
/dev/sdb: LABEL="Data" UUID="dfda2895-d1cd-4b3e-8453-e5c51c093260" TYPE="xfs"
/dev/mapper/VolGroup-lv_swap: UUID="d71f193f-acd4-4aea-8d11-be2acd4575f3" TYPE="swap"
/dev/mapper/VolGroup-lv_home: UUID="223b2be8-f9e9-4671-bc84-e5aa5f73b697" TYPE="ext4"
Распечатка разделенного / dev / sdb модуля (НЕ РАБОЧИЙ СЕРВЕР):
Model: Adaptec DATA (scsi)
Disk /dev/sdb: 117021061120s
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number Start End Size File system Flags
1 0s 117021061119s 117021061120s xfs
Распечатка разделенного / dev / sdb модуля (РАБОЧИЙ СЕРВЕР):
Model: Adaptec STORAGE (scsi)
Disk /dev/sdb: 117021061119s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 34s 117021061086s 117021061053s xfs primary
2 ответа
Итак, кто-то перезаписал весь том новой, пустой файловой системой XFS, и ваша проблема в том, что вам нужно найти суперблок старого, потому что суперблок содержит случайное число, которое используется в вычислениях контрольной суммы, чтобы определить, является ли конкретный блок является частью текущей файловой системы или более ранней итерации (в противном случае fsck в новой файловой системе наткнется на старые данные).
Мой первый подход — создать циклические устройства только для чтения со смещением и посмотреть, смогу ли я их смонтировать:
Стандартное смещение составляет 1 МБ, поэтому сначала попробуйте
losetup -r -o 1M /dev/loop0 /dev/sdb
mount -r /dev/loop0 /mnt
и проверьте, нужна ли вам именно эта файловая система. Если это неправильное смещение, вы можете выполнить поиск, используя что-то вроде
d=`losetup -f`
for i in `seq 1 4096`
do
until losetup -r -o ${i}k $d /dev/sdb
do
:
done &&
mount -r $d /mnt && break
losetup -d $d
done
Внутренний цикл необходим, поскольку, по-видимому, существует состояние гонки, которое иногда приводит к «занятости устройства или ресурса» во время настройки устройства цикла.
В конце этого цикла у вас должна быть смонтирована файловая система — убедитесь, что это та, которая вам нужна, и
Затем, когда вы нашли раздел, вы можете очистить область перед ним, чтобы избавиться от неправильного суперблока, создать новую таблицу разделов с правильным смещением для раздела, а затем запустить проверку файловой системы.
Вполне вероятно, что файловая система будет серьезно повреждена, если она действительно была отформатирована, но смещение должно позволить хотя бы что-то восстановить.
Хитрая.
Тип раздела цикла фактически означает, что таблицы разделов нет.
Таблица разделов в основном говорит ОС, где искать начало раздела и где он должен останавливаться при создании файловой системы. Так что в таблице нет ничего волшебного, и если у вас есть правильная информация, если вы просто записываете ее в соответствующую позицию, ваш диск должен быть не хуже...... э... нового... Ну, вы получите картину...;)
Вот что я бы сделал:
- Создайте резервную копию текущей таблицы разделов проблемного хоста, хотя она и пуста, используя
dd if=/dev/sdb of=/root/sdb-parttable.bin bs=512 count=1
- Затем я использовал бы fdisk, чтобы узнать начальный сектор и конечный сектор на другом сервере, записал их,
- Создайте новый раздел, используя fdisk на проблемном сервере (не делая ничего другого!), Используя точные значения со второго сервера.
- Запишите эту таблицу разделов на диск
- Попробуйте смонтировать /dev/sdb1
- Если это не работает, используйте
dd if=/root/sdb-parttable.bin of=/dev/sdb bs=1 count=64 skip=446 seek=446
восстановить старую таблицу разделов.
Отказ от ответственности: это немного сложная операция. Информация в этом ответе была дана в надежде, что она может быть полезной и без каких-либо гарантий... Если у вас есть какие-либо средства для резервного копирования диска на байтовом уровне, прежде чем предпринимать следующие действия: сделайте это!