Библиотека сайта rus-linux.net
Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
Два лучше, чем один
Оригинал: "Two is better than one!"Автор: Dr. S.Parthasarathy
Дата публикации: октябрь 2009 г.
Перевод: Н.Ромоданов
Дата перевода: 7 октября 2009 г.
Краткое содержание
В этой статье вводится понятие спаренной загрузки, отличной от мультизагрузки (и ее варианта "dual boot" – мультизагрузки для двух ОС). При спаренной загрузке на одной и той же машине используется два (или больше) дистрибутивов Linux и два жестких диска (необязательно, но настоятельно рекомендуется). Дистрибутивы установлены хитро, с тем чтобы наилучшим образом использовать аппаратную избыточность. При таком варианте настройки Вы можете сделать больше и можете сделать это быстрее.
Примечание переводчика: В оригинале статьи используется два термина, связанных с загрузкой операционных систем: "dual boot" и "twin boot". Первый из них – общераспространенный, используется достаточно широко и переводится как "двойная загрузка" или, в общем случае, "мультизагрузка". Что же касается второго термина, то он вводится в этой статье. И автор подчеркивает, что это совсем другое понятие, отличающееся от мультизагрузки. В русском языке похожего термина нет. Переводчик для него использовал термин "спаренная загрузка" исходя из того, что первая часть термина "twin boot" переводится как "двойня, двойник, пара, парная вещь, близнец, двойняшки …". Поскольку автор специально отделяет термины "dual boot" и "twin boot" друг от друга, то и в переводе пришлось использовать два отличающихся друг от друга термина. Однако, по мнению переводчика, "twin boot" – это еще один вариант мультизагрузки, но - со специальной настройкой. В любом случае в статье представлен интересный способ настройки двух (можно – больше) Linux систем, которые будут использоваться на одном и том же компьютере.
Практический опыт спаренной загрузки
Это произошло тогда, когда мне пришлось списать мой старый самосборный компьютер. Я собирал следующий Linux-компьютер с более быстрым и лучшим железом. Я взял жесткий диск на 80 Гбайт, который заменил мой старый диск на 40 Гбайт, совершенно новую материнскую плату со встроенным звуковым интерфейсом, больший объем оперативной памяти и совершенно новый плоский монитор с ЖК панелью. Господи, я был богат! Это было то доброе старое время, когда нужно было совсем немного с тем, чтобы почувствовать себя на вершине мира. Вместо того чтобы сдать старый (меньший диск) в счет оплаты нового, я решил его оставить себе. Более того, благодаря таким журналам, как Linux for You, дистрибутивы Linux дешевели и становились доступнее. Итак, вместо установки только одного дистрибутива я решил установить два дистрибутивов и изучить, как обходиться с ними обоими. Такое решение привело меня к следующему вопросу: Как наилучшим образом получить максимальную отдачу от аппаратного и программного обеспечения, имеющегося у меня? Ниже я объясню, что я сделал. Это может навести вас на некоторые идеи, которые помогут вам получить больше отдачи от ваших Linux систем. Эксперимент со спаренной загрузкой, который интересен сам по себе, поможет вам разобраться в некоторых более тонких моментах работы Linux.
Термин "мультизагрузка" традиционно используется для описание систем, где мы одновременно имеем Linux и еще какую-нибудь другую ОС. В настоящей статье вводится термин "спаренной загрузки", который обозначает "чисто Linux компьютер", на котором установлено два дистрибутива Linux (а не какая-нибудь другая ОС). Концепция "спаренной загрузки" вылечит нас от пережитков прошлого, связанных с использованием других ОС. Кроме того, в системах со спаренной загрузкой имеется два отдельных жестких диска, хотя можно делать системы со спаренной загрузкой на одном жестком диске. Наличие двух жестких дисков, как мы увидим далее, даст вам некоторые преимущества. Есть несколько способов установки двух Linux дистрибутивов на системе с двумя жесткими дисками. В настоящей статье рассматривается один способ того, как это можно сделать, и обсуждаются связанные с этим различные аспекты. Конечно, Вы можете развить эту идею и использовать на одной и той же машине более двух дистрибутивов и более двух жестких дисков.
Одно предупреждение прежде, чем Вы начнете делать свою систему спаренной загрузки: не пытайтесь делать это, если Вы новичок и не понимаете в полной мере, как работает компьютер. Настройка разделов, настройка загрузчика и тонкая настройка в процессии установки – все это требует некоторых предварительных знаний и опыта в решении проблем, связанных с Linux, и его администрирования. Конечно, это – не ракетостроение, но Вы все равно можете сделать серьезные ошибки. Поэтому будьте аккуратны. Если Вы еще пока учитесь, то держитесь поближе к эксперту по Linux – это ваш "телефон доверия". Поскольку в большинстве случае Вы будете работать с правами root, Вы должны быть исключительно аккуратны.
Как это сделать
Принцип, используемый в этом подходе, - установить на один и тот же диск два дистрибутива (конечно, в два различных раздела). Мы разместим пространство свопинга для этих двух дистрибутивов на другом жестком диске. Мы также сделаем раздел, который будет иметь точку монтирования /home. Один и тот же раздел с точкой монтирования /home будет использоваться одновременно обоими дистрибутивами. Для удобства давайте назовем эти два дистрибутива дистрибутивом A и дистрибутивом B, а жесткие диски - диском P и диском Q. Архитектура, которую мы выбрали, выглядит приблизительно так, как изображено на рис.1. Оба дистрибутива находятся на диске Q (больший диск), в то время, как раздел /home и разделы свопинга находятся на диске P (меньший диск). Фактически такое размещение разделов является модификацией варианта, описанного в журнале Linux for You (февраль 2009 г.). Подобный подход также описывается в следующей статье: http://www.go2linux.org/dual-boot-two-linux-distros-debian-and-mandriva). В этой статье много скриншотов, что облегчит ее понимание.
В моем случае дистрибутивом A был OpenSUSE 11, а дистрибутивом B - Ubuntu 9.04. Диском P был IDE емкостью 40 Гбайтов, а диском Q – SATA диск емкостью 80 Гбайтов.
Рис.1: Система спаренной загрузки
Систему со спаренной загрузкой можно создать, выполнив следующие шаги:
- Создайте разделы на диске P и Q так, как это изображено выше.
- Установите две ОС на диск Q. Сконфигурируйте каждую ОС так, чтобы использовались соответствующие разделы. Создайте учетные записи пользователей.
- Настройте файл menu.lst загрузчика GRUB так, чтобы во время загрузки машины можно было выбрать запуск одной из ОС.
- Загрузите ОС A и проверьте, что соответствующие разделы смонтированы так, как планировалось. Используйте команду "mount" или запустите "cat /etc/fstab".
- Перезагрузитесь и повторите то же самое для дистрибутива B.
Для создания разделов на дисках P и Q используйте live CD (например, Knoppix), поскольку у вас еще нет ни одной установленной ОС. С помощью команды fdisk –l можно получить полную картину всех дисков и имеющихся на них разделов. Если Вы выполнили в вашей системе команду a fdisk –l, то Вы должны увидеть следующее:
Рис.2: Распределение разделов
Обратите внимание, что мы сделали только один раздел для /home, но два раздела для свопинга. Рекомендуемый размер раздела под свопинг – все еще тема для обсуждений и причина путаницы. Для надежности я взял по 2ГБайта для каждого раздела свопинга (на /dev/sda). Каждый раздел свопинга зарезервирован за конкретной ОС. Не стоит использовать один и тот же раздел свопинга для двух ОС, поскольку из-за этого могут возникнуть серьезные противоречия и проблемы. Например, всякий раз, когда Вы должным образом останавливаете Linux, а затем вновь его запускаете, Вы имеете чистый раздел свопинга. Если же с дистрибутивом произойдет авария, либо он зависнет, либо внезапно остановится, раздел свопинга удален не будет, что может привести к противоречиям при следующей загрузке. Хорошую статью по свопингу можно найти по ссылке http://www.xenotime.net/linux/doc/swap-mini-howto.txt.
Установите две ОС: Когда Вы будете устанавливать ОС, удостоверьтесь в том, что Вы выбрали правильное устройство / раздел и точки монтирования в каждом дистрибутиве. Для раздела /home не выбирайте "format partition" (форматирование раздела).
В каждой ОС создайте учетные записи пользователей: В каждой ОС должны быть свои собственные учетные записи пользователей, отличающиеся от записей другой ОС. Т.е. Вы не сможете иметь одно и то же имя пользователя в обеих ОС. Это связано с тем, что когда Вы создаете пользователя, ОС добавляет много скрытых файлов (файлов с точкой) с тем, чтобы хранить в них различные конфигурационные данные. Такие файлы могут внести путаницу в случае в случае, если они будут использоваться не в той ОС, в которой они созданы. Раздел /home на моей машине выглядит следующим образом:
Рис.3: Содержание раздела /home
Как можно догадаться по названию ,"drsuse" – пользователь в SUSE, "drubuntu" – пользователь в Ubuntu.
Модифицируем GRUB: В Linux используется загрузчик, называемый GRUB (GRand Unified Bootloader – главный унифицированный загрузчик), который во время загрузки поможет вам выбрать, какая ОС будет работать. Действия GRUB задаются в файле /boot/grub/menu.lst. Первый Linux должен установить GRUB в главную загрузочную запись MBR. Второй установливаемый Linux должен установить GRUB в собственный раздел root. Ниже показан скриншот файла menu.lst на моем первом Linux (SUSE Linux):
Рис.4: Файл menu.lst загрузчика GRUB
Сделайте проверку с помощью команды mount или просмотрите /etc/fstab: Команда "mount" – очень полезная команда. Вы можете вызвать ее без каких-либо аргументов и, в этом случае, она покажет все точки монтирования и соответствующие им устройства. Проверив точки монтирования в обеих ОС, Вы сможете удостовериться, что все они размещены в тех разделах, в которых Вы намеревались их использовать. Затем мы проверяем точки монтирования в моем втором дистрибутиве (Ubuntu): В файле /etc/fstab должны указываться все файловые системы, установленные в системе. Файл /etc/fstab подобен гороскопу вашей системы. Каждая ОС будет иметь свой собственный файл /etc/fstab. Ниже приведен файл /etc/fstab для Ubuntu.
А это точки монтирования в моем первом дистрибутиве (SUSE):
Рис.5.: Точки монтирования
Обратите внимание, что в обоих дистрибутивах /home монтируется на /dev/sda1. SUSE находится на at /dev/sdb1, а Ubuntu / - на /dev/sdb2. Под каждый дистрибутив отведено около 40 Гбайт памяти.
Рис.6: Файл /etc/fstab
Заметьте, что свопинг Ubuntu находится на /dev/sda3, а свопинг SUSE – на /dev/sda2.
Зачем это делать
Возможно, кажется странным устанавливать на одну и ту же машину два Linux дистрибутива и использовать два жестких диска там, где можно обойтись одним. Есть ситуации, когда это имеет смысл. Например, каждому хотелось бы ознакомиться с особенностями различных дистрибутивов Linux. Хороший профессионал должен быть знаком с различными дистрибутивами. Мы можем получить достоверные знания только на практике. Возможно, хорошая идея или даже единственный вариант - иметь два дистрибутива на одной и той же машине. Тогда мы сможем переключать дистрибутивы без физической смены машины. В каждом дистрибутиве имеется свой собственный механизм управления пакетами. Например, в SUSE используется YaST в то время, как в похожих друг на друга Ubuntu и Debian используется APT. В каждом дистрибутиве имеется свой собственный предпочтительный интерфейс рабочего стола. В SUSE я использую KDE. В Ubuntu я использую интерфейс GNOME. Эти два интерфейс сильно отличаются друг от друга. Внутренняя структура, иерархия файлов, порядок запуска и остановки системы, а также различные конфигурационные параметры – все различается в дистрибутивах. В разных дистрибутивах различные наборы прикладных программ. Практично также иметь один дистрибутив в качестве экспериментального, в котором можно опробовать сценарии типа "что если", и еще один дистрибутив в качестве стабильного рабочего дистрибутива для серьезного использования. Таким образом, имеет смысл устанавливать два дистрибутива на одной и той же машине. С другой стороны наличие двух жестких дисков также полезно. Это поможет вам использовать некоторые варианты механизма резервного копирования, или зеркалирования, и обеспечить отказоустойчивую работу машины. Некоторые амбициозные пользователи, если у них есть два диска(т.е. позволяют условия), могут также сконфигурировать RAID массив.
Все пользователи Linux знают, что директорий /home – это место, где хранятся файлы всех пользователей, кроме пользователя root. У каждого пользователя имеется поддиректорий в этом директории /home. Все файлы пользователя хранятся внутри этого поддиректория и хорошо защищены от других пользователей. Дополнительно имеется несколько конфигурационных файлов, специфических для каждого пользователя (это, обычно, файлы, начинающиеся с точки), и все они хранятся в соответствующих директориях пользователей. В каждом дистрибутиве нужен директорий /home для своих собственных пользователей, так что имеет смысл использовать один и тот же директорий /home в обоих дистрибутивах. Вы сможете сэкономить дисковое пространство, упростить управление пользователями, ускорить создание резервных копий. Помещая директорий /home в отдельный раздел (общий для обоих дистрибутивов), Вы получите дополнительные преимущества: Вы можете переустановить или изменить дистрибутивы по своему усмотрению и не опасаться за директорий /home. Доступ к диску становится быстрее, поскольку доступ к директории /home не конфликтует с доступом к другим частям дистрибутива, а операции свопинга не конкурируют с операциями в директории /home.
В мультизадачных операционных системах, таких как Unix/Linux, ваш жесткий диск постоянно находится под нагрузкой, поскольку обслуживает два конкурирующих друг с другом и сопутствующих друг другу явления: переключение процессов и свопинг (листование памяти).
Переключение процессов: В многозадачных операционных системах ОС постоянно переключается между различными задачами (процессами), что дает пользователю ощущение, что все программы работают одновременно. Происходит автоматическое и частое перемещение процессов из оперативной памяти (RAM) на диск и обратно. Помните, что это происходит не только из-за того, что работают ваши приложения, но и из-за других процессов, выполняющихся в фоновом режиме. Если Вы выполните команду "pstree" или "ps -ef", то будете удивлены, увидев огромное количество запущенных процессов. Из-за этого активность диска значительно увеличивается.
Свопинг (листование памяти): Одновременно диск требуется и для другой важной функции, называемой "виртуальной памятью". Когда система работает с большими блоками данных, либо с данными, для которых нужно громадное дисковое пространство, имеющейся оперативной памяти может оказаться недостаточно. Это может произойти в ситуациях подобных той, когда Вы пытаетесь преобразовать очень большую матрицу действительных чисел размером, скажем, 10000 x 10000. Возможно, Вы работаете с редактором изображений и обрабатываете изображения большого размера. Если вам недостаточно оперативной памяти, ОС автоматически и ловко перемещает ненужные / неиспользуемые данные на жесткий диск и, по мере необходимости, возвращает их обратно в оперативную память. Данные временно "паркуются" на жестком диске в специальном месте, которое называется "областью свопинга" (или свопингом).
Производительность вашей системы может существенно упасть в случае, если эти два явления, описанные выше, слишком часты и происходят одновременно на том же самом диске. Вы обратите внимание на отсутствие в течение длительного периода ответа от вашей системы, поскольку ей нужно восстановиться от этих двух конкурирующих между собой видов активности. В случае, если разделы размещены так, как показано на рис.1, то, что диск также используется для переключения между процессами не влияет на доступ к свопингу, поскольку свопинг находится на другом диске (и наоборот). Получается, что ваша система будет работать быстрее!
Итог
Автор ждет комментарии, вопросы и предложения от читателей данной статьи. Автор благодарит своих друзей P.S. Prasad и Suresh Ramasubramanian за помощь, которую они оказали, когда эксперименты зашли в тупик.