Дефрагментация в Linux — как делать и нужно ли?
Многие пользователи Windows вынуждены прибегать к дефрагментации информации на жёстком диске для ускорения работы системы. Да, этот совет касается только устаревших HDD дисков, которые под систему уже мало кто ставит, но всё же свойство системы замедляться при фрагментации файлов очевидно. Однако мало кто знает, что дефрагментацию можно делать и в ОС Linux — об этом и пойдёт речь сегодня.
Описываемый в статье процесс подходит только для дисковых накопителей информации (HDD дисков). Фотография в свободном доступе.
Что такое дефрагментация и зачем она нужна?
Прежде, чем я буду рассказывать о том, как запустить дефрагментацию в Linux, следует рассказать, что это вообще за процесс, и зачем он нужен. Жёсткий диск вашего компьютера состоит из миллионов маленьких разделов, в каждом из которых хранится маленький кусочек данных. Распространённые файловые системы, используемые под Windows (FAT и NTFS) имеют свойство выделять ограниченный сектор под конкретные файлы, то есть, создав папку с данными на диске, вы занимаете конкретный адрес (сектор) на пластине жёсткого диска. Но наполняя папку файлами, вы помещаете их уже в другие сектора на накопителе (процесс для пользователя неочевидный, но изнутри это так и выглядит) — такова особенность файловой системы.
Фрагментированный (слева) и дефрагментированный (справа) жёсткие диски. Диаграммы показывают слитность информации, соответственно, быстрый к ней доступ. Изображение в свободном доступе.
Разбросанные по секторам файлы увеличивают время выполнения запроса (во время обращения к ним), следовательно замедляют работу системы.
Но ведь Linux зачастую устанавливается под другой файловой системой, скажете вы? И вы будете правы, в подавляющем большинстве случаев ОС Линукс устанавливается под ext4, которая не подвергает файлы фрагментации, выделяя на поверхности жёсткого диска больше места для записи данных — и пока сектор не заполнится, запись не переместится в другую ячейку памяти. Таким образом, фрагментация (а именно дробление данных и увеличение времени доступа к файлу) происходит намного реже. Однако при переполнении файловой системы ext4, возможны некоторые глюки системы — от небольших лагов до серьёзных зависаний.
Дефрагментация HDD в Линукс не обязательна, но иногда без неё никак. Изображение в свободном доступе.
Дефрагментация, в свою очередь, нацелена на объединение разрозненных кусков данных на диске — перемещая их в соседние сектора, данный процесс позволяет увеличить производительность системы, а также ускорить загрузку выбранного файла или группы файлов.
Напоминаю, для SSD-дисков процесс дефрагментации не то что не нужен, но даже вреден!
Дефрагментация дисков в Linux
Чтобы оценить необходимость дефрагментации файлов, необходимо обратить внимание на состояние файловой системы. Сделать это можно при помощи утилиты fsck с параметром -f, а для того, чтобы ненароком не внести никаких изменений в ext4, добавьте к этому опцию -n. Итоговая команда в терминале должна выглядеть так:
Причём под /dev/sdb1 следует указать именно тот диск, который вы хотите проверить. Посмотреть программный адрес диска можно в файловом менеджере, запросив свойства носителя.
Фрагментация по результатам выполнения данной команды указывается в скобках и зачастую демонстрирует мизерные значения (не более 1%). Но в некоторых случаях процент фрагментированных данных составляет 10 и более процентов — в этих случаях переназначить сектора сам Торвальд велел, ибо не распыли данных по диску своему, да будет тебе счастье. Но для дефрагментации ЖД необходимо установить утилиту e4defrag, входящую в пакет e2fsprogs. Если у вас данный пакет не установлен в системе, то установите его прямо в терминале при помощи команды
sudo apt install e2fsprogs
А после установки этой утилиты, вы можете провести дефрагментацию нужного раздела, к примеру, тот же самый dev/sdb1. Однако перед этим его нужно примонтировать к операционной системе при помощи команды
sudo mount /dev/sdb1 /mnt
И лишь потом переходить непосредственно к процессу дефрагментации данных в файловой системе ext4, которая выполняется при помощи команды sudo e4defrag /dev/sdb1
Процесс относительно недолгий, но его длительность напрямую связана с заполнением файловой системы. То есть, чем больше мелких разрозненных файлов, тем дольше продлится процесс. По завершении процесса, необходимо ещё раз проверить состояние фрагментации файлов — если значение равно нулю, то всё прекрасно. Если же нет — видимо, вы ошиблись в каком-то моменте, и процесс лучше провести заново.
Заключение
Проведение фрагментации в файловой системе ext4 не обязательно, но может сэкономить пользователю пару секунд времени — для многих это критичный показатель. Однако следует помнить, что это даст эффект только в случае заполненности файловой системы, в остальных случаях это равносильно рисованию на воде!
Проводите ли вы дефрагментацию ваших жёстких дисков?
С вами был IT-джедай, а для развития канала – не поленитесь нажать на кнопку «Нравится» и подпишитесь на канал.
Почему Linux не нуждается в дефрагментации
Если вы пользователь Linux, вы, вероятно, слышали, что вам не нужно дефрагментировать файловые системы Linux. Вы также заметите, что дистрибутивы Linux не поставляются с утилитами для дефрагментации диска. Но почему?
Чтобы понять, почему файловые системы Linux не нуждаются в дефрагментации при обычном использовании, а файловые системы Windows нуждаются в этом, вам необходимо понять, почему происходит фрагментация и чем файловые системы Linux и Windows работают по-разному.
Что такое фрагментация
Многие пользователи Windows, даже неопытные, считают, что регулярная дефрагментация их файловых систем ускорит работу их компьютера. Чего многие не знают, так это почему.
Короче говоря, на жестком диске есть несколько секторов, каждый из которых может содержать небольшой фрагмент данных. Файлы, особенно большие, должны храниться в нескольких разных секторах. Допустим, вы сохранили несколько разных файлов в файловой системе. Каждый из этих файлов будет храниться в непрерывном кластере секторов. Позже вы обновляете один из файлов, которые вы изначально сохранили, увеличивая размер файла. Файловая система попытается сохранить новые части файла рядом с исходными частями. К сожалению, если не хватает непрерывного места, файл приходится разбивать на несколько частей — это все происходит прозрачно для вас. Когда ваш жесткий диск читает файл, его головки должны перемещаться между различными физическими местами на жестком диске, чтобы прочитать каждый фрагмент секторов — это замедляет работу.
Дефрагментация — это интенсивный процесс, в ходе которого фрагменты файлов перемещаются для уменьшения фрагментации и обеспечения непрерывности каждого файла на диске.
Конечно, это не так для твердотельных накопителей, которые не имеют движущихся частей и не должны подвергаться дефрагментации — дефрагментация SSD фактически сократит срок его службы. А в последних версиях Windows вам не нужно беспокоиться о дефрагментации файловых систем — Windows делает это автоматически. Дополнительные сведения о передовых методах дефрагментации см. в этой статье:
HTG объясняет: вам действительно нужна дефрагментация вашего ПК?
Как работают файловые системы Windows
Старая файловая система Microsoft FAT, которая в последний раз использовалась по умолчанию в Windows 98 и ME, хотя до сих пор используется на USB-накопителях, не пытается разумно упорядочивать файлы. Когда вы сохраняете файл в файловой системе FAT, он сохраняется как можно ближе к началу диска. Когда вы сохраняете второй файл, он сохраняется сразу после первого файла — и так далее. Когда исходные файлы увеличиваются в размере, они всегда становятся фрагментированными. Рядом нет места для их роста.
Новая файловая система Microsoft NTFS, которая появилась на потребительских ПК с Windows XP и 2000, пытается быть немного умнее. Он выделяет больше «буферного» свободного пространства вокруг файлов на диске, хотя, как вам скажет любой пользователь Windows, файловые системы NTFS со временем все же фрагментируются.
Из-за того, как работают эти файловые системы, их необходимо дефрагментировать, чтобы поддерживать максимальную производительность. Microsoft упростила эту проблему, запустив процесс дефрагментации в фоновом режиме в последних версиях Windows.
Как работают файловые системы Linux
Файловые системы Linux ext2, ext3 и ext4 (ext4 — это файловая система, используемая Ubuntu и большинством других современных дистрибутивов Linux) — распределяют файлы более разумно. Вместо того, чтобы размещать несколько файлов рядом друг с другом на жестком диске, файловые системы Linux разбрасывают разные файлы по всему диску, оставляя между ними большое количество свободного места. Когда файл редактируется и его нужно увеличить, обычно для этого файла достаточно свободного места. Если фрагментация все же произойдет, файловая система попытается переместить файлы, чтобы уменьшить фрагментацию при обычном использовании, без использования утилиты дефрагментации.
Из-за того, как работает этот подход, вы начнете видеть фрагментацию, если ваша файловая система переполнится. Если он заполнен на 95% (или даже на 80%), вы начнете видеть некоторую фрагментацию. Однако файловая система предназначена для предотвращения фрагментации при обычном использовании.
Если у вас есть проблемы с фрагментацией в Linux, вам, вероятно, понадобится жесткий диск большего размера. Если вам действительно нужно дефрагментировать файловую систему, самый простой способ, вероятно, самый надежный: скопируйте все файлы с раздела, сотрите файлы с раздела, затем скопируйте файлы обратно на раздел. Файловая система будет разумно распределять файлы по мере их копирования на диск.
Вы можете измерить фрагментацию файловой системы Linux с помощью команды fsck — ищите «несмежные индексы» в выводе.
Linux Commands | |
Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc |
Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap |
Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
RELATED: Best Linux Laptops for Developers and Enthusiasts