Рубрики

Лучшие статьи

Ubuntu перенос на другой HDD

Опубликовал 24 июля 2011 в рубрике Ubuntu. Комментарии: Комментариев нет   Просмотров: 980 просмотров

Ubuntu перенос на другой HDDНа системном диске, где установлена Ubuntu с кучей софта начались проблемы с чтением. периодически в dmesg сыпется информация, что определённый блок не может быть прочитан, ошибки чтения и прочая нехорошая история. Полез смотреть SMART этого диска и увидел такую картину

5 Reallocated_Sector_Ct   0×0033   099   099   036    Pre-fail  Always       -       35

35 переназначенных секторов, не есть гуд. Такое жесткий диск желательно заменить, тем более, если на нём стоит Ubuntu. Почеасв репу, задумал перенос Ubuntu на другой HDD. Всё с нуля ставить желания нет никакого, да и зачем, если есть возможность безболезненно переноса.

Первым делом определим на каком HDD установлена Ubuntu и на какой будем переносить. Покажу свой df

Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda3             1,9G  369M  1,5G  21% /
tmpfs                 2,0G     0  2,0G   0% /lib/init/rw
udev                  2,0G  144K  2,0G   1% /dev
tmpfs                 2,0G     0  2,0G   0% /dev/shm
/dev/sda1              61M   19M   40M  33% /boot
/dev/sda6             284G   54G  216G  20% /usr
/dev/sda5             7,6G  972M  6,2G  14% /var
array                 5,7T  4,2T  1,6T  74% /usr/home

Как видно системные диски это /dev/sda1 – раздел /boot. /dev/sda3 – корневой раздел /. /dev/sda5 – раздел для /var и последний /dev/sda6 – всё оставшееся место диска под /usr.

Новый HDD у меня появился под буквой /dev/sdi

brw-rw—- 1 root disk 8, 128 Июл 23 11:19 /dev/sdi

Для переноса Ubuntu на этот HDD первым делом его нужно разбить. Можно по старинки с помощью fdisk, но мне больше подуше псевдографический cfdisk. Если не установлен, то инсталлируем

apt-get install cfdisk

Запускаем с параметром имя диска

cfdisk /dev/sdi

Если диск уже был разбит до этого и cfdisk ругается на неправильную разметку, помогает простой приём. Затираем таблицу разделов при помощи стандартной утилиты dd

dd if=/dev/zero of=/dev/sdi count=1024

Разбиваем новый HDD в cfdisk примерно как и старый. Разделы можно сделать и поменьше, главное чтоб всё файло уместилось. У меня получилась такая картина

  • /dev/sdi1 – /boot. Размер 64мб
  • /dev/sdi2 – swap размер 1гб
  • /dev/sdi3 – корень / размеров 2гб
  • /dev/sdi5 – /var 5гб
  • /dev/sdi6 – /usr всё остальное.

Создадим файловые системы на новых разделах.

mkfs.ext2 /dev/sdi1
mkfs.ext4 /dev/sdi3
mkfs.ext4 /dev/sdi5
mkfs.ext4 /dev/sdi6
mkswap /dev/sdi2

Для раздела /boot сделал нежурналируемую ext2, т.к. оттуда будет грузиться только ядро и образ initrd. Его вообще можно монтировать в read-only и изменять только, когда пересобираем ядро.

Следущий этап переноса Ubuntu на другой HDD – монтируем новоиспеченные разделы во временные папки. В моём случае и просто смонтировал в /mnt. Предварительно создаём там папки

mkdir /mnt/root

И монтируем всё это дело в соответствующие директории

mount /dev/sdi2 /mnt/root
mkdir /mnt/root/boot
mkdir /mnt/root/var
mkdir /mnt/root/usr
mount /dev/sdi1 /mnt/root/boot
mount /dev/sdi5 /mnt/root/var
mount /dev/sdi6 /mnt/root/usr

Всё примонтировали, теперь переносим все файлы с рабочей системы в эти папки. Это желательно делать в single-user mode, чтобы работающие программы в процессе ничего нового не записали. Копировать желательно с параметрами -ax с сохранением всех прав и симлинков.

cp -ax /boot /mnt/root/boot
cp -ax / /mnt/root
cp -ax /var /mnt/root/var
cp -ax /usr /mnt/root/usr

Как только скопировалось переходим к следущему шагу переноса Ubuntu на новый HDD. chroot в новоиспеченную систему для установки загрузчика и GRUB2 и правки fstab

chroot /mnt/root /bin/bash

Первым делом правим /etc/fstab. Можно по старинке просто заменить букву диска. Сменить /dev/sda1 на /dev/sdi1, но если переключите новый диск в другой sata разъём, буква у него уже будет не /dev/sdi, а что-нибудь другое. Поэтому поступить умнее и будем монтировать по UUID. Это уникальный идентификатор разделов. Посмотреть его можно утилитой blkid

blkid
/dev/sdi1: UUID=»cbfd4121-36e8-499a-bfe8-d7b45ea580d0" TYPE=»ext4"

Вот это ключ копируем без кавычек естественно и вставляем в fstab. Так для каждого раздела. В итоге получается нечто подобное

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=0ef08bb2-d7a2-4246-a6f8-0fbf9663908a       swap    swap    defaults        0       0
proc            /proc           proc    defaults        0       0
# / was on /dev/sda2 during installation
UUID=c4c3a824-e30e-4a33-a1cb-0887c8b85acb /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=e9f6ecb3-ade6-4874-a04f-f51ffb0b62c1 /boot           ext2    noatime         0       2
# /usr was on /dev/sda6 during installation
UUID=fc266a1f-6638-4ed7-9c75-0e24d62ebdf6 /usr            ext4    defaults        0       2
# /var was on /dev/sda5 during installation
UUID=f9d75dce-0feb-4968-b728-0af5db63a882 /var            ext4    defaults        0       2

С fstab разобрались. На очереди самое интересное – установка загрузчика GRUB2. Без этого шага ничего грузиться не будет. Первым делом создадим новую карту устройств

grub-mkdevicemap

Эта команда создаст файл /boot/grub/device.map

cat /boot/grub/device.map
(hd0)   /dev/disk/by-id/ata-Hitachi_HDS721010CLA332_JP2911HQ236EUA
(hd1)   /dev/disk/by-id/ata-SAMSUNG_HD753LJ_S13UJ1CQ307386
(hd2)   /dev/disk/by-id/ata-WDC_WD5001ABYS-01YNA0_WD-WCAS85181468
(hd3)   /dev/disk/by-id/ata-WDC_WD20EARS-00MVWB0_WD-WMAZA1927574
(hd4)   /dev/disk/by-id/ata-WDC_WD10EARS-00Y5B1_WD-WCAV55974202
(hd5)   /dev/disk/by-id/ata-ST3750330AS_5QK0PC2S
(hd6)   /dev/disk/by-id/ata-ST3320620A_5QF34GWE
(hd7)   /dev/disk/by-id/ata-ST3320620A_9QF62CCB
(hd8)   /dev/disk/by-id/ata-ST3750330AS_5QK0PFBY

У меня дисков много, поэтому и записей столько.

На следущем шаге у меня был небольшой затык. GRUB падал в Segmentation Fault. Если у Вас будет также, просто обновите его до последней версии из репозиториев.

grub-mkconfig > /boot/grub/grub.cfg

И инсталлируем загрузчик

grub-install /dev/sdi

Параметр указываем сам новый HDD, на который и делали перенос Ubuntu. Не раздел, а сам диск.

После данных манипуляций можно отключать старый битый HDD и ставить загрузку в биосе материнской платы с нового HDD. Всё должно стартануть без вопросов.

Поделись:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • MySpace
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • LinkedIn
  • Technorati
  • del.icio.us
  • Digg
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru
  • Сто закладок
  • Blogger
  • Блог Li.ру
  • Блог Я.ру
  • Одноклассники

Метки:
1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Загрузка ... Загрузка ...



Оставить комментарий или два

RSS

rss Подпишитесь на RSS для получения обновлений.

Add to Google Reader or Homepage

Подписаться на рассылку E-Mail:

Опрос

Статьи на какую тему Вам более интересны?

Просмотреть результаты

Загрузка ... Загрузка ...