3

Я пытаюсь найти эффективный способ rsync рендеринга содержимого файловой системы ext4 как части обычной резервной копии, но я рассматриваю достойное сжатие и минимально необходимое пространство.

Я могу просто использовать обычный rsync а затем tar/gzip получившийся каталог, но само сжатие будет на несколько порядков медленнее, чем при предыдущем rsyncing.

Я не могу использовать squashfs и его лайки, потому что они доступны только для чтения.

Я могу сделать раздел специального типа для этой резервной копии со встроенным сжатием, таким как btrfs или reiser4 но я должен создать его с определенным размером, и он не будет масштабироваться.

Интересно, существует ли какая-либо технология контейнера со встроенным сжатием, которая прозрачно и автоматически корректирует его размер в соответствии с объемом данных, синхронизированных с ним?

Кстати, я использую Debian GNU/Linux.

2 ответа2

1

@Tetsujin дал мне верное направление, OS X комплекты / образы sparse имеют аналог в Linux, и это редкие файлы.

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

Ниже показано, как создать разреженное сжатое изображение btrfs. Поддержка btrfs в Debian и его производных (таких как Ubuntu) может быть включена путем установки пакетов btrfs-tools (sudo apt-get install btrfs-tools). Я добавил разреженное изображение ext4, чтобы сравнить скорость и размер. Все операции выполнялись на Debian 7.8 Wheezy (старая версия по состоянию на 30 апреля 2015 года).

  1. Создать пустые разреженные файлы любого размера. Пусть будет 5 терабайт:

    me@wheezy:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  2. Отформатировать их

    до ext4:

    me@wheezy:~$ mkfs.ext4 ext4.sparse
    mke2fs 1.42.5 (29-Jul-2012)
    <...>
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (32768 blocks): done
    Writing superblocks and filesystem accounting information: done
    

    к btrfs:

    me@wheezy:~$ mkfs.btrfs btrfs.sparse
    
    WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
    WARNING! - see http://btrfs.wiki.kernel.org before using
    
    fs created label (null) on btrfs.sparse
            nodesize 4096 leafsize 4096 sectorsize 4096 size 5.00TB
    Btrfs Btrfs v0.19
    
  3. Сделайте точки монтирования:

    me@wheezy:~$ mkdir ext4_mount btrfs_mount
    
  4. Смонтировать их. Не забудьте loop вариант:

    ext4:

    me@wheezy:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount/
    

    btrfs (не забудьте параметр compress (может быть zlib или lzo)):

    me@wheezy:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount/
    
  5. Вот и все, файловые системы созданы и смонтированы, для ОС выглядят как 5 ТБ, но на самом деле занимают очень мало места:

    дф:

    me@wheezy:~$ df -h | grep _mount
    /dev/loop0                         5.0T  189M  4.8T   1% /home/a/ext4_mount
    /dev/loop1                         5.0T  120K  5.0T   1% /home/a/btrfs_mount
    

    du:

    me@wheezy:~$ du -h *.sparse
    4.3M    btrfs.sparse
    169M    ext4.sparse
    
  6. Для тестирования я создал огромный текстовый файл объемом 1,3 ГБ с повторяющимся шаблоном. Это будет cp 'd для обеих вновь созданных файловых систем:

    ext4:

    me@wheezy:~$ time sudo cp /store/share/bigtextfile ext4_mount/
    
    real    0m12.344s
    user    0m0.008s
    sys     0m1.708s
    

    btrfs:

    me@wheezy:~$ time sudo cp /store/share/bigtextfile btrfs_mount/
    
    real    0m3.714s
    user    0m0.016s
    sys     0m1.204s
    
  7. Как видно из предыдущего шага, btrfs оказался намного быстрее при передаче сильно сжимаемых данных, чем старый добрый ext4. Давайте проверим их размер:

    me@wheezy:~$ df -h | grep _mount
    /dev/loop0                         5.0T  1.5G  4.8T   1% /home/a/ext4_mount
    /dev/loop1                         5.0T   46M  5.0T   1% /home/a/btrfs_mount
    
  8. btrfs оказался намного более экономичным. Наконец, давайте проверим также и разреженные размеры файлов:

    me@wheezy:~$ du -h *.sparse
    50M     btrfs.sparse
    1.4G    ext4.sparse
    

Вот и все. Если это необходимо, разреженные файлы могут быть дополнительно увеличены. btrfs также можно изменить в режиме онлайн.

Классное решение для регулярного резервного копирования с помощью rsync . Но не забудьте также сделать резервную копию этих файлов, поскольку btrfs все еще является экспериментальной файловой системой.

Дополнительная информация о Arch Wiki:https://wiki.archlinux.org/index.php/Sparse_file и https://wiki.archlinux.org/index.php/Btrfs

0

.Sparsebundle или .sparseimage, возможно, то, что вам нужно ...

Определены разреженные пучки

Разреженный комплект - это формат образа диска, представленный в Mac OS X 10.5 Leopard® (.sparsebundle). Как и разреженные изображения (.sparseimage), разреженный комплект представляет собой формат чтения / записи, в котором образ диска занимает столько же места, сколько и содержащиеся в нем данные, до предела, определенного при его создании. Разреженные пачки уплотняются более эффективно, чем разреженные изображения, что означает, что быстрее освободить неиспользуемое свободное пространство в разреженном расслоении, чем в эквивалентном разреженном изображении.

В то время как как разреженные образы, так и разреженные пакеты содержат файловую систему, разреженные комплекты имеют пакетную поддержку, что означает, что в них используется специализированная иерархическая структура каталогов для группировки связанных ресурсов. В разреженном пакете подкаталог band содержит фактические данные, сохраненные в образе диска.

В Leopard включение FileVault® в домашней папке преобразует эту домашнюю папку в зашифрованный разреженный пакет. В Mac OS X 10.4 Tiger® и более ранних версиях FileVault использовала зашифрованные разреженные изображения.

Разреженные комплекты также используются для сетевых резервных дисков, созданных Time Machine®, например, на Time Capsule®.

См. Может ли Linux смонтировать обычный каталог образов дисков с разреженными пакетами Time Machine? гораздо больше, чем я знаю о nix, я из Mac, извините.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .