System Administration Toolkit: Перемещение файловой системы в UNIXИсточник: IBM developerWorks Россия Мартин Браун
Перемещение каталога или файловой системы в UNIXСуществует много ситуаций, когда может понадобиться переместить файловую систему в UNIX с одного физического устройства (логического раздела жесткого диска) на другое, к примеру, если перемещаются некоторые данные с текущей файловой системы в новый логический раздел, чтобы освободить на текущей файловой системе место, и попутно на новом разделе для этих данных создается и монтируется файловая система. Такую операцию можно провести как на однопользовательской системе, так и на работающей многопользовательской, где надо гарантировать, что в процессе перемещения данные не потеряют доступность. В последнем случае (перемещение работающей файловой системы), может понадобиться перемещать приложение в то время, когда оно работает. В любом случае нужно переместить каталоги с системными файлами системы, такие как /usr или /var, и независимо от того, работает компьютер в однопользовательском режиме или нет, эти файлы системы могут активно использоваться. При любой операции перемещения файловой системы необходимо убедиться, что данные были корректно скопированы в новое место. В листинге 1 1 показано разбиение жесткого диска на разделы и размещение файловой системы. Листинг 1. Пример использования файловой системы и жесткого диска
Как можно увидеть из листинга 1, корневая файловая система на 84% заполнена, и администратору, возможно, придется переместить каталог из корневой файловой системы на другой логический раздел, чтобы освободить в корневой файловой системе немного места. В таком случае лучше всего перемещать один большой каталог определенного назначения, который оказывает большое влияние на файловую систему, поскольку тогда в файловой системе будет освобождено значительное количество дискового пространства. В данном случае нужно переместить каталог /var или /usr во вновь созданную файловую систему. Перемещение маленьких каталогов, пусть их и много, будет неэффективным: для освобождения дискового пространства проще переместить один, но большой каталог. В некоторых ситуациях придется копировать в новое место логический раздел целиком (например, в случае выхода из строя жесткого диска). В таком случае администратору не придется выбирать, какие данные копировать в новую файловую систему. Я предполагаю, что у читателя уже есть либо новый жесткий диск, либо чистый раздел на жестком диске, который будет использоваться для копирования каталогов или файловой системы. Последовательность действий при перемещении данныхБазовая последовательность действий при перемещении файловой системы или перемещении каталога в новую файловую систему будет такова:
В идеале после всех этих действий необходимо выполнить перезагрузку операционной системы, хотя это не всегда нужно или возможно; но в любом случае необходимо попытаться перезагрузить ОС. Давайте подробнее рассмотрим перечисленные выше действия. Создание нового логического раздела и файловой системыПрежде чем создать новый логический раздел и файловую систему, необходимо убедиться что того пространства, которое будет отведено под новый раздел, хватит для файлов, которые будут скопированы в новую файловую систему, когда она будет смонтирована на этот раздел. Например, если необходимо переместить каталог /usr текущей файловой системы, нужно пользоваться командой из листинга 2. Листинг 2. Перемещение каталога /usr из текущей файловой системы
Опция Если будет выполнено перемещение текущей файловой системы, а не отдельного каталога из текущей файловой системы, в раздел большего, чем необходимо размера, то для определения размера текущей файловой системы надо использовать команду После того как мы определили размер текущей файловой системы, надо создать логический раздел, который на 25% больше, чем необходимо (по крайней мере новый логический раздел должен иметь запас на 10% больше, чем необходимо). Например, для файловой системы из примера выше размер нового раздела должен быть не менее 5 Гб. Чтобы создать новый раздел и файловую систему, используются стандартные утилиты операционной системы. Например:
После того как на новом разделе будет размещена файловая система, нужно создать каталог, в который будет смонтирована эта файловая система. Я предпочитаю создавать новую файловую систему в подкаталоге с такой же иерархией родительских каталогов, как и в исходной файловой системе, присваивая ей (новой файловой системе) имя, в котором было бы указано, что она временная. Для примера с /usr выше я создал новый каталог /mnt/usr.tmp, в котором и смонтировал файловую систему. Копирование данныхКопирование данных является, наверное, самым простым этапом перемещения файловой системы, однако от выбора инструмента для этого этапа зависит, как эффективно будут передаваться данные. Чтобы убедится в том, что нужные данные не будут случайно перезаписаны при копировании, проверьте, что копируете информацию в нужное место. Копировать можно множеством разных способов. Двумя самыми распространенными являются использование утилит Какой бы метод ни использовался, нужно проверить, что файлы на исходной файловой системе больше не обновляются. Необходимо учитывать, что любая сделанная копия содержит версию данных на момент своего создания. Если в момент создания копии данные обновлялись, то копия этих данных на новой файловой системе может быть либо неполной, либо вообще неработоспособной. Использование cpИнструмент Чтобы скопировать файлы из существующего каталога в новый каталог, выполните следующие шаги:
Далее нужно быстро проверить, все ли файлы скопировались правильно. Для этой цели подойдет команда Листинг 5. Верификация скопированных файлов
Если выяснится, что некоторые файлы скопированы некорректно, или если символьная ссылка и другие специальные типы файла скопировались некорректно, можно попробовать использовать Использование tarУтилита Лучший способ использовать Листинг 6. Использование tar для копирования
Аргумент Листинг 6 работает потому, что вторая часть команды меняет рабочий каталог, прежде чем читать файл .tar, который был создан первой половиной команды. Если нужно создать файл .tar и впоследствии использовать его, а не выполнять прямое копирование, то файловая система должна быть достаточно вместительной, чтобы хранить все эти временные файлы с исходного каталога. Листинг 7 показывает процесс копирования. Листинг 7. Процесс копирования
Какой бы метод работы с Листинг 8. Вывод информации о процессе копирования
tar и непосредственное копирование файловой системыЧтобы скопировать содержимое файловой системы в новое место на жестком диске, не создавая временной точки монтирования в этом месте, потребуется пространство для хранения всех файлов исходного каталога. При монтировании в каталог новой файловой системы:
Если выполняется изменение логического раздела для текущей файловой системы, как в листинге 10, тогда последовательность действий остается такой же, только необходимо размонтировать текущую рабочую файловую систему, а не переименовывать каталог (см. листинг 12). Листинг 12. Изменение логического раздела существующей файловой системы
Это операция вполне безопасна, поскольку у нас есть точная копия исходной файловой системы на старом логическом разделе. В любом из приведенных выше решений исходная копия файловой системы с данными не удаляется. Проверка копииИспользуете вы Сначала проверим информацию, которую выведет команда du для старой и новой файловой системы (см. листинг 13). Листинг 13. Результаты работы du
Два числа для двух файловых систем должны быть идентичными; однако в зависимости от типа новой файловой системы, занимаемого каталогами и файлами места на старой и новой файловых системах, можно заметить небольшую разницу в размерах. Другим хорошим тестом является сравнение числа файлов и каталогов в исходной и новой файловой системе. Осуществить подсчет файлов можно командой Листинг 14. Сравнение числа файлов/каталогов в новой и исходной файловой системе.
Другой хорошей проверкой после копирования файловой системы является сравнение числа inode-файлов в исходной и новой файловых системах; эта проверка покажет, сколько inode-файлов было распределено для новой файловой системы. Если новая файловая система такого же типа что и исходная, количество inode-файлов для каждой файловой системы должно быть одинаково. Используйте Листинг 15 выполнен в Linux-системе Листинг 15. Сравнение числа inode-файлов
Листинг 16 осуществлен в ОС Solaris. Листинг 16. Сравнение числа inode-файлов в ОС Solaris
Завершение установки файловой системыК этому этапу у вас должна уже быть новая файловая система, которая содержит копию старой файловой системы или каталога из старой файловой системы. Теперь надо обновить системные файлы ОС (особенно информацию о смонтированных файловых системах) для поддержки новой файловой системы. Эта информация хранится в файлах /etc/fstab, /etc/vfstab или может быть доступна через специальную утилиту для администрирования, например, SAM в HP-UX. Если в пределах существующей файловой системы вами был перемещен каталог, то:
После всех вышеописанных действий рекомендую перезагрузить операционную систему и убедиться, что новый раздел будет использоваться в дальнейшем. Необходимо выполнить перезагрузку и в том случае, когда файловая система переносится с одного физического устройства на другое. Маловероятно, что можно будет потом размонтировать уже существующую исходную файловую систему, особенно если она содержит системные каталоги. Если перезагрузить невозможно, то следует вручную смонтировать новую копию системы в новую точку монтирования, а затем перезагрузитесь, как только представится возможность. Сразу после перезагрузки и получения подтверждения, что все работает нормально, можно удалить старый каталог или повторно использовать старый раздел. ЗаключениеСуществует очень много ситуаций, когда требуется скопировать файловую систему, иногда даже работающую. Это может произойти из-за нехватки места для установки различных приложений текущей файловой системе или из-за сбоя работы жесткого диска. В любой из этих ситуаций для копирования файлов из старой файловой системы в новую необходимо использовать приемы, описанные в этой статье. Конечно, и здесь есть "подводные камни" - копировать работающую файловую систему может быть рискованно, особенно если в ней присутствуют открытые файлы. Следует быть осторожным, чтобы гарантировать, что никакие уже существующие на новом разделе файлы не будут случайно перезаписаны при процессе копирования. Однако при помощи приемов, описанных в этой статье, можно эффективно копировать файлы работающей системы на новый, больший по емкости раздел и успешно пользоваться им. |