在容量用完后,我刚刚在 Amazon EC2 上扩展了存储空间。但是,即使这样做之后,我仍然收到如下错误消息:
ubuntu@ip-172-31-30-27:~/walt/bin$ LC_ALL=C
sort -k 1,1 -k 3,3n -k 2,2n -k 6,6 \-o ./final_1_mr.mr.sorted_end_first ./final_1_mr.mr
*sort: write failed: /tmp/sort8Aua2D: No space left on device*
我的存储统计:
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 12K 3.9G 1% /dev
tmpfs 799M 340K 799M 1% /run
/dev/xvda1 788G 295G 462G 39% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 3.9G 0 3.9G 0% /run/shm
none 100M 0 100M 0% /run/user
overflow 1.0M 0 1.0M 0% /tmp
我正在做我的硕士项目并坚持这个错误消息。请帮忙!
谢谢
答案1
你的问题是/tmp
只有1Mb,而要排序的文件有4Gb。我不完全知道它是如何sort
工作的,但它肯定正在使用/tmp
(如错误中所述)并且 1Mb 是不够的。
您应该创建另一个分区并将其安装在 中/tmp
,或者如果您无法执行此操作,请在您有足够空间的主文件夹中创建一个 10-20Gb(或更大)的虚拟磁盘fallocate
,dd
并将其安装为/tmp
。fallocate
速度更快,因为它不会像dd
.
因此,您应该执行以下操作在主目录中创建虚拟磁盘并将其挂载为/tmp
:
cd # change to your home directory
fallocate -l 10G mydrive.img # create the virtual drive file
mkfs -t ext3 mydrive.img # format the virtual drive
sudo umount /tmp # unmount the /tmp
sudo mount -t auto -o loop mydrive.img /tmp # mount the virtual drive
也许您也可以只使用根文件夹中的现有文件umount
夹,因为该分区有很多空间。只需确保在允许每个人完全访问之后: /tmp
tmp
/
/
umount
/tmp
sudo umount /tmp
sudo chmod 1777 /tmp
答案2
使用 GNUsort
指定-T dir
(或--temporary-directory=dir
)dir
文件系统上具有足够空间的可写目录,例如/home/$USER/mytemp
您发布的布局。