Điểm:0

rsync : write failed - No space left on device (28) despite using --inplace

lá cờ kr

I am using a script to make a backup of a running Debian Stretch based Linux Distro (NextCloudPi)

The method in the script that does the backup uses rsync.

backup()
{
  mntimg
  sync
  rsync -aDH --partial --numeric-ids --delete --force --exclude "${MNTPATH}" --exclude '/dev' --exclude '/lost+found' --exclude '/media' --exclude '/mnt' \
--exclude '/proc' --exclude '/run' --exclude '/sys' --exclude '/tmp' --exclude '/var/swap' --exclude '/etc/udev/rules.d/70-persistent-net.rules' \
--exclude '/var/lib/asterisk/astdb.sqlite3-journal' "${OPTIONS[@]}" / "${MNTPATH}/"
..
..
}

When I run the script I point it to save the backup .img file to an externally attached USB-HDD drive.

This drive is EXT4 formatted and is mounted.. I can browse it from Manjaro file explorer. This is writable and has 2.3TB free space.

The backup file is going to be about 7.8GB and I have got 22GB free space on the rootfs (/) on the SD Card that I am backing up.

Each time I run the script I get an error rsync: write failed on.. no space left on device:

root@NEXTCLOUDPI:~# image-backup

Image file to create? /media/4TB2/nextcloudpi18Nov2021v3.img

Initial image file ROOT filesystem size (MB) [7526]? 7800

Added space for incremental updates after shrinking (MB) [0]? 

Create /media/4TB2/nextcloudpi18Nov2021v3.img (y/n)? y

Starting full backup (for incremental backups, run: /usr/local/bin/image-backup /media/4TB2/nextcloudpi18Nov2021v3.img)
rsync: write failed on "/tmp/img-backup-mnt/usr/src/linux-headers-4.14.93-Re4son-v7+/include/linux/suspend.h": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(393) [receiver=3.1.2]

Unable to create backup

root@NEXTCLOUDPI:~#

I still get the problem even if I add in the rsync option --inplace so that did not solve my problem.

I did a sudo du -sh /usr/src and the size is 150MB.
I've got 37,000 files and 12,000 sub-folders in /usr/src so I was thinking maybe I am running out of inodes but... I did a df -i and my inode usage is 14% in the root dir (/).

The problem seems to happen close to the end.. in this case a 7.9GiB file is created. I tried flashing that to an sd card with etcher but it didn't boot.

Any ideas what is going wrong here? I have enough space on the rootfs for rsync to save things to /tmp if it needs to. But even when I use the --inplace option it still says: rsync: write failed on "/tmp/... blah blah... No space left on device (28)

lá cờ np
Bạn đã kiểm tra số nút trên hệ thống hoặc hình ảnh trực tiếp chưa? Bởi vì có vẻ như tập lệnh này tạo một hình ảnh mà bạn đã chỉ định là 7800 MB, có thể nó được tạo với tổng số nút ít hơn mức bạn cần vì rootfs trực tiếp của bạn lớn hơn. Hãy thử gắn hình ảnh đã tạo và kiểm tra kích thước và số inode của nó với `mount -o loop ./img.raw /mnt/tmp && df -i /mnt/tmp && df /mnt/tmp`. Nó xuất ra cái gì (vui lòng cập nhật câu trả lời của bạn)? Một điều khác cần thử là tạo một hình ảnh lớn hơn lúc đầu (ít nhất chỉ để kiểm tra) khi tập lệnh của bạn nhắc về nó.
FlexMcMurphy avatar
lá cờ kr
Cảm ơn @NStorm. Kịch bản đang làm việc cho tôi một lần nữa. Tôi đã phải phân bổ cho nó thêm khoảng 4,5 GB dung lượng so với ước tính nó sẽ cần. Tôi đã hỏi người tạo tập lệnh, người này cho rằng có thể có điều gì đó bệnh lý trong hệ thống tệp của hệ điều hành mà tôi đang sao lưu và rằng tôi có thể đang sử dụng một số tệp (hoặc tệp lớn) được phân bổ thưa thớt ở đâu đó. Có lẽ tôi sẽ sớm cài đặt lại máy chủ đó. Hy vọng rằng sẽ khắc phục những gì đang xảy ra!
Điểm:1
lá cờ np

Bây giờ dựa trên nhận xét gần đây của bạn, tôi có thể nói rằng rất có thể nó chỉ chạy các nút của chúng tôi. Khi bạn tạo ext4 fs theo mặc định, mkfs sẽ phân bổ các nút dựa trên kích thước phân vùng/hình ảnh. Vì vậy, kích thước hình ảnh càng ít thì số lượng inode càng ít. Bạn chỉnh sửa tập lệnh này để phân bổ nhiều nút hơn, chỉ cần tìm một dòng có mkfs.ext4 và thay đổi số lượng nút mà nó phân bổ -tôi hoặc -N Tùy chọn.

Tìm dòng này trong sao lưu hình ảnh:

    mkfs.ext4 -q -b 4096 "${LOOP}p2" > /dev/null

và thay đổi nó thành:

    mkfs.ext4 -q -b 4096 -i 4096 "${LOOP}p2" > /dev/null

Điều này sẽ tạo ra nhiều nút gấp 4 lần so với cài đặt mặc định.

Tôi không nghĩ thứ gì đó trong máy chủ của bạn có thể tạo ra hiệu quả như vậy. Mặc dù các tệp thưa thớt cũng có thể là lý do, nhưng bạn có thể giảm thiểu nó bằng -S tùy chọn rsync sẽ xử lý chính xác các tệp thưa thớt. Nhưng nó mâu thuẫn với --tại chỗ Tùy chọn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.