LXF160:Анатомия жесткого диска.
|
|
|
Содержание |
Анатомия жесткого диска
Вот вам мысль: какой компонент в вашем компьютере самый ценный? Ценный именно для вас, а не с точки зрения рыночной стоимости. Сам компьютер со всем оборудованием вряд ли является семейной реликвией, если только ваш дедушка не успел перед кончиной приобрести звуковую карту AdLib и передать вам по наследству (а вы сейчас от души наслаждаетесь, пытаясь заставить ее работать в современной машине).
Но для большинства из нас самая ценная часть – определенно жесткий диск. Если прикажет долго жить CPU или накроется видеокарта, мы просто купим другие. А вот если с нашим суровым миром распрощается жесткий диск, прихватив с собой все ваши жизненно важные файлы (а свежих копий у вас нет), этого уже не исправить никакими деньгами. И тем не менее, несмотря на всю свою важность, скромняга жесткий диск недополучает заслуженного им внимания.
Мы все ведемся на яркие вещи – новые дистрибутивы и среды рабочего стола, но есть масса полезной информации, которую стоит узнать об этих устройствах. Например, существует много стратегий деления жесткого диска на разделы, влияющих на безопасность и производительность. Есть разные типы файловых систем, которые вы можете использовать, и разные хитрости, пригодные для восстановления данных в случае, если что-то пойдет не так.
Новые технологии вроде SSD меняют роль жестких дисков. Если вы случайно удалили файл, велика вероятность, что вы сможете его восстановить с помощью всяких хитроумных инструментов. Так что жесткий диск – это вовсе не прозаическая коробка с байтами, зарытая где-то в недрах вашего компьютера, а целый технологический мир с уймой возможностей индивидуальной настройки. Цель нашей статьи – научить вас всему, что стоит узнать о жестких дисках, и даже немного большему. Мы также включили несколько советов, которые вы можете вырезать и повесить на стену рядом со своим компьютером на случай ЧП.
Исключительно безопасности ради (и нашей, и вашей!), небольшое предупреждение: наш урок посвящен изменениям, вносимым в структуру данных, которые хранятся на жестком диске. Настоятельно рекомендуем вам попробовать самостоятельно команды и опции, ведь это самый лучший способ обучения... но только на тестовой машине (или в VirtualBox). Не экспериментируйте на своем основном компьютере, если не хотите рисковать данными!
«Новые технологии вроде SSD меняют роль жестких дисков.»
Что такое разделы?
От пустого жесткого диска проку мало; прежде чем он сможет начать хранить данные, на нем должна появиться некая структура. На низшем уровне жесткие диски состоят из секторов, то есть очень маленьких блоков данных, хранимых в заданных участках диска. На диске могут находиться многие миллионы секторов, и они организованы в логические группы на разных уровнях.
На самом нижнем уровне это разделы (файловую систему мы рассмотрим позднее). Раздел по сути являет собой собрание секторов, отведенных под разные задачи хранения данных.
Большинство компьютеров от наиболее известных изготовителей идут только с Windows (что печально), поэтому на их жестких дисках имеется только один большой раздел, занимающий практически весь диск. При загрузке Windows он именуется диском C:. На некоторых машинах имеется второй, «спасательный» раздел – он содержит резервную копию ОС на случай, если придется ее переустановить.
Цель разделов – хранить области данных отдельно друг от друга. Например, при установке Linux на компьютер с Windows программа установки Linux, как правило, сжимает раздел Windows, чтобы выделить место для разделов Linux. В конечном итоге вы получаете диск с несколькими разделами, как показано на диаграмме. Windows знает, что нельзя залезать в разделы Linux, и наоборот. Размеры этих разделов разные в разных системах, в зависимости от того, сколько вы выделите под каждую ОС.
MBR — Master Boot Record
По сути, это не раздел, а крошечная часть диска, содержащая первые части загрузочного кода вместе с таблицей разделов, которая показывает ОС, какие разделы имеются на диске.
Swap-пространство
Используемый для виртуальной памяти, раздел swap [подкачки] не содержит файлов, как обычный раздел. Вместо этого ядро Linux использует его в качестве более крупного и более медленного банка ОЗУ для простаивающих задач. Неплохо задать его вдвое больше вашего ОЗУ, но не более 4 ГБ, кроме экстремальных случаев.
Вырежьте и сохраните: Экстренное деление на разделы
Программа fdisk, предназначенная для разбиения диска на разделы, во многом похожа на текстовый редактор vi: она простая, запускается из командной строки и имеется практически в каждом дистрибутиве. Запустите ее (от имени root), предоставив путь к диску (узлу устройства) таким образом:
fdisk /dev/sda
В обычной установке Linux /dev/sda относится к первому жесткому диску, /dev/sdb –ко второму, и т. д. Введите p, и вы увидите список разделов на диске, как на экранном снимке. Обратите внимание на столбцы Start и End, отображающие используемые секторы. Каждый раздел имеет свой номер, так что sda1 – это первый раздел на первом диске, а sdb3 – третий раздел на втором диске.
Чтобы удалить раздел, введите D, и у вас спросят номер раздела. Чтобы добавить новый раздел, введите N. У вас спросят, сделать ли его основным (не более 4-х) или расширенным; для простоты, выбирайте первый, если у вас есть такая возможность. Затем введите номер начального сектора (с учетом ранее упомянутого списка) и размер. В главном окне приглашения введите P, и вы увидите в списке новый раздел.
Но пока у него нет ID, поэтому введите T и номер раздела, а затем Shift+L для вывода списка имеющихся типов. Введите 83 для раздела Linux, 82 для раздела swap или 7 для раздела Windows (NTFS). Теперь введите W, чтобы записать изменения на диск, или Q, чтобы выйти, не сохранив изменений.
Отдельный /home: да или нет?
Одним из самых сложных пунктов выбора, с которым вы столкнетесь при установке Linux и делении жесткого диска на разделы, таков: разместите ли вы директорию /home на отдельном разделе? Именно в ней проживают файлы пользователя – то есть личные документы и настройки учетной записи пользователя, а не файлы ОС, которые сидят в отдельных директориях. Некоторые дистрибутивы Linux рекомендуют учредить отдельный раздел, а некоторые по умолчанию все размещают в том же разделе. Как же поступить вам? Ответ зависит от того, как вы будете применять свой компьютер.
Если вы планируете пробовать много разных дистрибутивов и часто устанавливаете новые поверх старых, тогда имеет смысл создать отдельный раздел /home. Благодаря этому вы сможете делать с ОС все, что заблагорассудится – обновлять, понижать до более ранней версии или стереть и поставить случайно выбранный экзотический новый дистрибутив с Фарерских островов. Каким бы дистрибутивом Linux вы ни пользовались, ваши личные файлы всегда будут там, в целости и сохранности, на отдельной части диска. При известной осторожности можно даже иметь несколько дистрибутивов Linux на одном компьютере, и все они будут обращаться к одному и тому же разделу /home после загрузки.
Но почему мы говорим об осторожности? Вспомните о настройках и файлах конфигурации. Скомандовав, например, ls -a в своей домашней директории, вы увидите огромное количество скрытых файлов и директорий, имена которых начинаются с точек – там содержатся настройки программ. Если вы попытаетесь использовать одинаковые настройки в разных версиях программы, программа может запутаться.
Допустим, у вас на компьютере есть Дистрибутив A и Дистрибутив Б. Вы загружаете Дистрибутив А и запускаете FooProgram 2.0 в первый раз, и она создает папку с настройками .fooprogram/ в вашей домашней директории. Затем вы загружаете Дистрибутив Б при той же самой домашней директории и запускаете FooProgram – но на сей раз это будет версия 1.0. Она запутается из-за разницы в файлах настройки, что может привести к полной утрате или повреждению данных. Другая потенциальная проблема с отдельной директорией /home – ограничение по размеру. Если вы поместите все в один раздел, то и ОС, и домашние директории будут иметь доступ к свободному месту. Если вы поместите /home на отдельный раздел и места не будет хватать, вы не сможете просто взять место из раздела ОС (но если вы используете LVM, Logical Volume Manager, как это предлагается на стадии установки во многих дистрибутивах, вы преодолеете эту проблему, поскольку он поддерживает изменение размера разделов).
Однако у подхода, поддерживающего отдельный раздел, есть и плюсы, особенно сейчас, когда все популярнее и доступнее становятся диски SSD (твердотельные накопители). Поскольку они невероятно быстры по сравнению с вращающимися жесткими дисками, вы можете поместить файлы ОС на SSD, чтобы обеспечить быструю работу системы и время запуска приложений, а /home – на традиционный жесткий диск (в конце концов, вас не слишком заботит, долго ли будут грузиться документы LibreOffice или фотографии).
Но для систем на обычных жестких дисках, если вы не собираетесь что ни день осваивать новый дистрибутив, мы рекомендуем подход «Размести все на одном разделе».
Самые важные директории
Загляните в директорию root (/), и вы увидите множество директорий, которые могут быть вам незнакомы. И хотя большинству пользователей крайне редко приходится обращаться к этим директориям, стоит все же знать, для чего они служат. Поясняем:
» /bin Двоичные, или, более точно, исполняемые файлы, используемые базовой системой. Однако сюда не входят более крупные приложения рабочего стола, такие как Firefox (эти хранятся в /usr).
» /boot Файлы, используемые для загрузки, например, ядро Linux.
» /dev Узлы устройств [Device nodes]. Здесь находятся файлы, применяемые для доступа к оборудованию.
» /etc Конфигурационные файлы системы (пользовательские настройки хранятся в директории /home).
» /media Здесь часто монтируются съемные носители, например, USB-брелки.
» /mnt Еще одно место для монтирования дисков (смотрите не запутайтесь), но обычно только жестких дисков или сетевых устройств.
» /opt Опциональные пакеты приложений. В некоторых дистрибутивах именно здесь отводится место для программ-мастодонтов типа KDE или LibreOffice.
» /proc Информация о процессах. Имеет реальную ценность только для администраторов, желающих отслеживать потребление ресурсов программой.
» /sbin Крайне важные для работы системы исполняемые файлы, но запустить их может только суперпользователь (root).
» /usr Содержит файлы, не имеющие критической важности, например, приложения. /usr/lib, внутри нее, содержит большинство библиотек, используемых приложениями.
» /var Варьируемые файлы – т. е., данные, которые часто меняются, например, базы данных, почтовые ящики и журналы системы.
Вырежьте и сохраните: Синхронизация диска
Сейчас мы вас удивим: когда вы сохраняете файл в программе, он на самом деле не записывается прямо на диск. По крайней мере, это характерно для маленьких файлов (например, менее мегабайта). По соображениям производительности операционные системы не пишут данные на жесткий диск по каждому запросу, а ждут, когда накопится побольше данных с многочисленными запросами на запись.
Поэтому ОС держит все эти записи в буфере ОЗУ, а потом одним махом записывают их на диск. Если вам когда-нибудь сильно не везло – настолько, например, что вы наблюдали отключение электричества через несколько секунд после нажатия в программе Ctrl+S – то вы увидите это в действии. К счастью, решение есть. В любой момент вы можете в окне терминала ввести sync, чтобы гарантированно выполнить все операции записи на жесткий диск.
И еще есть особое сочетание клавиш, которым можно воспользоваться, если повисла X Window System – т. е., графический уровень полностью блокирован, но вы хотите все синхронизировать с дисками и безопасно перезагрузиться. Оно называется ключом Magic SysRq, и включается в большинстве дистрибутивов следующим образом:
Нажмите и удерживайте Alt + SysRq (обычно в верхней части клавиатуры справа), и затем нажимайте следующие клавиши в таком порядке: R (возвращение управления клавиатурой), E (прекращение процессов), I (остановка процессов с ошибками), S (синхронизация данных с диском), U (размонтирование дисков), и B (перезагрузка).
Что в файловой системе?
Жесткий диск без файловой системы – это просто нагромождение байтов. Файловая система помогает ОС разобраться со смыслом диска – найти, где файлы начинаются, где заканчиваются, к какой директории относятся. В простых файловых системах, таких, как FAT в DOS, в первых нескольких секторах есть таблица, описывающая расположение файлов. Каждый файл имеет свою запись в этой таблице (поэтому большинство файловых систем имеют ограничение на количество файлов), содержащую имя файла, время создания, размер в байтах, сектор, где он начинается, и т. п. Наиболее популярной файловой системой в мире Linux является ext4, отличная, надежная файловая система общего назначения для жестких дисков. Какое-то время в мире Linux сосуществовал ее конкурент, ReiserFS, инновационная файловая система, чье развитие оказалось отброшено назад после того, как ее главного разработчика обвинили и позднее осудили за убийство жены...
Есть и другие файловые системы, о существовании которых следует знать; они пригодны для более специфичных задач, чем обычная работа за ПК. Например, ZFS обеспечивает отличную производительность и надежность на нескольких дисках, о чем рассказывается в нашем руководстве по FreeNAS. Затем есть LogFS, разработанная для использования на флэшках (которые работают совершенно иначе, чем вращающиеся жесткие диски, и поэтому получают выигрыш от специализированной файловой системы).
Интересно отметить, что при наличии всех продвинутых файловых систем, используемых в наши дни и в Linux, и в Windows, обычные флэшки USB идут с предварительным форматированием в FAT32 (и с его ограничениями). Использование такой отсталой технологии в наши дни кажется странным, но зато эти флэшки совместимы практически со всем. |