web-dev-qa-db-ja.com

XFS「デバイスにスペースが残っていません」という誤った記述

XFSパーティション on [〜#〜] lvm [〜#〜] on buntu 14.04.1 LTSのサーバーセットアップがあります。ファイルをホームパーティションにコピーしている間、「デバイスに空き容量がありません "」が表示されます。

df -h十分なスペースを表示します:

/dev/mapper/prod--vg-home     35G   21G   15G  60% /home

また、fallocateを使用して、同じホームアカウントでディスクをほぼ完全に埋め、クォータやその他のディスク容量の問題が関連していないことを確認しました。

/dev/mapper/prod--vg-home     35G   34G  1.5G  96% /home

df -iも十分なiノードを表示します:

/dev/mapper/prod--vg-home   36700160  379390 36320770    2% /home

また、同じホームアカウントで大量の小さなランダムファイルを使用しました。これは問題を再現しました

mkdir 1
cd 1
dd if=/dev/zero of=masterfile bs=10000000 count=1
split -b 10 -a 10 masterfile
cd ..
cp -R 1 2

これにより、「デバイスにスペースが残っていません」という結果になり、追加のスペースはほとんど必要ありません(約30MB)。df -i言及:

/dev/mapper/prod--vg-home   36700160 1310464 35389696    4% /home

同じマシンで2番目のテスト(Ubuntu 14.04.1 LTS)を実行しました。

上記のddとsplitの手順を使用して、5 GBの新しい論理ボリュームを作成し、小さなファイルで埋めました。

次のディスク容量とiノードが使用可能な「デバイスに空き容量がありません」を受け取りました。

/dev/mapper/prod--vg-test    5.0G  4.2G  811M  85% /mnt/test
/dev/mapper/prod--vg-test    4257712  937920  3319792   23% /mnt/test

ここで予約済みスペースがまだ無関係であることを確認するために、root権限を使用してこのテストを実行しました。

別のマシンで3番目のテスト(Debian 2.6.32-5)を実行しました。

5 GBの新しい論理ボリュームを作成し、上記のddとsplitの手順を使用して小さなファイルで埋めました。

手順は成功しました次のディスク容量とiノードが使用可能です:

/dev/mapper/data-test      5.0G  4.2G  909M  83% /mnt/test
/dev/mapper/data-test      4721904 1000005 3721899   22% /mnt/test

ここでも予約済みスペースが無関係であることを確認するために、root権限も使用してこのテストを実行しました。

これはbuntu 14.04.1LTSのバグを指していますか?

Ubuntu 14.04.1LTSでinodeの最大パーセンテージを変更した場合の影響を確認しました。

xfs_growfs -m 25 /dev/mapper/prod--vg-home

この量は簡単に増減できます。

この設定を試していると、3%に減らして25%に増やし、一部のファイルを削除すると、さらに多くのファイルを追加できることに気付きましたが、ストレージまたはiノードがいっぱいになる前にエラーが発生します。 。

xfs_info表示:

meta-data=/dev/mapper/prod--vg-home isize=256    agcount=14, agsize=655360 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=9175040, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

「デバイスに空き容量がありません」というメッセージが表示される可能性のある他の設定はありますか?それとも、これはバグであると結論付ける必要がありますか?

ありがとうございました

6
Purf

Xfs_growfsにバグがあり、iノードがパーティション全体に適切に分散されません。解決策は、inode64オプションを使用して再マウントすることです。たとえば、これが/ dev/vda1の場合、次のようにします。

mount -o remount,inode64 /dev/vda1

バグの詳細については、 ここ を参照してください。

6
Daniel Stewart

ディレクトリ(特に/home)ディスクがいっぱいでないときにディスクがいっぱいであると言う場合があり、その状況はユーザーのクォータを意味します。ユーザーの使用可能なスペースに制限がある可能性があります。それが問題かどうかを確認してください。

0
Isaac