вторник, 20 ноября 2012 г.

Переименовать md-устройство


Увидел такую картину на новом сервере:
[root@proteus ~]# cat /proc/mdstat 
Personalities : [raid1] 
md2 : active raid1 sda2[1] sdb2[2]
      157285304 blocks super 1.2 [2/2] [UU]
      
md127 : active (auto-read-only) raid1 sda3[1] sdb3[0]
      1795714000 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda1[1] sdb1[0]
      511936 blocks [2/2] [UU]
      
unused devices: <none>
[root@proteus ~]# cat /etc/mdadm.conf 
ARRAY /dev/md1 UUID=caa9382c:0099a987:4fbed893:ae34e34e
ARRAY /dev/md/2 metadata=1.2 UUID=68e6b327:6a4816f8:9bbb1e28:6c4a224b name=L146:2

Остановить устройство:

[root@proteus ~]# mdadm --stop /dev/md127 
mdadm: stopped /dev/md127

Собрать заново, используя метаданные на дисках:

[root@proteus ~]# mdadm --assemble /dev/md3 /dev/sda3 /dev/sdb3 --name=3 --update=name
mdadm: /dev/md3 has been started with 2 drives.

Проверка:
[root@proteus ~]# cat /proc/mdstat 
Personalities : [raid1] 
md3 : active raid1 sdb3[0] sda3[1]
      1795714000 blocks super 1.2 [2/2] [UU]
      
md2 : active raid1 sda2[1] sdb2[2]
      157285304 blocks super 1.2 [2/2] [UU]
      
md1 : active raid1 sda1[1] sdb1[0]
      511936 blocks [2/2] [UU]
      
unused devices: <none>

Записать в файл /etc/mdadm.conf:

[root@proteus ~]# mdadm --examine --scan > /etc/mdadm.conf 
[root@proteus ~]# cat /etc/mdadm.conf 
ARRAY /dev/md1 UUID=caa9382c:0099a987:4fbed893:ae34e34e
ARRAY /dev/md/2 metadata=1.2 UUID=68e6b327:6a4816f8:9bbb1e28:6c4a224b name=L146:2
ARRAY /dev/md/3 metadata=1.2 UUID=84bd3509:99237831:c00651e9:04d792ba name=proteus:3

Обновить initramfs:
[root@proteus ~]# cd /boot
[root@proteus ~]# mv initramfs-2.6.32-279.14.1.el6.x86_64.img initramfs-2.6.32-279.14.1.el6.x86_64.img.bak
[root@proteus ~]# dracut /boot/initramfs-2.6.32-279.14.1.el6.x86_64.img $(uname -r)

Контрольная перезагрузка:
[root@proteus ~]# reboot

P.S.: Если вы увидели «active (auto-read-only)» в файле /proc/mdstat, то, возможно, вы просто ничего не записывали в этот массив. Например, после монтирования раздела и любых изменений в примонтированном каталоге, статус автоматически меняется.



The file /boot/grub/stage1 not read correctly.


Сегодня пришлось помучится с установкой нового сервера под ОС CentOS6. На хостинге имелась возможность заказать бесплатную установку ОС. Сервер с 2-мя дисками по 2Т. Разбиение после автоустановки оказалось не подходящим мягко говоря:

# fdisk -l
Диск /dev/sda: 2000.4 ГБ, 2000398934016 байт
******
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *         524      243201  1949311035   83  Linux
/dev/sda2               1         523     4200966   82  Linux своп / Solaris
Пункты таблицы разделов расположены не в дисковом порядке

Диск /dev/sdb: 2000.4 ГБ, 2000398934016 байт
*******

Разбил как нужно sdb:
# fdisk -l /dev/sdb
Диск /dev/sdb: 2000.4 ГБ, 2000398934016 байт
******
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1               1          64      512000   83  Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sdb2              64       19646   157286400   83  Linux
Раздел 2 не заканчивается на границе цилиндра.

Создал файловые системы, подмонтировал, скопировал данные с sda.
При попытке установить загрузчик grub на sdb:

# grub-install --recheck --no-floppy /dev/sdb
Probing devices to guess BIOS drives. This may take a long time.
The file /boot/grub/stage1 not read correctly.

Если делать из консоли grub:
# grub
grub> root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... no

Error 15t: File not found
grub> root (hd1,0)
root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
 Checking if "/boot/grub/stage1" exists... no
 Checking if "/grub/stage1" exists... yes
 Checking if "/grub/stage2" exists... yes
 Checking if "/grub/e2fs_stage1_5" exists... yes
 Running "embed /grub/e2fs_stage1_5 (hd1)"...  27 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd1) (hd1)1+27 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.

Файл /boot/grub/stage1 находится на диске. Что за хрень?
Оказывается, старый grub не поддерживает 256 битные inode, которые были введены для легкой миграции на ext4.
Проверить размер инод на файловой системе можно так:
# tune2fs -l /dev/sda1 | grep -i 'inode size'
Inode size:               256

Решение - отформатировать заново раздел с 128-битными inode.
# mkfs.ext3 -I 128 /dev/sda1

Поскольку данные я скопировал на sdb, форматировал sda спокойно. )

понедельник, 19 ноября 2012 г.

Gentoo и "ImportError: No module named setuptools"

При попытке установить rdiff-backup (emerge rdiff-backup-1.2.8-r1.ebuild) вылезла такая ошибка:
*****

  File "setup.py", line 4, in <module>
    from setuptools import setup, Extension

ImportError: No module named setuptools
****
Полностью вывод ошибки копировать не буду потому как он большой. В глаза бросилась именно вышеуказанное сообщение. В Gentoo я новичок, как и в Python. Пришлось гуглить, пока не нашел действенный рецепт на каком-то точно не гентушном форуме. Запуск команды python-updater, которая находит и перестраивает проблемные пакеты появившиеся после обновления версии Python, решает проблему. Что за обновление Python было не скажу потому как зашел на этот хост первый раз и нужно было срочно установить такой пакет. Собственно, все, заметка для себя - вдруг придется зайти куда-то, где обновили Python и поломались пару пакетов. ))