Linux, SSD, BTRFS і Trim


4

Я запускаю систему Linux (на базі Gentoo) з файловою системою BTRFS, встановленою на SSD (Toshiba Q300 з мережею 480 ГБ). Моє /etc/fstabвиглядає так:

UUID=14cb9b65-... swap           swap    defaults,noatime, 0       0                                                                                                                                                                                                                           
UUID=cd7d93b3-... /              btrfs   defaults,cache,compress=lzo,subvol=@ 0       1                                                                                                                                                                                          
UUID=cd7d93b3-... /home          btrfs   defaults,noatime,space_cache,compress=lzo,subvol=@home 0       2                                                                                                                                                                                      
UUID=cd7d93b3-... /Data          btrfs   defaults,noatime,space_cache,compress=lzo,subvol=@Data 0       2                                                                                                                                                                                     
UUID=cd7d93b3-... /mnt/rootfs    btrfs   defaults,noatime,space_cache,compress=lzo 0       0                                                                                                                                                                                                   
tmpfs             /tmp           tmpfs   defaults,noatime,mode=1777 0       0                                                                                                                                                                                                                   tmpfs             /proc          proc    defaults                   0       0                                                                                                                                                                                                              
tmpfs             /var/log       tmpfs   defaults,noatime,rw,mode=1777 0    0
tmpfs             /var/tmp       tmpfs   defaults,noatime,rw,mode=1777 0    0                                                                                                                                                                                                              
tmpfs             /var/run        tmpfs   defaults,noatime             0    0 
tmpfs             /var/spool      tmpfs   defaults,noatime             0    0 
tmpfs             /var/lock       tmpfs   defaults,noatime             0    0 
tmpfs             /var/cache      tmpfs   defaults,noatime             0    0
tmpfs             /run            tmpfs   defaults,noatime             0    0
sysfs             /sys            sysfs   defaults                     0    0
tmpfs             /dev/shm        tmpfs   defaults                     0    0
devpts            /dev/pts        devpts  gid=5,mode=620               0    0
devtmpfs          /dev            devtmpfs gid=5,mode=620              0    0

Раніше у мене був Intel SSD з мережею 240 ГБ з файловою системою XFS. Коли я виконував fstrim -v /для цієї системи XFS, що робив щодня, я швидше отримував повідомлення типу:

8 гігабайт оброблені.

Тепер, на найвищому рівні 480GByte Toshiba SSD, у мене є кілька підпунктів типу:

# btrfs subvolume list /mnt/rootfs
ID 264 gen 273 top level 5 path @_original_install
ID 265 gen 152 top level 5 path @home_install_ok
ID 266 gen 270 top level 5 path @_snapshot_install_ok             
ID 267 gen 28504 top level 5 path @       
ID 275 gen 28504 top level 5 path @home
ID 276 gen 26900 top level 5 path @Data
ID 607 gen 245 top level 5 path @_snapshot_home_20160330
ID 628 gen 3837 top level 5 path @_root_snapshot_20160402

і коли я запускаю fstrimкоманду, я отримую такий результат:

*****************************************
# fstrim -v /mnt/rootfs/@
  177,3 GiB (190331097088 Bytes) getrimmt
*****************************************

Чому об'єм обробленого простору 177 Гб, а не 8 або 10, як на моєму старому XFS, форматованому 240 ГБ SSD?

Після обрізки мого 480 Гб Toshiba SSD знову після першої обшивки, результат майже той самий, 172 ГіБ були оброблені зараз. Отже: fstrimне працює для BTRFS?

І чи знаєте ви (дуже) хороший підручник / веб-сайт чи подібне, що пояснює BTRFS, у тому числі, як працює підпункт, що стосується даних Meta?

Чим більше інформації про останні btrfs-progs (я використовую версію 4.4.1), тим краще. Якби німецькою мовою, це теж було б чудово ...

І чи шкідливо це для SSD при обрізці чи часто підстриганні?


Я розглядаю можливість придбання Toshiba Q300, але Amazon дав їй дуже погані відгуки, заявивши, що вона працює через кілька місяців. Скільки часу ти мав своє?
Геремія

Відповіді:


2

З питань поширених запитань на Wiki

Чи оптимізовано Btrfs для SSD?

Існують деякі оптимізації для накопичувачів SSD, і ви можете ввімкнути їх, встановивши за допомогою -o ssd. З 2.6.31-rc1 ця опція монтажу буде включена, якщо Btrfs зможе виявити сховище, що не обертається. SSD стане великою частиною майбутнього сховища, і розробники Btrfs планують серйозно налаштувати його. Зауважте, що -o ssd не дозволить TRIM / відкинути .

Я бачу, ти не збираєшся -o ssd. Можливо, ваш btrfs-progsне виявляє це як SSD. (Він перевіряє, чи /sys/block/sdX/queue/rotationalдорівнює 0.)

" -o ssdне дозволить TRIM / відкинути", ймовірно, через надмірне перезаписування швидше зношуються накопичувачі SSD.

На сторінці fstrimнаписано:

Запуск fstrimчасто або навіть використання mount -o discard[що постійно вмикає TRIM], може негативно вплинути на термін експлуатації неякісних SSD-пристроїв. Для більшості настільних та серверних систем достатня частота обрізки - один раз на тиждень. Зауважте, що не всі пристрої підтримують обробку черги, тому кожна команда обрізки несе штрафну ефективність за все, що може намагатися використовувати диск у той час.

Крім того, корова BTRFS (копіювання під час запису) є вигідною для SSD, мінімізуючи непотрібні перезаписи, тому TRIM насправді не є таким необхідним для BTRFS. У файлових системах, що не мають CoW, на SSD-дисках потрібен TRIM.

Чому об'єм обробленого простору 177 Гб, а не 8 або 10, як на моєму старому XFS, форматованому 240 ГБ SSD?

Можливо, це пов’язано з ssd_spreadтим, що ви не ввімкнено, звідки у вас буде більше, менш фрагментований вільний простір:

ssd_spread Mount -o ssd_spread є більш суворим щодо пошуку великої невикористаної області диска для нових виділень, яка, як правило, більше часу фрагментує вільний простір. Це часто швидше на менш дорогих пристроях SSD.

Оскільки ваш Toshiba Q300 є SSD нижнього класу, вам слід увімкнути ssd_spreadопцію кріплення.

Fstrim не працює для BTRFS?

Це робить. На сторінці параметрів кріплення BTRFS написано: "Ви можете fstrimперіодично запускати команди".

І чи знаєте ви (дуже) хороший підручник / веб-сайт чи подібне, що пояснює BTRFS, у тому числі, як працює підпункт, що стосується даних Meta?

Це найкращий ресурс BTRFS: https://btrfs.wiki.kernel.org/

Сторінка btrfs-subvolum хороша. Так є розділ «Підтомники» в путівнику по Сисадміні . btrfsQuota.pyце акуратний сценарій для розуміння розмірів знімків / підпунктів та метаданих.

Чим більше інформації про останні btrfs-progs (я використовую версію 4.4.1), тим краще.

Остання - версія 4.5.3 .

Якби німецькою мовою, це теж було б чудово ...

Я настійно рекомендую btrbkсценарій Perl для використання BTRFS для автоматичного резервного копіювання та знімків. Це дійсно демонструє силу BTRFS. Автор, Аксель Буррі , родом із Цюріха, Швейцарія, і, виходячи з його німецького прізвища, він, ймовірно, знає німецьку мову; можливо, він міг би вказати вам на деякі німецькі ресурси BTRFS.

Крім того, роблячи пошук у WorldCat, ця книга згадує BTRFS, але вона дещо застаріла (2011 р.):


btrbkдоступний в Alpine Linux, тому його можна легко запустити в lxcабо dockerконтейнер, якщо він не доступний у вашому дистрибутиві Linux: pkgs.alpinelinux.org/…
Stuart Cardall

@Stuart Там також сценарій SlackBuilds для побудови пакету Slackware його. btrbk
Геремія

0

Використовуйте udev, щоб встановити свій ssd на не обертовий привід.

Відредагуйте / додайте в /etc/udev/rules.d/ файл з назвою 10-ssd.rules (або будь-який інший) та вставте рядок, подібний до

ACTION == "додати | змінити", KERNEL == "sd [az]", ATTR {черга / обертальний} == "0", ATTR {черга / планувальник} = "mq-крайній термін" (це встановлює ioscheduler для мого ssd до mq-крайнього терміну, ваші будуть виглядати приблизно так

ACTION == "додати | змінити", KERNEL == "sda", ATTR {queue / rotational} == "0" (де sda - ваш ssd, idk, якщо ви можете використовувати UIDS, перевірте в інструкції правильність налаштувань, ви можна додати ATTR {queue / rasporedler} = "mq-крайний термін" також, якщо ваше ядро ​​підтримує його, оскільки це швидше для ssds і mq, і тепер звичайні ioschedulers можна вибрати на кожному пристрої)

Я б використовував щось на кшталт rw, lazytime, compress = zstd, ssd, space_cache = v2 у fstab, очевидно, коригуючи для вашого конфігурації підпункту.

Якщо все спрацювало після перезавантаження, слід сказати 0 для cat / sys / block / sda / queue / rotational та mq-крайний термін для cat / sys / block / sda / queue / planer.

Після цього fstrim -va повинен працювати на диску. Ви не повинні видавати відмови постійно, тому краще додавати системний таймер, який запускає fstrim так часто.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.