LinuxForum.Fans
Тема

После движения LVM испортился файл

Автор: XliN 33 сообщений 3670 просмотров
#365726

Неинтересная подготовка

Показать

[console]
goblin-server tmp # lvcreate -n lv_tmp -L 2G vg_data
Logical volume "lv_tmp" created
goblin-server tmp # mkdir -p lv_tmp
goblin-server tmp # mkfs.ext4 /dev/vg_data/lv_tmp
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

goblin-server tmp # mount /dev/vg_data/lv_tmp ./lv_tmp/
goblin-server tmp # mkdir lv_tmp/test/1
mkdir: невозможно создать каталог «lv_tmp/test/1»: No such file or directory
goblin-server tmp # mkdir lv_tmp/test
goblin-server tmp # touch lv_tmp/test/foo
goblin-server tmp # touch lv_tmp/test/bar
goblin-server tmp # touch lv_tmp/test/baz
[/console]

Cоздание снапшота

Показать
[console]
goblin-server tmp # lvcreate -L 100M -n lv_tmp_snapshot -s /dev/vg_data/lv_tmp
Rounding up size to full physical extent 128,00 MiB
Logical volume "lv_tmp_snapshot" created
goblin-server tmp # lvdisplay /dev/vg_data/lv_tmp
--- Logical volume ---
LV Path /dev/vg_data/lv_tmp
LV Name lv_tmp
VG Name vg_data
LV UUID wBfuTv-JiZI-nVzU-jQIX-Rom3-IsNe-Yet2Pg
LV Write Access read/write
LV Creation host, time goblin-server, 2014-02-12 17:28:53 +0400
LV snapshot status source of
lv_tmp_snapshot [active]
LV Status available
# open 1
LV Size 2,00 GiB
Current LE 32
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:12

goblin-server tmp # lvdisplay /dev/vg_data/lv_tmp_snapshot
--- Logical volume ---
LV Path /dev/vg_data/lv_tmp_snapshot
LV Name lv_tmp_snapshot
VG Name vg_data
LV UUID Xw4c4o-Kv6s-jBjM-elmI-Q8Sm-UPIA-x8YzAr
LV Write Access read/write
LV Creation host, time goblin-server, 2014-02-12 17:36:03 +0400
LV snapshot status active destination for lv_tmp
LV Status available
# open 0
LV Size 2,00 GiB
Current LE 32
COW-table size 128,00 MiB
COW-table LE 2
Allocated to snapshot 0,01%
Snapshot chunk size 4,00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:13
[/console]

Опасные действия

Показать
[console]goblin-server tmp # ls lv_tmp/test/
bar baz foo
goblin-server tmp # rm lv_tmp/test/bar
goblin-server tmp # ls lv_tmp/test/
baz foo
goblin-server tmp # umount lv_tmp
goblin-server tmp # dd if=/dev/zero of=/dev/vg_data/lv_tmp bs=1M count=1 # давай вообще всю ФС убьём
1+0 записей считано
1+0 записей написано
скопировано 1048576 байт (1,0 MB), 0,152402 c, 6,9 MB/c[/console]

Восстановление снапшота

Показать
[console]goblin-server tmp # lvconvert --merge /dev/vg_data/lv_tmp_snapshot
Merging of volume lv_tmp_snapshot started.
lv_tmp: Merged: 0,0%
Merge of snapshot into logical volume lv_tmp has finished.
Logical volume "lv_tmp_snapshot" successfully removed
goblin-server tmp # mount /dev/vg_data/lv_tmp ./lv_tmp/
goblin-server tmp # ls lv_tmp/test/
bar baz foo
[/console]

У тебя всё точно так же с точностью до имён и размеров... только «опасным действием» будет fsck.
да, и под размер снапшота на всякий пожарный отдай всё доступное в группе место...

#365764

сейчас попробовал на тестовой ВМ в virtualbox отрезать кусок и приклеить его к другому, так получил итог, что от кого отрезал отвалился и система его не может примонтировать =)

Все запутанно как то. =)
Fat-Zer, В твоем руководстве пока не разберусь. Не пойму почему не получается. Делаю по http://irternus.blogspot.ru/2011/07/lvm.html
Может тут чего касячно?

#365778

XliN, так ты фс починил или нет?

"XliN" написал:
В твоем руководстве пока не разберусь.

это просто демонстрация, как со снапшотом работать...
т.е. в твоём случае:
vgdisplay # посмотри сколько места свободно в группе
lvcreate -L 20G -n lv_home_snap -s /dev/vg_micro/lv_home #создаёшь снапшот, размер в -L из предыдущего пункта...
e2fsck -fp /dev/vg_micro/lv_home # делаешь fsck
потом монтируешь и смотришь...
если всё в порядке, то удаляешь снапшот: lvremove /dev/vg_micro/lv_home_snap
если нет, то откатываешься: lvconvert --merge /dev/vg_data/lv_home_snap и думаем дальше

изменять размер совсем просто, на отмонтированной(если уменьшать) фс в одну команду: lvresize -rL -2G /dev/vg_micro/lv_home (уменьшить на 2Gib). Она пережмёт и фс и том...

#365782

Для создания снапшота нужно что бы было свободное не размеченное место на VG?

#365783
"Fat-Zer" написал:
vgdisplay # посмотри сколько места свободно в группе

Этим и занимаюсь на тестовой ВМ. У меня на боевом нет свободного места. Все размечено. Пытался на тесте отрезать... не получилось. От кого отрезал выпал и не монтируется. Сыплет ошибками.

#365785
"Fat-Zer" написал:
изменять размер совсем просто, на отмонтированной(если уменьшать) фс в одну команду: lvresize -rL -2G /dev/vg_micro/lv_home (уменьшить на 2Gib). Она пережмёт и фс и том...

Вот это я сейчас протестирую и если все гуд будет, то попробую сделать снапшот. Только после этого переключусь на основной сервер.

#365792
"XliN" написал:
Для создания снапшота нужно что бы было свободное не размеченное место на VG?

да.

"XliN" написал:
У меня на боевом нет свободного места.

вот это плохо...

"XliN" написал:
Вот это я сейчас протестирую и если все гуд будет, то попробую сделать снапшот. Только после этого переключусь на основной сервер.

нужно сначала с повреждением ФС разобраться... без этого ничего не заработает...

ЗЫ: судя по этому, восстановить файл не удастся... не знаю, почему у тебя всё ещё получается запускать VM с него... кстати, покажи ка smart на всякий пожарный...

#365795
"Fat-Zer" написал:
XliN пишет:
Для создания снапшота нужно что бы было свободное не размеченное место на VG?
да.

Тут выяснилось что размер снапшота должен быть таким же как и размер того тома с которого хотим снять.

"Fat-Zer" написал:
не знаю, почему у тебя всё ещё получается запускать VM с него...

Сама система грузится с другого файла, а тот что отвалился был в ВМ в качестве отдельного /var

"Fat-Zer" написал:
нужно сначала с повреждением ФС разобраться... без этого ничего не заработает...

Вот это главное, т.к. e2fsck показывал 2%

Надо думать. Откатиться со снапшота тоже не получается пока на тест ВМ

#365800
"XliN" написал:
Тут выяснилось что размер снапшота должен быть таким же как и размер того тома с которого хотим снять.

нет... в снапшот пишутся только изменяемые чанки по 64К, для наших целей, в теории, должно хватить и пары мегабайт, но лучше перестраховаться и взять 2 гига... а ещё лучше сколько есть... тут проблема в том, что снапшот просто перестанет работать, когда полностью заполнится...

#365804

Я тут еще вспомнил про зеркалирование. Я так понимаю, я его все таки завер при вводе сервера в продакшен.
[console][root@micro ~]# lvs -a -o +devices
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert Devices
lv_home vg_micro -wi-ao---- 3,58t /dev/sdb1(0)
lv_home vg_micro -wi-ao---- 3,58t /dev/sda2(12800)
lv_root vg_micro -wi-ao---- 50,00g /dev/sda2(0)
lv_swap vg_micro -wi-ao---- 13,75g /dev/sda2(473286)[/console]
Видно, что lv_home есть и на sdb1 и на sda2 Это не поможет?

#365817
"XliN" написал:
Я тут еще вспомнил про зеркалирование. Я так понимаю, я его все таки завер при вводе сервера в продакшен.

неправильно завёл... mirror выглядит как-то так:
[console] photo vg_data mwi-aom- 40,00g photo_mlog 31,72 photo_mimage_0(0),photo_mimage_1(0)
[photo_mimage_0] vg_data Iwi-aom- 40,00g /dev/sde7(701)
[photo_mimage_1] vg_data Iwi-aom- 40,00g /dev/sdc6(6120)
[photo_mlog] vg_data lwi-aom- 64,00m /dev/sdb1(8000)
[/console]
а у тебя один том на 7 с небольшим Тб. глянь lvdisplay -m для подтверждения...

"XliN" написал:
Видно, что lv_home есть и на sdb1 и на sda2 Это не поможет?

помог бы если бы ошибка была аппаратная...

#365818

Все.. приплыл. Файл переименовался в папку после того как я через virs смотрел снапшоты.

#365819

[console] LV Path /dev/vg_micro/lv_home
LV Name lv_home
VG Name vg_micro
LV UUID jxXO1x-9u4f-bJSL-sSo8-elPU-7i9b-TD4Erq
LV Write Access read/write
LV Creation host, time ,
LV Status available
# open 1
LV Size 3,58 TiB
Current LE 937417
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

--- Segments ---
Logical extent 0 to 476930:
Type linear
Physical volume /dev/sdb1
Physical extents 0 to 476930

Logical extent 476931 to 937416:
Type linear
Physical volume /dev/sda2
Physical extents 12800 to 473285[/console]

Войдите или зарегистрируйтесь, чтобы ответить.