LINUX.ORG.RU

История изменений

Исправление kostik87, (текущая версия) :

Ещё раз, дефрагментация происходит на уровне ФС. При желании записать файл на файловую систему запись файла происходит в кластеры файловой системы, которые помечены как свободные. Если нет области с подряд идущими кластерами, подходящей по размеру, что бы в неё поместился файл целиком, занимая один за другим идущие кластеры, тогда часть файла помещается в одну группу кластеров, а оставшиеся части файла в другие группы кластеров.

Кластеры, как ни странно, расположены на накопителе, в зависимости от размера сектора, единица информации, которую можно считать за одно обращение к накопитею, в кластере несколько секторов.

Теперь, если вы хотите прочитать этот файл и у вас жёстких диск, обычный с магнитными пластиними и магнитными головками, с двигателем, который вращает магнитные пластины и другим двигателем, который передвигает магнитные головки.

Магнитная пластиниа «разбита» на дорожки, на каждой дорожке некоторое количество секторов, дорожки находящиеся на одинаковом расстоянии от центра магнитной пластины, но на разных сторонах пластины и пластниах образуют циллиндр.

И так, что бы вам прочитать файл с жёсткого диска вам нужно последовательно прочитать все его части, которые могут располагаться в разных участках диска, (файловая система фрагментирована), что бы это сделать, нужно подвести магнитную головку к определённой дорожке, подождать пока она окажется над нужным сектором, считать сектор, далее если следующая часть файла находится не в секторе, который идёт за только что прочитанным, но часть находится на этой же дорожке, нужно подождать пока магнитная пластина провернётся и под магнитной головкой окажется нужный сектор, прочитать его, если сектор находится на другой дорожке, то нужно переместить магнитную головку на другую дорожку, подождать, пока магнитная пластина провернётся и под магнитной головкой окажется нужный сектор дорожки, прочитать его и так далее, пока не прочитается весь файл. Как видно тратится определённое время на передвижение магнитной головки к определённой дорожке, кроме этого её ёще нужно точно спозиционировать, далее тратится время на ожидание, пока повернётся пластина.

Это называется последовательнйы доступ к данным.

Если же у вас твертодельный накопитель (SSD), у вас на нём так же фрагментируется файловая система, но у него другой принцип работы. Примерно такой же, как и у оперативной памяти. У SSD накопителя нет секторов, есть ячейки памяти, но логически он предоставляет тот же интерфейс для операционной системы, т.е. говорит как бы, что у меня есть сектора. На самом же деле при запросе на чтение определённого севтора происходит пересчёт номера сектора в адрес ячейки памяти, которую нужно прочитать далее в специальные регистры выствляется смещение и номер ячейки (болка памяти), который нужно прочитать и всё, данные считываются, далее при чтении следующего сектора так же происходит пересчёт его номера в адрес ячейки памяти и данные считываются.

Как видно здесь не тратится время на передважение магнитных головок или чего то другого, просто выдаётся адрес, который нужно прочитать и в ответ возвращаются данные. Скорость, с который возвращаются данные зависит от времени отклика ячеек паямти, но оно очень мало.

Это называется прямой доступ к данным.

Надеюсь, вам стало ясно, что дефрагментировать файловую систему на твердотельном накопителе не нужно а даже вредно. Т.к. число циклов перезаписи (смены состояния ячейки памяти) ограничено. Контроллер, конечно, «пытается», что бы все ячейки памяит «изнашивались» одинаково, но осложнять ему жизнь не стоит. Иначе со временем у вас начнут появляться сбойные и не читающиеся области.

Исходная версия kostik87, :

Ещё раз, дефрагментация происходит на уровне ФС. При желании записать файл на файловую систему запись файла происходит в кластеры файловой системы, которые помечены как свободные. Если нет области с подряд идущими кластерами, подходящей по размеру, что бы в неё поместился файл целиком, занимая один за другим идущие кластеры, тогда часть файла помещается в одну группу кластеров, а оставшиеся части файла в другие группы кластеров.

Кластеры, как ни странно, расположены на накопителе, в зависимости от размера сектора, единица информации, которую можно считать за одно обращение к накопитею, в кластере несколько секторов.

Теперь, если вы хотите прочитать этот файл и у вас жёстких диск, обычный с магнитными пластиними и магнитными головками, с двигателем, который вращает магнитные пластины и другим двигателем, который передвигает магнитные головки.

Магнитная пластиниа «разбита» на дорожки, на каждой жорожке некоторое количество секторов, дорожки находящиеся на одинаковом расстоянии от центра магнитной пластины, но на разных сторонах пластины и пластниах образуют циллиндр.

И так, что бы вам прочитать файл с жёсткого диска вам нужно последовательно прочитать все его части, которые могут располагаться в разных участках диска, (файловая система фрагментирована), что бы это сделать, нужно подвести магнитную головку к определённой дорожке, подождать пока она окажется над нужным сектором, далее если следующая часть файла находится не в секторе, который идёт за только что прочитанным, но часть находится на этой же дорожке, нужно подождать пока магнитная пластина провернётся и под магнитной головкой окажется нужный сектор, прочитать его, если сектор находится на другой дорожке, то нужно переместить магнитную головку на другую дорожку, подождать, пока магнитная пластина провернётся и под магнитной головкой окажется нужный сектор дорожки, прочитать его и так далее, пока не прочитается весь файл. Как видно тратится определённое время на передвижение магнитной головки к определённой дорожке, кроме этого её ёще нужно точно спозиционировать, далее тратится время на ожидание, пока повернётяс пластина. В тратится время.

Это называется последовательнйы доступ к данным.

Если же у вас твертодельный накопитель (SSD), у вас на нём так же фрагментируется файловая система, но у него другой принцип работы. Примерно такой же, как и у оперативной памяти. У SSD накопителя нет секторов, есть ячейки памяти, но логически он предоставляет тот же интерфейс для операционной системы, т.е. говорит как бы, что у меня есть сектора. На самом же деле при запросе на чтение определённого севтора происходит пересчёт номера сектора в адрес ячейки памяти, которую нужно прочитать далее в специальные регистры выствляется смещение и номер ячейки (болка памяти), который нужно прочитать и всё, данные считываются, далее при чтении следующего сектора так же происходит пересчёт его номера в адрес ячейки памяти и данные считываются.

Как видно здесь не тратится время на передважение магнитных головок или чего то другого, просто выдаётся адрес, который нужно прочитать и в ответ возвращаются данные. Скорость, с который возвращаются данные зависит от времени отклика ячеек паямти, но оно очень мало.

Это называется прямой доступ к данным.

Надеюсь, вам стало ясно, что дефрагментировать файловую систему на твердотельном накопителе не нужно а даже вредно. Т.к. число циклов перезаписи (смены состояния ячейки памяти) ограничено. Контроллер, конечно, «пытается», что бы все ячейки памяит «изнашивались» одинаково, но осложнять ему жизнь не стоит. Иначе со временем у вас начнут появляться сбойные и не читающиеся области.