
допустим, мы определили следующее в/etc/fstab
tmpfs /data tmpfs size=90% 0 0
И тогда мы
mount -a
Сейчас /data
сtmpfs
Что может произойти по следующему сценарию
в случае, если /data
достигнут объем 90%
оперативной памяти ( tmpfs
достиг 90%), означает ли это, что в этом случае 90%
будет использоваться память подкачки?
решение1
Короткий ответ: Если ваша физическая память не может обслуживать процентную часть (90%), в конечном итоге будет использоваться swap. Когда IO больше назначенного процента, возникают ошибки IO.
Длинный ответ: Процент представляет собой часть вашей памяти (физическая память + раздел подкачки или файл подкачки). Предположим, что у вас есть 1 ТБ DIMM (ОЗУ) и вы установили подкачку 100 ГБ, как в рекомендации Redhat, теоретически любой ввод-вывод в /data выше 0,989 ТБ приведет к ошибкам ввода-вывода, как и в любой другой файловой системе. На практике, поскольку память и пространство подкачки используются всеми остальными вещами, остерегайтесь взаимоблокировок, вызванныхOOM не сможет очистить память в случае ее переполнения.
Вот доказательство того, о чем я говорю, выполненное на моем ноутбуке:
Состояние системы перед записью ввода-вывода.
ceto@dell:~$ free total used free shared buff/cache available Mem: 8041716 2110100 3461592 208904 2470024 5464012 Swap: 2097148 0 2097148 ceto@dell:~$ cat /etc/fstab | grep data tmpfs /data tmpfs rw,nodev,nosuid,size=90% 0 0 ceto@dell:~$ mv rh/rhel-8.1-x86_64-dvd.iso /var/lib/libvirt/images/^C ceto@dell:~$ findmnt /data TARGET SOURCE FSTYPE OPTIONS /data tmpfs tmpfs rw,nosuid,nodev,relatime,size=7237548k ceto@dell:~$ df /data Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 7237548 0 7237548 0% /data
Я использовал скрипт ниже для генерации ввода-вывода, который составляет более 90 процентов пути монтирования /data.
ceto@dell:~$ cat deadlock.sh dd if=/dev/urandom of=/data/test.img bs=16M count=454 > deadlock.txt 2>&1 df /data >> deadlock.txt free >> deadlock.txt sleep 1 rm -rf /data/test.img sync /data
Давайте сгенерируем IO и посмотрим, что произойдет.
ceto@dell:~$ sudo sh deadlock.sh
В выходном файле мы видим, что происходят ошибки ввода-вывода и система становится неаккуратной.
ceto@dell:~$ cat deadlock.txt dd: error writing '/data/test.img': No space left on device 442+0 records in 441+0 records out 7411249152 bytes (7.4 GB, 6.9 GiB) copied, 39.6605 s, 187 MB/s Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 7237548 7237548 0 100% /data total used free shared buff/cache available Mem: 8041716 2284836 126108 5358092 5630772 139840 Swap: 2097148 2097084 64