私は大量のデータを格納するサーバーと何百万ものファイルを含む入れ子になったディレクトリを持っています。
大きなディレクトリ(〜700 GB)をあるディスクから別のディスクに移動しようとすると、エラーが発生します。
mv /media/storage3/dir /media/storage4/
"No space left on device"
また、ディスクに小さなtxtファイルを作成しようとしても機能しません。
Error opening file '/media/storage4/Untitled Document': No space left on device
オンラインで多くのオプションを確認しましたが、そのうち何も機能しませんでした。
df -h出力:
Filesystem Size Used Avail Use% Mounted on
/dev/sdg7 77G 9.2G 64G 13% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 32G 4.0K 32G 1% /dev
tmpfs 6.3G 1.4M 6.3G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 76K 32G 1% /run/shm
none 100M 48K 100M 1% /run/user
/dev/sdg6 19G 6.7G 11G 39% /home
/dev/sdb1 440G 278G 140G 67% /var
/dev/sda1 2.8T 2.0T 764G 73% /media/storage1
/dev/sdh1 2.8T 1.6T 1.3T 56% /media/storage2
/dev/sdi1 2.8T 1.7T 1.2T 60% /media/storage3
/dev/sdf1 2.8T 876G 1.9T 32% /media/storage4
df -i 出力:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdg7 5079040 514215 4564825 11% /
none 8242449 2 8242447 1% /sys/fs/cgroup
udev 8239750 611 8239139 1% /dev
tmpfs 8242449 696 8241753 1% /run
none 8242449 5 8242444 1% /run/lock
none 8242449 4 8242445 1% /run/shm
none 8242449 28 8242421 1% /run/user
/dev/sdg6 1220608 218613 1001995 18% /home
/dev/sdb1 29310976 12863877 16447099 44% /var
/dev/sda1 858436804 41630853 816805951 5% /media/storage1
/dev/sdh1 1356948436 38728057 1318220379 3% /media/storage2
/dev/sdi1 1217505624 34748869 1182756755 3% /media/storage3
/dev/sdf1 2048962648 36308921 2012653727 2% /media/storage4
オンラインで読んだ人は、多数のファイルにアクセスし、fs.inotify.max_user_watchesを高い数に設定すると、同様の問題が発生し、問題が解決する可能性があると述べました。 8192から1000000に増えましたが、役に立ちませんでした。
答え1
次のコマンドを実行します。
lsof -s | sort -nrk 7 | head
次の出力が表示されます。
firefox 2997 j 52rr REG 252,0 10485760 5505182 /some/path
firefox 2997 j 50rr REG 252,0 10485760 5505182 /some/path
firefox 2997 j 3rr REG 252,0 10485760 5505182 /some/path
firefox 2997 j 39rr REG 252,0 10485760 5505182 /some/path
firefox 2997 j 31ur REG 252,0 10485760 5505182 /some/path
注:上記は単なる例であるため、スペース使用量を見つけるには自分で判断する必要があります。
出力情報:
- 7列は使用されるスペースの量です。
- 列 4 はファイル記述子です。
ファイル記述子の内容を削除することで、その領域を再取得できます。
cat /dev/null > /proc/2997/fd/50
明らかに、これはそのファイル記述子のすべてのデータを破壊します。
答え2
tarを使用してすべてのデータをコピーして削除できます。
cd /media/storage3/; tar cfp - ./dir | ( cd /media/storage4; tar xfp - )
すべての所有権、権限、リンクが維持されます。
答え3
ファイルを使用してからrsync -avrz storage3 storage4
ファイルを削除しましたが、別の質問がありました。 Linux(Ubuntu)を使用している場合、NTFSファイルシステムを使用してこれらの共有を共有するのはなぜですか?その場合は、ext4またはReiserFS、ButterFSを使用します。これらの共有がWindowsシステム上にある場合は、robocopyを使用してこれらのファイルをWindowsからWindowsに移動してみてください。これは非常に効果的です。 Robocopyはほとんどrsyncと同様に動作します。
rsync のマニュアルページ:http://linux.die.net/man/1/rsync
robocopyのヘルプページ:https://technet.microsoft.com/en-us/library/cc733145.aspx
Linux用3g-ntfsドライバーのサポートページ:www.tuxera.com/community/open-source-ntfs-3g/
3g-ntfs FAQ: www.tuxera.com/community/ntfs-3g-faq/
Ubuntuのインストールで使用されているNTFSファイルシステムドライバに変更する必要があるようです。どのNTFSディストリビューションを使用しているのか、ディスクをどのようにマウントしているのか、ディスクが現在あるUbuntuボックスにローカルに接続されているのか、ディスクがローカルに接続されているのかなどです。 SANでiSCSIを使用してすでにインストールされていますか?
このトラブルシューティングは、単に「NTFS内のファイルを移動できず、ファイルを移動するためにUbuntuを実行しています」以上です。