web-dev-qa-db-ja.com

サイズを自動的に調整する圧縮機能が組み込まれたコンテナ

定期的なバックアップの一部として、ext4ファイルシステムのコンテンツをrsyncingする効率的な方法を見つけようとしていますが、適切な圧縮と最小限の必要なスペースを考慮しています。

プレーンなrsyncを使用してからtar/gzipを使用して結果のディレクトリを作成できますが、圧縮自体は前のrsyncよりも桁違いに遅くなります。

squashfsなどは読み取り専用であるため、使用できません。

btrfsreiser4などの組み込みの圧縮を使用して、このバックアップ用に特別なタイプのパーティションを作成できますが、特定のサイズで作成する必要があり、拡張できません。

圧縮機能が組み込まれたコンテナで、サイズを透過的かつ自動的に調整するデータの量に応じて同期されるテクノロジーがあるのだろうか?

ちなみに私はDebianGNU/Linuxを使っています。

3

@Tetsujinは私に正しい方向を教えてくれました、OS Xsparseバンドル/イメージLinuxではアナログがあり、これは スパースファイル です。

スパースファイルは、その中のデータが大きくなるにつれて大きくなります。 btrfs など、圧縮機能が組み込まれた最新のバリアントを含む、任意のLinuxファイルシステムを含めることができます。

以下に、スパース圧縮btrfsイメージを作成する方法を示します。 btrfs Debianおよびその派生物(Ubuntuなど)でのサポートは、btrfs-toolsパッケージ(Sudo apt-get install btrfs-tools)。速度とサイズを比較するために、まばらなext4画像も追加しました。すべての操作はDebian7.8 Wheezy(2015年4月30日時点で旧安定)で実行されました。

  1. 任意のサイズの空のスパースファイルを作成します。 5テラバイトとします。

    me@wheezy:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  2. それらをフォーマットします

    to 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
    

    to 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/
    

    btrfscompressオプションを忘れないでください(zlibまたはlzoの場合があります)):

    me@wheezy:~$ Sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount/
    
  5. これで、ファイルシステムが作成およびマウントされ、OSには5 TB)と表示されますが、実際にはほとんどスペースを取りません。

    df

    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
    

    d

    me@wheezy:~$ du -h *.sparse
    4.3M    btrfs.sparse
    169M    ext4.sparse
    
  6. テストの目的で、繰り返しパターンを持つ巨大な1.3GBのテキストファイルを作成しました。新しく作成された両方のファイルシステムにcpされます。

    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 ==

1

.sparsebundleまたは.sparseimageがおそらく必要なものです...

定義されたスパースバンドル

スパースバンドルは、Mac OSX10.5Leopard®(.sparsebundle)で導入されたディスクイメージ形式です。スパースイメージ(.sparseimage)と同様に、スパースバンドルは読み取り/書き込み形式であり、ディスクイメージは、作成時に定義された制限まで、含まれるデータと同じ量のスペースしか占有しません。スパースバンドルは、スパースイメージよりも効率的に圧縮されます。つまり、スパースバンドルでは、同等のスパースイメージよりも未使用の空き領域を再利用する方が高速です。

スパースイメージとスパースバンドルの両方にファイルシステムが含まれていますが、スパースバンドルはバンドルバックされています。つまり、関連するリソースをグループ化するために、特殊な階層ディレクトリ構造を採用しています。スパースバンドル内のbandsサブディレクトリには、ディスクイメージ内に保存された実際のデータが含まれています。

Leopardでは、ホームフォルダーでFileVault®を有効にすると、そのホームフォルダーが暗号化されたスパースバンドルに変換されます。 Mac OS X10.4Tiger®以前では、FileVaultは暗号化されたスパースイメージを採用していました。

スパースバンドルは、TimeCapsule®などのTimeMachine®によって作成されたネットワークベースのバックアップディスクにも使用されます。

Linuxは通常のTime Machineスパースバンドルディスクイメージディレクトリをマウントできますか? 私がnixについて知っている以上のことについては、Macベースです。申し訳ありません。

0
Tetsujin