Linux LVM

Как создал группу lvm

1. Ставим метку на диск 8e

# fdisk /dev/sda

Command (m for help): p

Disk /dev/hdс: 3243 MB, 3243663360 bytes
128 heads, 63 sectors/track, 785 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes

Device Boot      Start  End   Blocks       Id     System
/dev/hdb1          1    20    168682+      82     Linux swap
/dev/hdb2          21   785   3165088+     b      Win95 FAT32

Command (m for help): t
Selected partition 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p
Disk /dev/hdс: 3243 MB, 3243663360 bytes
128 heads, 63 sectors/track, 785 cylinders
Units = cylinders of 8064 * 512 = 4128768 bytes

Device Boot      Start  End    Blocks   Id  System
/dev/hdb1          1    20    168682+   82  Linux swap
/dev/hdb2          21   785   3165088+  8e  Linux LVM

Command (m for help): w

The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

2. #pvcreate /dev/hda4

3. Теперь запускаем программу vgscan, которая отыщет всё разделы с идентификатором 8е и создаст конфигурационные файлы /etc/lvmtab и /etc/lvmtab.d.
# vgscan

4. создаем группу
#vgcreate -s 32 test  /dev/sda1

Теперь pvscan сообщит, что тома активированы.
# pvscan

pvscan — reading all physical volumes (this may take a while…)
pvscan — ACTIVE   PV «/dev/sda1» of VG «test» [1.22 GB / 1.22 GB free]

5. Создаем логический том размером 1Гб

#lvcreate -L 1G -n lvm_usr test
или на все свободное место
#lvcreate -L +100%FREE -n lvm_usr test

Команда lvdisplay выдаст более подробную информацию. Обратите внимание на новое месторасположение вроде /dev/test/lvm_usr, именно с ними придется работать в дальнейшем.

И в последок, создаем в получившимся разделе ФС с помощью любой программы и монтируем как обычный диск.

Как я добавлял новый диск в lvm группу:

на диске создал с помощью fdisk раздел, форматнул в нужную ФС, поставил метку 8e (linux LVM)

дальше
pvcreate /dev/новый_hdd  —  pvcreate /dev/sda1
добавляем в группу
vgextend vol_group /dev/новый_hdd  — vgextend datavg /dev/sda1

дальше меняем размер группы с учетом свободного места нового диска с помощью:
lvextend -L+300G /dev/group /LogVol00
и делаем всему этому ресайз с помощью
resize2fs /dev/group /LogVol00

Как я компилировал ядро на Mandriva

Этапы сборки ядра

  1. Скачивание исходников ядра.
  2. Подготовка каталогов с исходниками ядра.
  3. Конфигурирование ядра.
  4. Компиляция ядра и установка модулей.
  5. Перемещение ядра.
  6. Настройка и запуск lilo.
  7. Настройка и запуск Grub.

Для нормальной сборки и компиляции ядра следует выполнять все этапы по порядку.

1. Скачиваем исходники ядра:

Качаем себе новое ядро с сайта http://kernel.org/ и распаковываем его в каталог /usr/src/linux-2.X.X, где 2.X.X — версия нового ядра) с помощью
tar xzvf linux-2.X.X.tar.gz
или
bzcat linux-2.X.X.tar.bz2 | tar xv
После этого создай связь с каталогом linux (ln -s linux-2.X.X linux). Если каталог linux-2.X.X уже существует, то его предварительно надо удалить.

2. Подготовка каталогов с исходниками ядра.

Для начала компиляции нового ядра выполни команду:

make mrproper

3. Конфигурирование ядра.

На этом этапе придется выбрать опции, которые будут использоваться в новом
ядре. Не обязательно вникать в подробности массы опций. В большинстве из них
можно воспользоваться настройками по умолчанию.

Существуют три метода создания файла конфигурации, используемого при сборке
нового ядра:

  1. make config
  2. make menuconfig
  3. make xconfig

make config — это наиболее простой пошаговый сценарий.

make menuconfig — это более удобный метод (требует наличие ncurses).

make xconfig — это графическая утилита для настройки ядра. Перед тем, как ей
воспользоваться необходимо перейти в среду X Window.

Для каждой из представленных опций есть 3 установочных параметра: y,m,n.
y(yes) — Включает или встраивает опцию в ядро.
m(module) — Создает для выбранной опции загружаемый в динамическом режиме
модуль (без reboot’a). Существует не для всех опций.
n(no) — Отключает поддержку опции.

Для использования конфигуратора на базе X в системе должны буть установлены
библиотеки TCL/TK.

4. Компиляция ядра и установка модулей.

В свою очередь этот этап делится на шаги:
1 Подготовка

-> make dep
-> make clean

2 Непосредственно сборка ядра

-> make bzImage|bzdisk|bzlilo
3 Сборка и установка модулей

-> make modules
-> make modules_install
Первый из них — make dep и make clean — являются типа подготовкой. После
выполнения make dep создаются файлы зависимостей (.depend), которые располаются
в каждом из подкаталогов древа исходных кодов. Если нет нарушений в расположении
компонентов древа, то процесс пройдет спокойно. Далее используется команда
make clean, которая удалит все лишние (вспомогательные) файлы, созданные от
предыдущих процессов компиляции.

Далее идет шаг, при котором необходимо непосредственно собрать ядро. Для сборки
ядра придется выбрать одну из 3-х команд: make bzImage, make bzdisk или make
bzlilo. Каждая из команд выполняет фактически одну и ту-же операцию, только
две последние выполняют одно дополнительное действие.

Рассмотрим подробнее каждую из команд:

make bzImage — стандартная операция, при которой будет только скомпилировано
ядро. Если все прошло без проблем, то созданное в результате компиляции ядро
будет расположено в каталоге /usr/src/linux/arch/i386/boot. В этом случае ядру
присваивается имя bzImage. Диспетчер загрузки lilo|grub должен найти это ядро и
загрузить его. Для этого достаточно скопировать файл bzImage и выполнить команду
lilo для переустановки диспетчера загрузки.

make bzdisk — этот метод позволяет выполнить практически ту-же задачу, что и
bzImage, но после завершения компиляции будет автоматически выполнено
копирование нового ядра на дискету. В дальнейшем эту дискету можно будет
использовать для загрузки системы.

make bzlilo — это рекомендуемый метод формирования и инсталляции нового ядра,
требующий предварительной подготовки lilo. При использовании этого метода
map-файл ядра не перемещается в другой каталог. Более того новое ядро может быть
записано поверх уже существующего, причем записано с ошибками, поэтому его
использование не рекомендуется. Этот метод очень похож на bzImage и отличается
только наличием дополнительной операцией, которая выполняется после совершения
компиляции ядра. После компиляции ядра происходит копирование файлов созданного
ядра в каталог / в качестве vmlinuz (при этом сохраняется резервная копия
файла vmlinuz), затем выполняется команда lilo, в результате чего происходит
переустановка диспетчера загрузки (и распознавание нового ядра).

Третим шагом является сборка и установка модулей ядра.

Этот процесс выполняется с помощью 2-х команд make modules и
make modules_install. Название команды make modules говорит само за себя: при
выполнении этой команды происходит сборка модулей, которые соответствуют ядру,
созданному на предыдущем этапе. Команда make modules_install, в сою очередь,
перемещает созданные модули из исходного древа ядра в каталог
/lib/modules/<kernel-version>/kernel/<module-type>. В качестве типа модуля
(<module-type>) используется имя категории, к которой относятся созданные
модули (Например: block, misk, net, pcmcia, etc…).

5. Перемещение ядра.

После завершения процесса сборки тебе необходимо инсталлировать как ядро, так
и его map-файл в каталог, где они будут постоянно находиться (/boot).
Скопируй (или перемести) файл System.map в каталог /boot, добавив номер версии
ядра в конец строки:

cp System.map /boot/System.map-2.X.X

Затем точно так-же скопируй (или перемести) и само ядро:

cp arch/i386/boot/bzImage /boot/bzImage-2.X.X
Когда ядро и map-файл будут на своем новом месте жительства тебе останется
выполнить только два коротких действия, после которых ты сможешь перезагрузиться
уже с новым ядром (или со старым, если возникнут траблы =)).

6. Настройка и запуск lilo.

Диспетчер загрузки lilo дает возможность определить несколько образов загрузки.
Вставив новый раздел образа в файло /etc/lilo.conf можно получить дополнительный
образ загрузки. Для этого необходимо продублировать последние 6 строк файла и
изменить адрес до загружаемого ядра.

старый lilo.conf, последние 6 строк)

image = /boot/<Уже стоящее в системе ядро>
lable = linux
root = /dev/hda1
vga = 274
read-only
append = «debug=2 noapic nosmp»
Покоцано (Модифицированный lilo.conf с )

image = /boot/<Уже стоящее в системе ядро>
lable = linux.orig
root = /dev/hda1
vga = 274
read-only
append = «debug=2 noapic nosmp»
image = /boot/<Новое ядро>
lable = linux
root = /dev/hda1
vga = 274
read-only
append = «debug=2 noapic nosmp»
Обрати внимание на lable = linux.orig (это метка старого ядра).
После конфигурации файла /etc/lilo.conf следует пеановить диспетчер
начальной загрузки системы. Для этого выполни следующие команды:

# lilo
Added linux *
Added linux.orig
Все. Если все прошло без ошибок, то пора перезагрузить систему.
В случае, если новое ядро является причиной некорректной работы системы во
время ее загрузки, то ты можешь воспользоваться исходным ядром. Для загрузки
системы необходимо ввести имя метка желаемого образа загрузки. Чтобы вывести
на экран перечень доступных меток следует нажать на клавишу <Tab>.

7. Настройка и запуск Grub.

Прописываем новое ядров конфиг (/boot/grub/menu.lst)

title linux 2.6.28
kernel (hd0,4)/boot/bzImage-2.6.28 BOOT_IMAGE=linux_2.6.28 root=/dev/hda5 resume=/dev/hda1 splash=silent vga=788
initrd (hd0,4)/boot/initrd-2.6.28.img

т.к. без initrd у меня не запускалось, создаем его так:

/sbin/mkinitrd /boot/initrd-2.х.хх.img 2.х.хх

Теперь можно перезагружаться и загружать новое ядро.
все… Надеюсь что все вышеописанное в статье вам как-либо образом поможет…

Дополнение.

По этой инструкции обновлял ядро на CentOS 5.5 но при загрузке выдавало что не может смонтировать /dev/root (mount: could not find filesystem ‘/dev/root’)

Решение :

в конфиг добавлена опция

CONFIG_SYSFS_DEPRECATED_V2=y