Які пристрої працюють із f2fs. Переїзд з HDD на SSD та F2FS. Бережне ставлення до накопичувача

Головна / 2 Cool Reader

На 250Gb і став думати, як мені систему на нього перенести.

Насамперед спантеличив вибором файлової системи найбільш підходящою під SSD. Після нетривалого ковтання вирішив ставити на відносно свіжу ФС розроблену самсунгом спеціально під флешові F2FS (Flash Friendly File System) носії.

F2FS є досить молодою ФС, проте підтримується ядром лінукса починаючи з версії 3.8

Завдання вимальовувалося таке:

  1. Навчити систему розуміти F2FS
  2. Розмітити та відформатувати SSD у F2FS
  3. Копіювати дані
  4. Налаштувати fstab та grub

Включаємо підтримку F2FS у Kubuntu

У kubuntu 14.04 та 14.10 модуль підтримки f2fs присутній, але не включений. Тож для включення підтримки достатньо набрати:

sudo modprobe f2fs

Перевіряємо, що модуль підключено

sudo lsmod | grep f2fs

Тепер система може працювати з F2FS, але тільки до перезавантаження. Щоб модуль підвантажувався автоматично при кожному завантаженні, додаємо в кінець файлу /etc/modules запис f2fs

sudo -i
echo f2fs >> /etc/modules

Також вчимо initramfs підтримувати f2fs. Для цього додаємо f2fs в кінець файлу та оновлюємо.

У kubuntu 16.10 ядром 4.8 також треба додатково додати модуль crc32інакше система не завантажиться.

sudo -i
echo f2fs >> /etc/initramfs-tools/modules
echo crc32 >> /etc/initramfs-tools/modules
update-initramfs -u

Для створення f2fs встановлюємо пакети f2fs-tools та gparted

sudo apt-get install f2fs-tools gparted

Диспетчер розділів КДЕ не вміє створювати f2fs, а ось gparted може.

Для підтримки о 14.04 також необхідно оновити пакет util-linux до версії 2.25 або вище.

sudo add-apt-repository ppa:xeron-oskom/util-linux && sudo apt-get update && sudo apt-get dist-upgrade -f

Підключаємо SSD, створюємо розділи та форматуємо у F2FS

Оскільки в моєму розпорядженні був лише ноутбук без стаціонарного комп'ютера SSD, я підключив як зовнішній диск, через USB. Для цього я взяв старий зовнішній HDD, розібрав і поклав замість звичайного зовнішнього дискасвій SSD і підключив всю цю справу до usb.
Напрочуд ні система ні диспетчер розділів диска не побачили. Але після завантаження з інсталяційної флешки з kubuntu 14.04 диск побачився і я благополучно створив порожній розділ, після чого диск став видно і в основній системі, в якій я зробив розбивку та форматування.

Розбивку робив у gparted, оскільки диспетчер розділів КДЕ f2fs поки що не розуміє.

Особисто я помітив так:
/Boot ext2 768Mb
/Root f2fs 20Gb
/Home f2fs 210Gb

Своп буде у файлі під керуванням.

Копіюємо дані з HDD на SSD

Переносимо дані з /home

На SSD у розділі /home створюємо папку з вашим ім'ям користувача, призначаєте себе її власником

sudo mkdir $USER && chown "$USER":"$USER" $USER

і копіюємо все, що нам необхідно не забуваючи скопіювати основні конфігураційні файлита папки, такі як:
.kde
.local
.config
.mozilla

Для перенесення даних із домашньої директорії можна скористатися простим копіюванням зі збереженням атрибутів та прав на файли. Я робив вибіркове копіювання з домашньої папки, так як мій HDD був рівно вдвічі більше нового SSD, і все просто не помістилося б, та й "сміття" там накопичилося пристойно.

Я копіював так:

sudo cp -ar /home/dm/.kde/* /media/f2fs/home/dm

Копіювання /root та /boot

Для копіювання даних з /root вантажимося з liveusb kubuntu, включаємо підтримку f2fs монтуємо необхідні розділи і копіюємо дані з розділів.

Включаємо підтримку f2fs
sudo modprobe f2fs

Створюємо папку в яку монтуватимемо
sudo mkdir /media/f2fs_root

Дивимося, які диски нам доступні
sudo fdisk -l

Монтуємо розділ f2fs root. Замість sdx підлаштуйте свій розділ.
sudo mount /dev/sdx /media/f2fs_root

Копіюємо /root з HDD на SSD
sudo cp -ar /media/kubuntu/root/* /media/f2fs_root

Те саме робимо з розділом /boot

Налаштовуємо fstab та grub

Перезавантажуємось у свою систему.

Налаштовуємо fstab

Дізнаємося UUID розділів на SSD
sudo blkid

І керуємо fstab на SSD

sudo nano /media/f2fs/root/etc/fstab

У мене він тепер виглядає якось так:

UUID=хххххххх-хххх-хххх-хххх-хххххххххххх / f2fs rw,noatime,discard 0 2
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх /home f2fs rw,noatime,discard 0 2
UUID=хххххххх-хххх-хххх-хххх-хххххххххххх /boot ext2 auto,noatime 1 2

Робимо chroot SSD для налаштування grub

sudo mount /dev/sdx /media/f2fs/root/boot
sudo mount /dev/sdx /media/f2fs/root/boot/efi
sudo mount --bind /dev /media/f2fs/root/dev
sudo mount --bind /proc /media/f2fs/root/proc
sudo mount --bind /sys /media/f2fs/root/sys
sudo chroot /media/f2fs/root

Потім встановлюємо завантажувач

sudo grub-install /dev/sdx
sudo update-grub

Де sdX- ім'я SSD пристрою (наприклад /dev/sdb)

Не виходячи з chroot правимо grub.cfg на SSD
Відкриваємо /boot/grub/grub.cfg

sudo nano /boot/grub/grub.cfg

І шукаємо записи типу:
linux /vmlinuz-3.16.0-25-generic root=/dev/sdb2

у яких змінюємо / dev/sdb2на /dev/sda2

Все, відключаємо HDD та підключаємо SSD.

Використовувані матеріали:

Серед моддерів і ентузіастів Android, як і в будь-якій секті, є кілька святинь, які прийнято почитати незважаючи ні на що. Це оптимізовані кастомні ядра, скрипти та програми для оптимізації системи, «покращувачі» звуку та багато іншого. Останнім часом до них додалася файлова система F2FS, яка, згідно з багатьма свідченнями, суттєво піднімає продуктивність роботи з NADN-пам'яттю та зберігає її від зношування. Але чи це так насправді?

початок

Вперше F2FS (Flash Friendly File System) постала людському погляду у жовтні 2012 року, коли компанія Samsung опублікувала патчі з її реалізацією для ядра Linux. За словами розробників, ФС була з нуля спроектована спеціально для flash-пам'яті та дозволяла підвищити продуктивність читання/запису таких накопичувачів та використовувати їх особливості для деяких оптимізації та захисту від зносу.

Вже до кінця року F2FS стала офіційною частиною Linux 3.8, а ще через деякий час її підтримка з'явилася в CyanogenMod 10.2 та кастомному рекавері TWRP. З того часу моддери та оптимізатори включають її у всі свої каcтомні ядра, пишуть масу хвалебних відгуків, публікують скріншоти з доказом феноменальної продуктивності файлової системи.

З боку все це виглядає більш ніж обнадійливо, тому новачки в Android дружно вступають у ряди тих, хто доторкнувся до прекрасного і отримав це чудове у своєму смартфоні. Ось тільки мало хто замислюється про те, чому чудо Samsung, що народила на світ, сама не використовує F2FS навіть у своїх останніх флагманах.

А причина проста: F2FS практично нічим не кращий за файлову систему ext4, яка використовується в Android за умовчанням. Щоб не бути голослівним, розберу два основні міфи, що стосуються F2FS: продуктивність та дбайливе ставлення до flash-накопичувачів.

Продуктивність

У мережі можна знайти безліч прикладів порівняння продуктивності ext4 і F2FS. Вони дуже схожі і часто показують величезний виграш останньої у швидкості запису даних. Ось, наприклад, результати порівняння AndroBench для смартфона Sony Experia Z1:

Виглядає дивно, чи не так? Швидкість випадкового запису зросла в 150 разів у порівнянні з ext4 та в шість разів у порівнянні зі швидкістю читання. Вперше таку аномалію помітили журналісти Phoronix, коли проводили тестування F2FS на початку 2013 року:


Тоді вони резонно припустили, що насправді F2FS пише дані на диск не відразу, а натомість кешує їх для наступного запису. Якщо подивитися на архітектуру F2FS , стає очевидним, що це дійсно так. F2FS працює з блоками даних розміром 4 Кбайт, поєднуючи їх у сегменти розміром 2 Мбайт, а ті, у свою чергу, об'єднуються в секції, яких може бути до шести штук.

Навіщо потрібна така система, ми поговоримо пізніше, а поки що зупинимося тільки на тому, що перед записом в пам'ять секції повинні бути заповнені блоками. Іншими словами, F2FS збирає 4-кілобайтні блоки даних, що записуються, в шматки більшого розміру, а потім скидає їх на диск одночасно. Це і є причина аномально високої продуктивності F2FS у швидкості запису випадкового 4-кілобайтного блоку та цілком порівнянної з ext4 продуктивності послідовного запису безлічі блоків.

Останні тести Phoronix підтверджують практично рівну продуктивність обох файлових систем. F2FS помітно вирвалася вперед лише у тесті на одночасну роботу з тисячами файлів, що з її внутрішніми оптимізаціями. Однак жоден смартфон не працює одночасно з такою кількістю файлів. Така ситуація рідкість навіть на робочому столі і специфічна для серверів.

Бережне ставлення до накопичувача

Друга помилка щодо F2FS пов'язана з більш дбайливим ставленням до flash-пам'яті. Всі ми знаємо, що flash-пам'ять - штука тендітна і витримує всього кілька тисяч циклів запису/прання даних. Тому розміщувати дані на flash-накопичувачі рекомендується у форматі лога, коли нові блоки не перезаписують старі, а натомість пишуться в незайняту область, після чого старий блок позначається як невикористовуваний і згодом очищається, звільняючи простір.

Саме так працює F2FS, і саме тому багато людей вважають її найкращим виборомдля flash-пам'яті в порівнянні з ext4, що працює за класичною схемою, яка передбачає зміну даних на місці. Але є один нюанс. Справа в тому, що абсолютно будь-яка сучасна флеш-пам'ять, починаючи від USB-флешок і закінчуючи серверними SSD, містить у собі контролер FTL (Flash Translation Layer), який відповідає за те, щоб уявити зовсім несхожу на магнітні дискифлеш-пам'ять як звичайний диск, на який можна записати певну кількість блоків даних.

Крім таких речей, як об'єднання декількох чіпів flash-пам'яті в один «диск» і виконання операції TRIM, яка очищає блоки, що вже не використовуються, FTL також відповідальний за вибір фізичного розміщення записуваного блоку в пам'яті. І тут він використовує (сюрприз!) log-структуровану міні-ФС. Іншими словами, будь-яка сучасна флеш-пам'ять сама займається збільшенням свого терміну служби незалежно від того, яку файлову системути на ній створиш: F2FS, ext4, FAT32 або будь-яку іншу, результат буде один.

Насправді причина, через яку F2FS називається «дружньою до флеш-пам'яті» (Flash Friendly), зовсім не в дбайливому ставленні до пам'яті, а в тому, що вона вміє враховувати деякі її особливості, щоб зробити роботу з пам'яттю ефективнішою. Один із прикладів підвищення ефективності - це той самий механізм об'єднання даних у секції.

Справа в тому, що багато мікросхем флеш-пам'яті включають не один, а кілька незалежних накопичувачів. І запис у кожен із них може відбуватися одночасно. Об'єднуючи дані в секції, F2FS може відправити їх на запис одночасно, що теоретично призведе до збільшення продуктивності запису в число разів, кратне кількості накопичувачів.

Але тут не все так просто. Усі оптимізації F2FS вимагають індивідуального налаштуванняфайлової системи для кожної моделі flash-пам'яті Файлова система буде настільки ефективною, наскільки її точно налаштували. І робити це має не користувач кастомної прошивки, а сам виробник пам'яті, тому що тільки він може знати всі нюанси її пристрою.

Разом

F2FS - чудова файлова система. Про це говорить хоча б той факт, що, тільки з'явившись на світ, вона вже здатна успішно конкурувати з роками, що вилизуються, і сотнями людей ext4. Однак не варто чекати від неї чудес та бігти форматувати свій пристрій. Так, багато людей заявляють про помітне навіть без тестів збільшення продуктивності, але знову ж таки, швидше за все, ці ефекти викликані тим самим механізмом відкладеного запису і насправді ніякого суттєвого приросту швидкості немає.

Продуктивність роботи файлової системи - дуже важлива річ, у цій статті ми з'ясуємо, яка файлова система працює швидше на даний момент, а також як залежить продуктивність від версії ядра Linux. Ми порівнюватимемо продуктивність Ext4 vs F2FS vs Btrfs на SSD і будемо використовувати ядра 4.4, 4.5, 4.6 та 4.7.

Усі три файлові системи були протестовані кожної з останніх стабільних версій ядра. Усі тести проводились на Samsung 950 PRO M.2 NVM Express SSD.

Як операційна система для тестування використовувалася нічне складання Ubuntu 16.10, а також, ядра взяті з Ubuntu Mainline Kernel PPA. Тести проводилися повністю автоматизованим та відтворюваним способом за допомогою програмного забезпечення Phoronix Test Suite. Для тестування кожної з файлових систем розділ був повністю відформатований. Також форматування виконувалося кожної версії ядра. Для встановлення кожної з файлових систем використовувалися параметри встановлення за замовчуванням.

Першим тестом було тестування продуктивності бази даних SQLite. Швидкість копіювання при записі в Btrfs трохи нижче ніж Ext4 і F2FS. Ext4 у цьому тесті показала найкращий результат. Продуктивність Btrfs дійсно помітно покращилася в ядрах Linux 4.5 та Linux 4.6, а для інших файлових систем вона залишилася на тому ж рівні.

У тесті випадкового читання FIO всі три файлові системи показали регрес, починаючи з версії ядра Linux 4.4.

Результати послідовного читання мають зовсім інший результат, порівняно з уповільненням швидкості читання на новіших ядрах.

Тест випадкового запису не такий цікавий.

У тесті FS-Mark F2FS вийшла перше місце. Тестувалась робота з 1000 файлів розміром по 1 Мб. Продуктивність Ext4 та Btrfs приблизно на однаковому рівні.

Flash-Friendly File-System продовжує давати чудові результати. На цей раз 4000 файлів, 32 підкаталоги, розмір 1 Мегабайт.

У багатопотоковому тесті FS-Mark не виявив великої різниці у продуктивності файлових систем Ext4 vs F2FS vs Btrfs.

F2FS знову займає перше місце за швидкістю читання в тесті BlogBench. На другому місці - Btrfs.

Найкраща швидкість запису по BlogBench у ext4.

F2FS повертається на вершину у тесті Dbench.

EXT4 і F2FS показали себе краще за Btrfs у тесті продуктивності PostgreSQL.

Висновки

Це результати тестування Ext4 vs F2FS vs Btrfs, які ми сьогодні розглянемо. Як бачите, F2FS – досить перспективна файлова система, але Ext4 та Btrfs тримаються непогано. Щодо ядер, то тут продуктивність загалом збільшується, але це збільшення не дуже велике.

Олексій Федорчук
Ubuntu’ви пристрасті, 12.06.2013

Файлова система f2fs (Flash-Friendly File System - "Дружня до Флешків Файлова система") розроблена спеціально для розміщення на SSD і тому подібних твердотільних носіях інформації. Вона штатно підтримується ядром Linux, починаючи з версії 3.8.0 – тієї самої, що входить до складу Ubuntu 13.04.

У принциповій підтримці f2fs легко переконатись командою

$ ls /lib/modules/3.8.0-23-generic/kernel/fs/f2fs

у виведенні якої ми побачимо модуль

Проте за умовчанням він не задіяний. Тому можна спробувати завантажити його звичайним чином:

$ sudo modprobe f2fs

Спроба буде успішною, про що нам повідомить команда

$lsmod | grep f2fs f2fs 109231 0

Цікаво, що при цьому висновок команди

Dmesg | grep -i f2fs

буде як і раніше порожній. І після перезавантаження ніякого натяку цей модуль не виявиться. Тому потрібно забезпечити його завантаження на старті системи вручну. Для цього достатньо до файлу /etc/modules додати рядок

Що можна зробити від імені суперкористувача або в текстовому редакторі, або послідовністю команд типу

$ sudo -i $ echo f2fs >> /etc/modules $ exit

Як легко здогадатися, цим досягається обов'язковість завантаження відповідного модуля на стадії ініціалізації системи.

Однак від самої підтримки будь-якої файлової системи мало радості, якщо немає відповідних інструментів для роботи з нею. А для роботи з f2fs їх у нас в Ubuntu поки що немає.

Втім, і отримання цього інструментарію – праця не велика. І полягає він у перевірці доступності репозиторію universe з наступною командою

Sudo apt-get install f2fs-tools

Втім, весь інструментарій для роботи з f2fs в даний час зводиться до єдиної команди - /sbin/mkfs.f2fs та супутньої документації - man(8) mkfs.f2fs.

Створення f2fs на розділі або raw-пристрої виконується звичайним чином:

Mkfs.f2fs /dev/sdf1

у відповідь на що буде такий висновок:

F2FS-tools: Ver: 1.1.0 (29-Nov-2012) Info: sector size = 512 Info: total sectors = 30308319 (in 512bytes) Info: zone aligned segment0 blkaddr: 256 : format successful

Наведений приклад відноситься до флешки, чому і ми і бачимо повідомлення про відсутність підтримки TRIM - на будь-якому сучасному SSD його, ясна річ, не буде.

Команда mkfs.f2fs має декілька опцій. Одна з них -l визначає мітку для відповідного розділу або пристрою, що дуже доцільно при використанні f2fs на змінних носіях типу флешок. Інші визначають політику розподілу блоків (-a), розмір області забезпечення (-o), число сегментів на секцію (-s) і секцій на зону (-z). Проте ефект, який вони надають, ніде не документований, а можливостей для експериментів у мене не було. Так що залишається покластися на замовчування, які, окрім як у тітки Мані, можна подивитися також, давши команду mkfs.f2fs без аргументу:

A heap-based allocation -o overprovision ratio -s # of segments per section -z # of sections per zone

Після створення файлової системи f2fs виникає природне бажання випробувати їх у справі. Для чого бажано її примонтувати будь-куди. Автоматично системою вона не пізнається, незважаючи на забезпечення завантаження потрібного модуля. Тобто, на відміну від інших файлових систем на зовнішніх носіях, за умовчанням її не видно файлових менеджерахтипу Nautilus чи Thunar.

Однак це не означає, що розділи або пристрої з f2fs обов'язково монтувати руками і тим більше від root'а. Достатньо створити в домашньому каталозі користувача точку монтування (наприклад $HOME/test) і вписати в /etc/fstab рядок

/dev/sdb1 $HOME/test f2fs user,noauto 0 0

Зрозуміло, не забувши підставити значення змінної $HOME і вказати ім'я пристрою. Після чого пристрій з f2fs з'являється серед точок входу Nautilus або Thunar при його під'єднанні (у вигляді мітки - якщо така була задана). Це відноситься до змінним носіям- наприклад, флешкам або карткам SD. Пристрої внутрішні ( накопичувачі SSD) доцільно монтувати звичайним чином "на постійній основі".

На жаль, розмістити на f2fs корінь файлової ієрархії в теперішній моментне можна. В інсталяторі Ubuntu такої можливості не передбачено. А «обхідні шляхи», подібні до тих, що застосовуються при установці з коренем на ZFS, упираються в те, що grub-probe не впізнає f2fs, і ніяких «коригувальників», подібних до GRUB for Native ZFS, поки (?) не існує.

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

F2FS (англ. Flash-Friendly File System) - це представлена ​​в 2013 файлова система, оптимізована для використання на флешносіях, у тому числі і SSD, картах пам'яті та вбудованих в різні пристроїчіп пам'яті. Загалом це файлова система, яка спочатку враховує постійний час доступу та обмежену кількість циклів перезапису осередків пам'яті, тому її використання бажано.

Підготовка пристрою до встановлення файлової системи

Підтримка файлової системи включена в ядро ​​Linux, починаючи з версії 3.8. У сирому вигляді CyanogenMOD не дозволяє використовувати цю файлову систему, тому його потрібно допилювати. Але, на щастя, товариш dimfish вже все для нас зробив, і тепер нам залишилося лише правильно встановити операційну систему. Відразу попереджаю, що всі дані з телефону зітруться, тому про всілякі бекапи краще подумати заздалегідь (Google-аккаунт для контактів, Titanium backup для програми і руки для отримання важливих фотографій). Якщо все важливе вже зберегли і у прямоті своїх рук впевнені, то приступаємо. Але нагадую, що прошивка телефону — це, певною мірою, завжди лотерея, і за ваш телефон у відповіді тільки ви. Ви можете його зламати!

При написанні інструкції у мене стояв Paranoid Android, і мені не вдалося з першого разу встановити F2FS, я зробив скидання до заводського стану, і після цього прошивка встала як до себе додому. Єдиний варіант збереження даних це якщо у вас зараз стоїть звичайний CM11. У даному випадкувам необхідно зробити бекап /data, через TWRP, який доступний нижче, і після встановлення відновити. Якщо ж у вас будь-який інший ROM, включно з стоковий, відновлювати /data не рекомендується.

© 2022 androidas.ru - Все про Android