Современные ноутбуки, даже многие бюджетные модели поставляются либо с встроенным “маленьким SSD” помимо основного HDD, либо со слотом для установки оного.
Во многих случаях производитель создает RAID где-то глубоко в биосе, который объединяет между собой быстрый твердотельный диск и обычный HDD. Но вот например на моём ноутбуке система просто видела два диска, так что “возможны варианты”.
В принципе, идея не нова и “на поток” эту технологию поставила Apple с их Fusion Drive, который был успешно повторен энтузиастами. Правда, особого развития, на мой взгляд, технология не получила, да и “новые инновационные ноутбуки” с двумя дисками частенько оказываются в сервисе с диагнозом “поломка жесткого диска”, но мы-то знаем, что этот самый супер-raid тупо развалился из-за кончины SSD.
Особо упоротые, правда пытаются такое чинить…
Но это их личное горе.
Короче, к чему это всё. К тому, что данную инновацию в Линуксе можно и нужно заставить работать на себя, а именно - установить этот гребаный пингвинарий на LVM-диск и прикрутить к нему кэш!
Если у кого-то в системе 2 диска, можно сразу читать, как это работает. Для остальных - решительно лезьте в биос и отключайте этот проклятый RAID. Как - не имею понятия, это зависит от биоса вашего ноутбука, прямоты рук и фазы луны. Будем надеяться, что у вас всё получится.
Предположим, система у нас уже благополучно установлена на LVM-диск, команда mount выдает следующее:
/dev/mapper/vg0-root on / type btrfs (rw,noatime,compress=lzo,ssd,discard,space_cache,autodefrag,inode_cache,subvolid=5,subvol=/)
Том, который используется у меня для файловой системы именуется “root” и расположен в группе томов “vg0”. В принципе, почти все современные дистрибутивы в “инсталляторе” умеют делать такое (устанавливать систему на LVM), а некоторые делают это вообще по дефолту.
Сам SSD видится в моей системе вторым диском (/dev/sdb).
Disk /dev/sdb: 29.8 GiB, 32017047552 bytes, 62533296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5EFAE4B4-A884-40B6-8723-5DECC274F9A3
Device Start End Sectors Size Type /dev/sdb1 2048 62533262 62531215 29.8G Linux LVM
Потребуется единственная партиция, размером на весь диск. Её нужно пометить типом “Linux LVM”.
Дальше 5 команд с комментариями, которые и создадут нам кэш.
vgextend vg0 /dev/sdb1
- расширяем основную группу томовlvcreate -L 32M -n lv_cache_meta vg0 /dev/sdb1
- создаем том в 1000 раз меньше, чем наш кэш. Это метаданные, ну и называем его соответственно.lvcreate -L 29G -n lv_cache vg0 /dev/sdb1
- создаем непосредственно том с кэшем.lvconvert --type cache-pool --poolmetadata vg0/lv_cache_meta vg0/lv_cache
- связываем наши метаданные с кэшемlvconvert --type cache --cachepool vg0/lv_cache vg0/root
- включаем кэш для для тома “root”
Если всё хорошо, видим сообщение:
Logical volume vg0/root is now cached.
Теперь ваша файловая система кэшируется. Но это ещё не всё. Как и любой кусок opensource-говна, его ещё нужно допилить.
Я пользуюсь Arch и обязательно нужно добавить несколько модулей в mkinitcpio.conf для создания начального рамдиска - то есть рассказать системе, что у нас есть кэш на момент загрузки.
MODULES="i915 btrfs vfat crc32c dm_cache dm_cache_mq dm_cache_smq"
В раздел HOOKS нужно добавить lvm2, хотя скорее всего он там уже будет. Ну и конечно образ нужно пересоздать:
# mkinitcpio -p linux
Возможно, в других дистрибутивах нужно будет похимичить с grub.
Следующий шаг - добавим “issue_discards = 1” в секцию “devices” файла /etc/lvm/lvm.conf, чтобы включить trim на lvm.
В принципе, всё должно работать. Если вдруг упомянутый кусок opensource-говна решил пойти вразнос, то лучше этот самый кэш отключить. Это, кстати нужно, если вы пытаетесь подмонтировать ваш диск с rootfs в каком-нибудь live-дистрибутиве.
Короче, отключить всю эту содомию с кэшем тоже просто:
lvremove vg0/lv_cache lvremove vg0/lv_cache_meta vgreduce vg0 /dev/sdb1
Если делаете это при загрузке с live-usb/cd/dvd - будьте внимательны и смотрите, какие буквы диска используются, а то удалите корневой том по ошибке.
Вот такой вот могучий костыль. Есть другие варианты кэширования, но, похоже, lvm-кэш самый распространенный и поддерживаемый. И да, реальный прирост скорости чувствуется, особенно при загрузке. К сожалению, аналогов под Windows 10 я лично особо и не знаю.
P.S. с этого Arch’a нужно слезать и как можно быстрее.