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)
Ответ на: комментарий от x905

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

вот если использует свою БД, то запись/чтение идёт в эту БД.

Ну а если ты эту БД выкинул в память, то тебе придётся раз создавать БД с нуля.

Т.е. вместо апдейта одного inode тебе придётся править блоки нескольких файлов.

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

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

занято должно быть не более 70%. И это не только моё мнение. В Сети даже рекомендуют отпиливать от SSD неиспользуемый раздел, но я считаю, что это рекомендация только для маздая.

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

Половины будет хватит всем.

жалко половину ssd не использовать, откуда инфа ?

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

занято должно быть не более 70%.

хорошо бы найти графики роста/спада скорости от размера свободного места

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

хорошо бы найти графики роста/спада скорости от размера свободного места

ты их сам можешь построить. Ну например считая, что запись блока в 4К занимает 10мкс (точные цифры см. в спеках), а стирать можно только за 1000мкс, и только островом из 64х блоков.

Т.е, когда у тебя кончаться чистые острова, тебе нужно ВНЕЗАПНО стереть остров. Но:

1. остров стирать в 100 раз дольше, чем писать

2. не каждый остров можно стереть, т.к. если SSD забит сильно, то на острове будут не только ненужные, но и нужные блоки. Потому, тебе перед стиранием придётся переписать некоторые блоки с острова в другое место.

3. п2 следует применять рекурсивно, т.к. тебе нужно куда-то писать, а места у тебя УЖЕ нет.

ЗЫЖ потому так важна сборка мусора им команда TRIM(которая как раз и указывает SSD, что является мусором). Если всегда есть много свободных островов, то все записи распределяются между ними, и потому износ минимален, а скорость максимальна. При этом и то и другое на порядок выше, чем у любого HDD.

Это была хорошая новость. Плохая в том, что идеальные условия бывают не всегда.

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

PS: IRL, если у тебя включен atime, если у тебя ведутся логи на SSD, и если у тебя кеши для /var/tmp/ и прочих таких «аватарок», которые меняются редко, но читать надо постоянно, или придётся качать/считать заново, то у тебя объём (пере)записанных блоков небольшой, и IRL для этого выделяется 3.5 острова, куда всё и пишется весь день. К вечеру выделяется другие 3.5 острова, а старые за ночь очищаются. Таким образом, за сутки ты юзаешь 3.5 острова, а так как их Over9000, то тебе хватит этого на Over7лет(>2571день), если один остров ты можешь стереть всего лишь один раз, а после второго цикла стирания он умирает. Через 7 лет у тебя по любому останется в живых >95% блоков. Математическая статистика тебе в помощь.

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

К вечеру выделяется другие 3.5 острова

это в среднем. IRL вечера бывают разные, и в некоторые вечера нужно больше островов. Статистически ничего не меняется тогда, и только тогда, когда свободные острова есть с вероятностью 95%. Ежели их нет, то их придётся делать, что в нашем случае приведёт к смерти многих блоков(напомню, в моей модели стирать можно всего один раз). Даже при статистически равномерном использовании, таких вечеров будет около 5%(т.е. каждый двадцатый), что приведёт не к долгой жизни в 2571 день с 5% отказов, а к смерти за пару-тройку месяцев(математическое ожидание смерти менее 60и суток, если считать смертью заметно большее 5% число мёртвых блоков).

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