LINUX.ORG.RU

read-only root? Продолжение борьбы с лишней записью на ssd, а также нубовопросы

 read-only root, , ,


1

4

С момента предыдущего обсуждения (Что-то интенсивно пишет в корневой раздел...) наладил profile-sync-daemon, например. Запись в домашний раздел действительно уменьшилась.

Но вот беда: сразу после старта системы нечто успевает записать 60 мб в корень.

yura@mercury ~ $ iostat /dev/sda1
Linux 3.2.54-gentoo (mercury) 	23.01.2014 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           9,76    0,00    3,49    0,44    0,00   86,31

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda1             78,42      1349,17       494,69     165003      60501

Зачем оно это делает? Главное, я не понимаю, что именно туда пишет. Всякие iotop показывают. что в данный момент ничего не пишется.

Возникает логичный вопрос: насколько актуален гайд http://www.gentoo-wiki.info/HOWTO_Read-only_root_filesystem#Unionfs_Method , почему на сайте unionfs нет патча для ядра 3.2.54 (которое я использую), и как запилить в указанное ядро этот самый unionfs.

Кроме того, меня удивляет следующая инфа из выхлопа smartctl:

yura@mercury ~ $ sudo smartctl -a /dev/sda
smartctl 6.1 2013-03-16 r3800 [x86_64-linux-3.2.54-gentoo] (local build)
...
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0003   100   100   070    Pre-fail  Always       -       0
  5 Reallocated_Sector_Ct   0x0003   100   100   000    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0002   100   100   000    Old_age   Always       -       6
 12 Power_Cycle_Count       0x0002   100   100   000    Old_age   Always       -       220
...

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      1536         -
# 2  Extended offline    Completed without error       00%      1536         -

Selective Self-tests/Logging not supported
То есть как только 6 часов использования??? Он же уже кучу времени в ноуте стоит.
И почему после тестов появилась инфа, что он помрет через 1536 часов??

★★

Последнее исправление: yura_ts (всего исправлений: 2)

Зачем оно это делает? Главное, я не понимаю, что именно туда пишет

atime, журнал, кеши kde и прочего уг в /var.

anonymous
()

6 часов - просто smartctl не знает твой девайс и понятия не имеет как интерпретировать данные
у меня вот пишет 29 часов.

megabaks ★★★★
()

странно, думал пост написал сторож.

Deleted
()

таки такие темы полезны не только владельцам ssd, но и пользователям hdd, потому что в таких темах приводятся конкретные имена и способы переноса в раму и/или отключения действительно ненужной записи.
а это всё приводит как к ускорению системы и разгрузке IO, так и к снижению износа ssd и понижению энергопотребления (тоже довольно интересная тема).
узко мыслите, товарищ :3

megabaks ★★★★
()
Ответ на: комментарий от anonymous

atime

опции монтирования noatime,nodiratime включены.

кеши kde

нет такого тяжелого софта на ноуте.

yura_ts ★★
() автор топика
Ответ на: комментарий от megabaks

Что сделал? Включил ноут, увидел, что в корневой раздел (/dev/sda1) записано 60 мб сразу после старта (ещё до запуска иксов).

На диске два раздела, /dev/sda2 — хомяк. Могу показать fstab или ещё что. Но вообще, там ничего интересного, логи в tmpfs, да noatime,nodiratime,discard для всех разделов на ssd.

yura_ts ★★
() автор топика
Последнее исправление: yura_ts (всего исправлений: 1)
Ответ на: комментарий от megabaks

/var/log монтирую в tmpfs
noatime,nodiratime включил
планировщик ввода-вывода — noop
подредактировал /etc/sysctl.conf согласно твоему же гайду :)
Что бы ещё сделать?

yura_ts ★★
() автор топика
Последнее исправление: yura_ts (всего исправлений: 1)
Ответ на: комментарий от megabaks

узко мыслите, товарищ :3

Да не, просто ржу с заголовка, не отрицая любопытства самой темы. :)

pekmop1024 ★★★★★
()
Ответ на: комментарий от yura_ts

/var/log монтирую в tmpfs

глупо - тогда уж проще отключить логи вообще.

noatime,nodiratime включил

хорошо, но второй задаётся первым, потому необязательно указывать.

планировщик ввода-вывода — noop

это не имеет отношения к записи (точнее к лишней)

megabaks ★★★★
()
Ответ на: комментарий от megabaks

глупо - тогда уж проще отключить логи вообще.

Ну так хотя бы до перезагрузки логи есть. Может человек раз в месяц комп выключает. Да и пару метров памяти не жалко.

mamba_namba_karamba
()
Ответ на: комментарий от megabaks

Ну не то чтобы совсем глупо, пусть хоть какие-то логи будут.

А что ещё имеет смысл сделать, чтобы уменьшить запись? Интересует какой-нибудь промежуточный вариант между read-only root и тем, что есть сейчас (ибо первое кажется ну очень труднореализуемым).

yura_ts ★★
() автор топика

Но вот беда: сразу после старта системы нечто успевает записать 60 мб в корень.

Это так страшно?

emissar ★★
()

монтируй корень в ro, по логам смотри что не работает и переноси в tmpfs.

Вам правильно подсказали, установите при загрузке параметры фс ридонли и проверьте /var/log/messages

glibych ★★
()
Ответ на: комментарий от emissar

Мне вот совсем не страшно, если кто-то насрёт у тебя посреди комнаты.

anonymous
()
Ответ на: комментарий от megabaks
yura@mercury ~ $ mount
rootfs on / type rootfs (rw)
/dev/sda1 on / type ext4 (rw,noatime,nodiratime,errors=remount-ro,user_xattr,commit=60,barrier=1,data=ordered,discard)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,size=789188k,mode=755)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=10240k,nr_inodes=986401,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
cgroup_root on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,relatime,size=10240k,mode=755)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
openrc on /sys/fs/cgroup/openrc type cgroup (rw,nosuid,nodev,noexec,relatime,release_agent=/lib64/rc/sh/cgroup-release-agent.sh,name=openrc)
cpuset on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
freezer on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
/dev/sda2 on /home type ext4 (rw,noatime,nodiratime,discard,errors=remount-ro,commit=60)
tmpfs on /portage_tmp type tmpfs (rw,size=6000M,mode=0777)
/dev/sdb1 on /external_storage type ext4 (rw,noexec,nosuid,nodev,user)
tmpfs on /var/log type tmpfs (rw,size=100M,mode=0777)
tmpfs on /tmp type tmpfs (rw,size=300M,mode=1777)
tmpfs on /var/tmp type tmpfs (rw,size=200M,mode=1777)
tmpfs on /home/yura/tmp type tmpfs (rw,size=7000M,mode=0777)
tmpfs on /usr/src/linux-tmpfs type tmpfs (rw,size=7000M,mode=0777)
tmpfs on /home/yura/.cache type tmpfs (rw,size=500M,mode=0777)
tmpfs on /run/lock type tmpfs (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nodev,noexec,nosuid)
yura_ts ★★
() автор топика

Не держу на ssd только файлопомойку, ибо дорого. Остальное на нем родимом. Два года - полет нормальный. Есть еще вариант, когда из ssd делается кэш для hdd.. все читаемые/писаемые данные автоматом пишутся на сий хрупкий девайс. С вашей точки зрения это вандализм?

Решал немного другую задачку, но отловить злодейку использующую диск можно с помощью incrond и lsof. Метод не 100%, но при достаточном количестве замеров все поймаются. Так как нужно запечатлеть злодейство на этапе загрузке - придется извращатся.

naszar
()
Ответ на: комментарий от megabaks

а это всё приводит как к ускорению системы и разгрузке IO, так и к снижению износа ssd и понижению энергопотребления (тоже довольно интересная тема).

IO увеличивается потому, что вместо однократной записи ты вынуждаешь носитель по 10 раз читать одно и то же.

Вот тебе пример, что-бы не быть голословным: Дано: ЛОР с поняшками на аватарах. Аватарки хранятся на диске в кеше размера M. Предположим, надо сохранить какую-то новую аватарку, например один тут постоянно их меняет. Ну вот опять поменял.

У меня: ищется с самым большим atime, и удаляется. Эта аватарка того, кого давно нет на ЛОРе, или старая аватарка, которую заменили.

У тебя: удаляется рандомная аватарка скажем моя, а потом появляется мой пост, и тебе приходится опять скачивать мою аватарку, и сохранять её в кеше, опять удаляя рандомную.

Таким образом noatime увеличивает число записей на диск.

Можно вынести кеш в память. Тогда браузеру каждый раз придётся опять закачивать ВСЕ аватарки в кеш. Т.е. аватарки будут хранится в ДВУХ местах, т.к. браузер не знает, что его кеш — совсем не кеш, а оперативная память. И всё равно кеширует в памяти аватарки.

emulek
()

То есть как только 6 часов использования???

покажи: hdparm -B /dev/sda

x905 ★★★★★
()
Ответ на: комментарий от no-dashi

Ну вообще-то он в чем-то прав - /var/tmp по оригинальному замыслу должна переживать ребут, и некоторый софт на эту особенность полагается. Поэтому, кстати, /var/tmp не рекомендуют на tmpfs перемещать.

ava1ar
()
Ответ на: комментарий от emulek

У тебя: удаляется рандомная аватарка скажем моя

почему рандомная, а не самый старый файл ?

кроме кэша браузера есть, например, исходные коды
при компиляции будет только чтение исходников и объектников при линковке (а без noatime лишняя запись)

x905 ★★★★★
()
Ответ на: комментарий от emulek

Это всё круто, да только кэш браузера на диске отключён в конфиге самого браузера. И вообще речь идёт не о записи на /dev/sda2 (который /home), а о /dev/sda1 (который /). Так что пример с аватарками на форуме несколько не в тему.

yura_ts ★★
() автор топика

1536 часов - это сколько часов прошло от момента первого старта диска и вот этим селф-тестом
помоему, так

ii343hbka ★★★
()
Ответ на: комментарий от megabaks

кэш это вообще глупость - неудобно на форумах.

кэши бывают не только на форумах. Я лишь для примера взял форумные аватарки.

emulek
()
Ответ на: комментарий от no-dashi

ваще-то /var/tmp не должно теряться.

/var/tmp Like /tmp, this directory holds temporary files stored for an unspecified duration.

emulek
()
Ответ на: комментарий от x905

почему рандомная, а не самый старый файл ?

потому что «самый старый» ты отключил noatime'ом. Ведь важно, когда ты эту аватарку видел в последний раз, а не когда я её создал.

кроме кэша браузера есть, например, исходные коды

при компиляции будет только чтение исходников и объектников при линковке (а без noatime лишняя запись) 1. она не лишняя, ибо говорит о том, какие файлы нужны, а какие можно удалить(если ты их всё равно не читаешь)

2. если ты распаковал source/, а потом сразу собрал, то atime просто не успеет изменится на ssd.

3. распаковывай сырцы в память. Я всегда так делаю(если мне нужно просто собрать программу).

emulek
()
Ответ на: комментарий от yura_ts

Это всё круто, да только кэш браузера на диске отключён в конфиге самого браузера.

для тех кто в танке: браузер просто для примера.

emulek
()
Ответ на: комментарий от emulek

А что вообще может записывать данные в кэш, если измерения проведены ещё до запуска иксов, сразу после старта системы?

yura_ts ★★
() автор топика
Ответ на: комментарий от yura_ts

А что вообще может записывать данные в кэш, если измерения проведены ещё до запуска иксов, сразу после старта системы?

это точно кеш?

emulek
()
Ответ на: комментарий от emulek

Да не точно. Я отвечал на ваш комментарий, где речь шла о кэше, пояснил, почему это никакой не кэш браузера, и вообще не кэш.

yura_ts ★★
() автор топика
Последнее исправление: yura_ts (всего исправлений: 1)
Ответ на: комментарий от emulek

потому что «самый старый» ты отключил noatime'ом

возможно и не эффективно искать по файлам, в кэшэ браузеров есть файл-описание каждого файла кэша, поэтому noatime тут вообще не помощник

1. она не лишняя, ибо говорит о том, какие файлы нужны, а какие можно удалить(если ты их всё равно не читаешь)

при сборке файлы читает компилятор, затем линковщик - зачем тут atime ?

2. если ты распаковал source/, а потом сразу собрал, то atime просто не успеет изменится на ssd.

как так? я вижу два доступа к файлу - при создании и при чтении

x905 ★★★★★
()
Ответ на: комментарий от yura_ts

мой коммент касался noatime. У вас проблема в другом, если вы про запись 60мб в корень. Могу посоветовать только поставить всё в readonly, кроме логов. А потом их почитать.

emulek
()
Ответ на: комментарий от x905

возможно и не эффективно искать по файлам, в кэшэ браузеров есть файл-описание каждого файла кэша, поэтому noatime тут вообще не помощник

да, я знаю. Можно и СУБД для этого приспособить.

при сборке файлы читает компилятор, затем линковщик - зачем тут atime ?

вообще-то make решает, какими файлами кормить компилятор. Впрочем, в твоём случае это не важно, ведь ты всё равно все файлы собираешь. Не очень понятно, чем тебе не угодила Over9000я запись после того, как ты Over9000 записал, когда тарболл с сырцами распаковывал на свой ssd...

как так? я вижу два доступа к файлу - при создании и при чтении

это со стороны OS. Со стороны SSD, который ты так бережёшь, это две записи в кеш(который внутри SSD) почти подряд. Естественно в сам SSD пишется только последний вариант. (а точнее, Over9000 записей, т.к. каталог пишется по новой с каждым новым файлом)

Ну и наконец, всё это довольно тупо. Ресурс SSD огромен, т.к. контроллер каждый раз выбирает новый блок для записи, а самих записей сравнительно немного и без твоих потуг. Я даже не представляю, в каком режиме надо задрачивать SSD, что-бы он не дожил до окончания гарантии именно из-за ресурса.

emulek
()
Ответ на: комментарий от emulek

Я даже не представляю, в каком режиме надо задрачивать SSD, что-бы он не дожил до окончания гарантии именно из-за ресурса.

я не согласен с твоим утверждением что «noatime увеличивает число записей на диск», включение noatime чуть уменьшает число записей, чуть экономит ssd - возможно все это мелочи
можно и не ставить noatime и вообще эксплуатировать ssd как обычный диск (при домашней эксплуатации уж точно), тут согласен

очевидно что ssd доживет до конца гарантии по износу, очевидно что его не выкинут после гарантии )
домашний древний ssd, показывает 72% Lifetime, даже интересно что с ним будет (и будет ли вообще)

x905 ★★★★★
()
Ответ на: комментарий от x905

я не согласен с твоим утверждением что «noatime увеличивает число записей на диск», включение noatime чуть уменьшает число записей, чуть экономит ssd

в среднем — да, наверное. В большей части систем будет _небольшое_ уменьшение числа записей на диск. Но цена за это — тормоза и большое IO (да, на чтении, но это тоже тормоза). Намного более лучшие результаты даёт вынос чего-то в оперативную память.

возможно все это мелочи

точно мелочи.

и вообще эксплуатировать ssd как обычный диск (при домашней эксплуатации уж точно), тут согласен

а я такого и не говорил. Использование SSD имеет свои тонкости. Например важно иметь на нём много свободного места, дабы дать контроллеру возможность хорошо рандомизировать запись. Кроме того, сборка мусора становится не эффективной, если места нет. Это ведёт к жутким тормозам и порче ячеек. Т.е. оптимизировать надо, но не в ту сторону.

очевидно что ssd доживет до конца гарантии по износу

а вот и нет. Ssd может навернуться из-за совсем иных причин. У меня вот от перегрева навернулся. Может и сам по себе. И даже из-за ударов, такое бывает. Есть ещё солнечный ветер, может просто у тебя плохая карма, и какой-нить нейтрон разворотит пару островов...

даже интересно что с ним будет (и будет ли вообще)

к Ванге.

emulek
()
Ответ на: комментарий от emulek

Но цена за это — тормоза и большое IO (да, на чтении, но это тоже тормоза).

когда возникает большее IO на чтении ? кэш браузера использует свою БД, потому тут IO на чтение не увеличивается

важно иметь на нём много свободного места

в гигабайтах сколько ?

x905 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.