GNU/Linux >> Linux の 問題 >  >> Linux

サイズを自動的に調整する圧縮機能を内蔵したコンテナ

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

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

以下は、スパース圧縮 btrfs イメージを作成する方法を示しています。 btrfs Debian およびその派生物 (Ubuntu など) でのサポートは、btrfs-tools をインストールすることで有効にできます パッケージ (sudo apt-get install btrfs-tools )。スパース ext4 を追加しました 画像も速度とサイズを比較します。すべての操作は Debian 7.8 Wheezy (2015 年 4 月 30 日現在の旧安定版) で実行されました。

<オール>
  • 任意のサイズの空のスパース ファイルを作成します。 5 テラバイトとします:

     [email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  • フォーマットする

  • ext4 へ :

        [email protected]:~$ 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 へ :

        [email protected]:~$ 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
    
    1. マウント ポイントを作成します:

       [email protected]:~$ mkdir ext4_mount btrfs_mount
      
    2. それらをマウントします。 loop を忘れないでください オプション:

    ext4 :

        [email protected]:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount
    

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

        [email protected]:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount
    
    1. それだけです!ファイル システムが作成およびマウントされ、OS には 5 TB として表示されますが、実際にはほとんどスペースを占有しません:

    df :

        [email protected]:~$ 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
    

    :

        [email protected]:~$ du -h *.sparse
        4.3M    btrfs.sparse
        169M    ext4.sparse
    
    1. テストのために、反復パターンを含む 1.3 GB の巨大なテキスト ファイルを作成しました。 cp になります 新しく作成された両方のファイル システムに追加:

    ext4 :

        [email protected]:~$ time sudo cp /store/share/bigtextfile ext4_mount/
    
        real    0m12.344s
        user    0m0.008s
        sys     0m1.708s
    

    btrfs :

        [email protected]:~$ time sudo cp /store/share/bigtextfile btrfs_mount/
    
        real    0m3.714s
        user    0m0.016s
        sys     0m1.204s
    
    1. 前のステップで見たように、btrfs 古き良きext4と比較して、高度に圧縮可能なデータの転送中にはるかに高速であることが証明されました .後でファイルシステムのサイズを確認しましょう:

       [email protected]:~$ 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
      
    2. btrfs スペース効率が大幅に向上することが証明されました。最後に、スパース ファイルのサイズも確認してみましょう:

       [email protected]:~$ 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


    Linux
    1. Buildahを使用したコンテナイメージビルドの高速化

    2. Lsでアンカー^$を使用できますか?

    3. Linux用のどのファイル圧縮ソフトウェアが最大のサイズ縮小を提供しますか?

    1. 外付けUSBハードドライブで圧縮を使用してBtrfsを使用する方法は?

    2. Linuxのどのコマンド[例で説明]

    3. struct epoll_event によるメモリ処理

    1. Size() vs ls -la vs du -h どちらが正しいサイズですか?

    2. より高い圧縮率で zip ファイルを圧縮する

    3. セクターが 512 ではなく 4096 バイトになるように、dd で空の img を作成します。