История изменений
Исправление ttnl, (текущая версия) :
Создай ФС на гигабайт, запиши 100 мегабайт данных.
У меня nodatacow маунт опция стоит, она это поведение отменяет. На голой btrfs и вправду такое происходит, но размер используемых данных не растет, и место не заканчивается.
#!/bin/bash
rm file.img
truncate -s 1G file.img
losetup /dev/loop0 file.img || exit 0
mkfs.btrfs /dev/loop0 || exit 0
mkdir mnt || exit 0
mount /dev/loop0 mnt
dd if=/dev/urandom of=mnt/test.file bs=1M count=100 oflag=direct
sync
filefrag -e mnt/test.file
ls -s file.img
for seek in {0..50}; do
dd if=/dev/urandom of=mnt/test.file bs=1M count=50 seek=$seek \
oflag=direct conv=nocreat,notrunc
sync
filefrag -e mnt/test.file
ls -s file.img
df -h mnt
done
dd if=/dev/urandom of=mnt/file2.img bs=1M count=800
sync
umount mnt
losetup -d /dev/loop0
rmdir mnt
Исходная версия ttnl, :
Создай ФС на гигабайт, запиши 100 мегабайт данных.
У меня nodatacow маунт опция стоит, она это поведение отменяет. На голой btrfs и вправду такое происходит, но размер используемых данных не растет, и место не заканчивается.
#!/bin/bash
rm file.img
truncate -s 1G file.img
losetup /dev/loop0 file.img || exit 0
mkfs.btrfs /dev/loop0 || exit 0
mkdir mnt || exit 0
mount /dev/loop0 mnt
dd if=/dev/urandom of=mnt/test.file bs=1M count=100 oflag=direct
sync
filefrag -e mnt/test.file
ls -s file.img
for seek in {0..50}; do
dd if=/dev/urandom of=mnt/test.file bs=1M count=50 seek=$seek \
oflag=direct conv=nocreat,notrunc
sync
filefrag -e mnt/test.file
ls -s file.img
df -h mnt
done
umount mnt
losetup -d /dev/loop0
rmdir mnt