LINUX.ORG.RU

Можно ли с помощью LVM сделать онлайн-снапшот для LUKS-тома?


0

1

Итак, хочу сделать синхронизировать домашний каталог с резервным носителем, не разлогиниваясь. Делаю снапшот:

~ # lvcreate -L4G -s -n homebackup /dev/vg/home
  Logical volume "homebackup" created
~ # lvs
  LV         VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  boot       vg   -wi-ao 256.00m                                      
  home       vg   owi-ao 400.00g                                      
  homebackup vg   swi-a-   4.00g home     0.11                        
  root       vg   -wi-ao   1.00g                                      
  srv        vg   -wi-ao  40.00g                                      
  swap       vg   -wi-ao   4.00g                                      
  tmp        vg   -wi-ao   1.00g                                      
  usr        vg   -wi-ao   8.00g                                      
  var        vg   -wi-ao   2.00g
~ # file -s /dev/mapper/vg-homebackup
/dev/mapper/vg-homebackup: symbolic link to `../dm-10'
~ # file -s /dev/dm-10
/dev/dm-10: LUKS encrypted file, ver 1 [aes, cbc-essiv:sha256, sha1] UUID: c2a08391-c89e-42c9-872e-84c6483

Хорошо, создаю подключение к тому:

~ # cryptsetup luksOpen /dev/mapper/vg-homebackup gotf
Enter passphrase for /dev/mapper/vg-homebackup: 
~ # file -s /dev/mapper/gotf 
/dev/mapper/gotf: symbolic link to `../dm-13'
~ # file -s /dev/dm-13
/dev/dm-13: Linux rev 1.0 ext4 filesystem data, UUID=f85de3c1-9213-42da-998d-fd52d433e3e8 (needs journal recovery) (extents) (large files) (huge files)

Упс, needs journal recovery. Естественно, не монтирую: cryptsetup luksClose, lvremove.

Скажите, это мне надо руки чинить, или действительно никак?

★★★★★

> Скажите, это мне надо руки чинить, или действительно никак?
Когда ты делаешь снапшот у тебя в это время фс смонтирована и есстественно она needs journal recovery.

По хорошему нужно перемонтировать фс в режим R/O
mount -o remount,ro /home
потом сделать снапшот
потом обратно mount -o remount,rw /home
и дальше всё остальное.

если никаких особо меняющихся данных нет на хомяке, то можно тупо сделать sync перед созданием снапшота (хм, а может lvcreate это уже делает?), но это чревато потерей/порчей недавно созданных/изменённых файлов в бекапе.

Nao ★★★★★ ()
Ответ на: комментарий от Nao

>> Когда ты делаешь снапшот у тебя в это время фс смонтирована и есстественно она needs journal recovery.

ФС на LV без дополнительных прослоек не требуют восстановления журнала, снапшот делается он-лайн.

GotF ★★★★★ ()

>Скажите, это мне надо руки чинить, или действительно никак?

ммм... ну не знаю. сделай dd со снапшота в файл и попробуй дать ему эту самую journal recovery. Может ничего страшного в этом и нет?

Pinkbyte ★★★★★ ()
Ответ на: комментарий от Pinkbyte

>> Может ничего страшного в этом и нет?

Random :)

GotF ★★★★★ ()
Ответ на: комментарий от GotF

>>снапшот делается он-лайн.

где-то я это уже слышал

дак что там, кэп, руки или таки не зря хают? ;)

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от EvgGad_303

Там второй слой DM. Думаю, это просто не предусмотрено. Онлайн поддерживается для ФС, dm-crypt ею не является. Даже если бы поддерживался dm-crypt, он сам не сможет ничего сделать с ФС, которая над ним.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

>> Даже если бы поддерживался dm-crypt, он сам не сможет ничего сделать с ФС, которая над ним.

Об этом мне следовало подумать сразу. Вопрос решён.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

>Даже если бы поддерживался dm-crypt, он сам не сможет ничего сделать с ФС, которая над ним.

в zfs с криптованых файловых систем можно делать снэпы/клоны и передавать их на другое хранилище/сервер.

>Об этом мне следовало подумать сразу. Вопрос решён.


вывод? ж)

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от EvgGad_303

>> с криптованых файловых систем

Ты шифрование уровня ФС от шифрования на уровне блочного устройства отличишь без подсказок? На уровне ФС много чего можно, но я не хочу.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

я к тому, что можно же это использовать (у вас поди тоже какие fs умеют, незнаю, под линуксом ниразу небыло надобности). дак почему нет?

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от EvgGad_303

Приделанное к ФС это: Reiser4 (известно, в каком оно состоянии); если нету, то будет в Btrfs (там даже on-disk формат не устоялся, смешно говорить о реальном применении в ближайшие годы). Внешние прозрачные: eCryptfs (стековая ФС ядерного уровня с вытекающими отсюда «тонкостями»); EncFS (надёжно, но FUSE). Есть ещё какие-то, но вряд ли их стоит рассматривать. Блочное же шифрование, во-первых, самый надёжный вариант; во-вторых, самый быстрый. Но оно несёт некоторые специфические неудобства, такие как в топике :)

GotF ★★★★★ ()
Ответ на: комментарий от GotF

мде, вобщем невесело.

>Блочное же шифрование, во-первых, самый надёжный вариант


ну вот смотри - снэп сделать уже проблема )
на zfs можно compress+crypto+dedup и потом делать с этим что хочешь

>во-вторых, самый быстрый.


из чего следует?
тот-же ecryptfs выдает только полтора плюса в пользу dm-crypt - «simpler to implement» и «encrypt the entire filesystem, including all of the filesystem metadata» что не всегда есть хорошо, ну и swap когда надо. я тоже соглашусь с ними.

zfs использует solaris cryptographic framework, а потому любой крипто-ускоритель будет подхвачен на лету )

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от EvgGad_303

>zfs использует solaris cryptographic framework

Оно на FreeBSD работает хоть?

>, а потому любой крипто-ускоритель будет подхвачен на лету )

И даже GEOM ELI?

iZEN ★★★★★ ()
Ответ на: комментарий от EvgGad_303

>> ну вот смотри - снэп сделать уже проблема

Ну это я могу пережить, синхронизация делается раз в неделю строго вручную с несколькими контрольными процедурами — можно на это время отмонтировать хомяк без особых неудобств, заодно fsck сделать.

>> compress+crypto+dedup

Зачем? Вопрос экономии места меня не заботит.

>> из чего следует?

Тесты в интернетах есть. У меня скорость записи на ext4 поверх dm-crypt с AES-256-CBC-ESSIV почти не отличается от чистой скорости записи диска.

>> что не всегда есть хорошо

Это всегда есть хорошо.

>> крипто-ускоритель

С ФСБ-шными зондами не ко мне.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

>>> крипто-ускоритель

>> С ФСБ-шными зондами не ко мне.

Речь ведь о железных акселераторах?

GotF ★★★★★ ()
Ответ на: комментарий от GotF

относительно дома все верно.

>Это всегда есть хорошо.


да-да, это очень есть хорошо cpu, когда не дома, потому иногда хорошо не все подряд.

>С ФСБ-шными зондами не ко мне.


эк у вас там, но не только железные

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от iZEN

>Оно на FreeBSD работает хоть?

ну это я думал у тебя спросить )

>И даже GEOM ELI?


см п1. bsd использовал во времена 4.x

но по-идее могло бы, одмин-гайд говорит «which gives it access to any available hardware acceleration or optimized software implementations of the encryption algorithms automatically.» я только железно втыкал.

если конечно на bsd это реализовали.

EvgGad_303 ★★★★★ ()
Ответ на: комментарий от EvgGad_303

>> относительно дома все верно.

А больше и не нужно, я не ойтишнег ;)

>> не только железные

Ну это да, без aes_x86_64 всё очень печально ;)

>> да-да, это очень есть хорошо cpu, когда не дома, потому иногда хорошо не все подряд.

Не распарсил.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

> ФС на LV без дополнительных прослоек не требуют восстановления журнала, снапшот делается он-лайн.

device-mapper автоматом делает фриз фс если это ext*.
Попробуй использовать fsfreeze из util-linux.
Не забудь разморозить после снятия снапшота.

Nao ★★★★★ ()
Ответ на: комментарий от Nao

>> Попробуй использовать fsfreeze из util-linux.

Нет такой, увы. util-linux: 2.17.2.

GotF ★★★★★ ()
Ответ на: комментарий от GotF

В 2.18 уже есть.

cd /usr/src/
wget http://www.kernel.org/pub/linux/utils/util-linux/v2.18/util-linux-ng-2.18.tar.bz2
tar -xf util-linux-ng-2.18.tar.bz2
cd util-linux-ng-2.18/
./configure
make -C sys-utils fsfreeze
cp sys-utils/fsfreeze /usr/local/sbin/

Там тупо ioctl вызывается и всё.

Nao ★★★★★ ()
Ответ на: комментарий от Nao

Спасибо. Пока скачивался тарболл, нагуглил man fsfreeze, а там написано:

fsfreeze is unnecessary for device-mapper devices. The device-mapper (and LVM) automatically freezes filesystem on the device when a snapshot creation is requested. For more details see the dmsetup(8) man page.

Ну я и так знал, что для LVM это не нужно, поэтому посмотрел man dmsetup и нашёл там команды suspend и resume. Т.к. cryptsetup это всё тот же DM, этого оказалось достаточно — получился консистентный онлайновый снапшот при заморозке шифрованной ФС :) Правда, при монтировании , в messages появляется нечто вроде:

May  5 09:12:02 persephone kernel: [41349.552127] EXT4-fs (dm-12): 2 orphan inodes deleted
May  5 09:12:02 persephone kernel: [41349.552130] EXT4-fs (dm-12): recovery complete

но в man fsfreeze написано:

Note that even after freezing, the on-disk filesystem can contain information on files that are still in the process of unlinking. These files will not be unlinked until the filesystem is unfrozen or a clean mount of the snapshot is complete.

Т.е. вроде бы всё в порядке.

Ещё раз спасибо, теперь проблема действительно решена.

GotF ★★★★★ ()
Ответ на: комментарий от EvgGad_303

>если конечно на bsd это реализовали.

В FreeBSD это реализовали на уровне провайдера GEOM. Но ZFS ничего не знает о GEOM. ZVOL обгеомить GELI никто не запрещает, но это же неполноценно как-то, не средствами самой ZFS.

iZEN ★★★★★ ()
Ответ на: комментарий от GotF

> Ну я и так знал, что для LVM это не нужно, поэтому посмотрел man dmsetup и нашёл там команды suspend и resume. Т.к. cryptsetup это всё тот же DM, этого оказалось достаточно — получился консистентный онлайновый снапшот при заморозке шифрованной ФС :

А у меня чего-то не получается с dmsetup.
Замораживаю уже расшифрованное блочное устройство (не крипто-контейнер) и после того как пытаюсь сделать снапшот, у меня lvcreate подвисает в состоянии uninterruptible sleep.

Такая же петрушка если замораживаю крипто-контейнер.

Nao ★★★★★ ()
Ответ на: комментарий от Nao

У меня dmsetup и fsfreeze работают с одним и тем же результатом, замораживается, естественно, уже расшифрованная ФС (у меня выше неоднозначная формулировка вышла). Фризить собственно контейнер, как я понимаю, нет смысла, по крайней мере когда работают барьеры для ФС. Возможно, в последнем я не совсем прав.

GotF ★★★★★ ()
Ответ на: комментарий от Nao

Хм, видимо, раз на раз не приходится — у меня тоже lvcreate завис. После resume его отпустило. Так что, xfs_freeze/fsfreeze FTW (кстати, xfs_freeze с некоторых пор использует стандартные процедуры и успешно управляется с другими типами ФС).

GotF ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.