Ubuntu: добавление нового жесткого диска и перенос /home

Автор: | 08/16/2014
 

ubuntu_logo_130Пример выполняется на:

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.1 LTS
Release: 14.04
Codename: trusty

Проверяем текущю конфигурацию:

# lshw -C disk
  *-disk:0
      description: ATA Disk
      product: WDC WD5000AZRX-0
      vendor: Western Digital
      physical id: 0.0.0
      bus info: scsi@0:0.0.0
      logical name: /dev/sda
      version: 01.0
      serial: WD-WMC1U8368164
      size: 465GiB (500GB)
      capabilities: partitioned partitioned:dos
      configuration: ansiversion=5 sectorsize=4096 signature=00002851
  *-disk:1
      description: ATA Disk
      product: WDC WD5000AAKX-6
      vendor: Western Digital
      physical id: 0.1.0
      bus info: scsi@0:0.1.0
      logical name: /dev/sdb
      version: 18.0
      serial: WD-WCC2EKL0MYYR
      size: 465GiB (500GB)
      configuration: ansiversion=5 sectorsize=512
  *-cdrom
      description: DVD writer
      product: DVD RW AD-5260S
      vendor: Optiarc
      physical id: 0.0.0
      bus info: scsi@1:0.0.0
      logical name: /dev/cdrom
      logical name: /dev/sr0
      version: 1.00
      capabilities: removable audio cd-r cd-rw dvd dvd-r
      configuration: ansiversion=5 status=nodisc

Далее, с помощью fdisk проверим таблицу разделов на дисках:

# fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00002851

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sda2 206848 204802047 102297600 7 HPFS/NTFS/exFAT
/dev/sda4 204804094 976771071 385983489 f W95 Ext'd (LBA)
Partition 4 does not start on physical sector boundary.
/dev/sda5 307204096 976771071 334783488 7 HPFS/NTFS/exFAT
/dev/sda6 298889216 307195903 4153344 82 Linux swap / Solaris
/dev/sda7 204804096 298887167 47041536 83 Linux

Partition table entries are not in disk order

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Как видим – сам fdisk нам сообщает, что диск sdb не имеет разделов – это и есть новый диск.

Создадим новый раздел:

# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x6b48f220.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): m // для вывода всех опций
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): n // создаём новый раздел
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p // указываем primary раздел
Partition number (1-4, default 1):  // далее всё можно оставить по-умолчанию, т.к. на этом диске будет один раздел под /home
Using default value 1
First sector (2048-976773167, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-976773167, default 976773167):
Using default value 976773167

Command (m for help): w // записываем изменения на диск
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Прсомотрим диск теперь:

# fdisk -l /dev/sdb

Disk /dev/sdb: 500.1 GB, 500107862016 bytes
81 heads, 63 sectors/track, 191411 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6b48f220

Device Boot Start End Blocks Id System
/dev/sdb1 2048 976773167 488385560 83 Linux

Есть новый раздел, тип 83 Linux.

Проверим, какой тип файловой системы у нас на основном диске:

# lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
NAME FSTYPE SIZE MOUNTPOINT LABEL
sda 465,8G
├─sda1 ntfs 100M Зарезервировано системой
├─sda2 ntfs 97,6G
├─sda4 1K
├─sda5 ntfs 319,3G Main
├─sda6 swap 4G [SWAP]
└─sda7 ext4 44,9G /
sdb 465,8G
└─sdb1 465,8G
sr0 1024M

└─sda7 ext4  – это и есть основной раздел.

Форматируем новый раздел под EXT4 (НЕ перепутайте раздел, который надо отформатировать с уже имеющимся разделом! Мы создали /dev/sdb1 – его и надо форматировать):

# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (4-Feb-2014)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
30531584 inodes, 122096390 blocks
6104819 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
3727 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: 0/3727

Проверим:

# blkid -o value -s TYPE /dev/sdb1
ext4

Монтируем диск:

# mkdir /mnt/hdd2
# chmod 777 /mnt/hdd2

В случае ошибки:

# mount -t ext4 /dev/sdb1 /mnt/hdd2/
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

Проверьте лог /var/log/syslog, если есть записи вроде:

Aug 16 20:54:06 setevoy-main kernel: [ 653.261669] ata1.01: status: { DRDY ERR }
Aug 16 20:54:06 setevoy-main kernel: [ 653.261673] ata1.01: error: { ICRC ABRT }
Aug 16 20:54:06 setevoy-main kernel: [ 653.261684] ata1: soft resetting link
Aug 16 20:54:07 setevoy-main kernel: [ 653.441046] ata1.00: configured for UDMA/133
Aug 16 20:54:07 setevoy-main kernel: [ 653.456128] ata1.01: configured for UDMA/33
Aug 16 20:54:07 setevoy-main kernel: [ 653.456138] ata1: EH complete
Aug 16 20:54:07 setevoy-main kernel: [ 653.470780] ata1.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6
Aug 16 20:54:07 setevoy-main kernel: [ 653.470788] ata1.01: BMDMA stat 0x66
Aug 16 20:54:07 setevoy-main kernel: [ 653.470794] ata1.01: failed command: WRITE DMA
Aug 16 20:54:07 setevoy-main kernel: [ 653.470804] ata1.01: cmd ca/00:70:c7:00:6c/00:00:00:00:00/f0 tag 21 dma 57344 out
Aug 16 20:54:07 setevoy-main kernel: [ 653.470804] res 51/84:60:d5:00:6c/84:00:31:00:00/f0 Emask 0x30 (host bus error)

помогло переключение на другой SATA-кабель.

Если всё прошло нормально – попробуем создать файл:

# touch /mnt/hdd2/file

# file /mnt/hdd2/file
/mnt/hdd2/file: empty

Переносим старый /home

# rsync -avx /home/ /mnt/hdd2/
...
sent 28,972,211,638 bytes received 871,223 bytes 59,310,302.68 bytes/sec
total size is 28,961,825,595 speedup is 1.00

Находим ID нового раздела:

# blkid | grep sdb1
/dev/sdb1: UUID="eccf97ab-8bb1-4792-b3d2-527b752ccfb8" TYPE="ext4"

Создаём резервуню копию fstab:

# cp /etc/fstab /etc/fstab.bkp

Добавляем строку:

UUID=eccf97ab-8bb1-4792-b3d2-527b752ccfb8 /home           ext4    defaults   0  2

Перезагружаемся:

# reboot

После перезагрузки првоеряем:

# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda7 45G 38G 4,5G 90% /
none 4,0K 0 4,0K 0% /sys/fs/cgroup
udev 2,0G 4,0K 2,0G 1% /dev
tmpfs 396M 1,4M 394M 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 2,0G 252K 2,0G 1% /run/shm
none 100M 20K 100M 1% /run/user
/dev/sdb1 459G 28G 408G 7% /home

/home на нужном разделе.

Проверяем содержимое:

# ls -l /home/
total 20
-rw-r--r-- 1 root root 0 сер 16 21:12 file
drwx------ 2 root root 16384 сер 16 21:11 lost+found
drwxr-xr-x 37 setevoy setevoy 4096 сер 16 21:32 setevoy
# ls -l /home/setevoy/
total 64
drwxrwxr-x 2 setevoy setevoy 4096 сер 15 20:40 Books
drwxr-xr-x 2 setevoy setevoy 4096 сер 16 21:37 Desktop
drwxr-xr-x 2 setevoy setevoy 4096 сер 14 20:49 Documents
drwxr-xr-x 3 setevoy setevoy 4096 сер 15 20:32 Downloads
-rw-r--r-- 1 setevoy setevoy 8980 сер 10 11:16 examples.desktop
drwxrwxr-x 3 setevoy setevoy 4096 сер 16 21:38 Games
drwxr-xr-x 2 setevoy setevoy 4096 сер 10 11:21 Music
drwxr-xr-x 4 setevoy setevoy 4096 сер 14 20:49 Pictures
lrwxrwxrwx 1 setevoy setevoy 39 сер 10 14:09 PlayOnLinux's virtual drives -> /home/setevoy/.PlayOnLinux//wineprefix/
drwxr-xr-x 2 setevoy setevoy 4096 сер 10 11:21 Public
drwxrwxr-x 3 setevoy setevoy 4096 сер 10 19:03 PycharmProjects
drwxrwxr-x 3 setevoy setevoy 4096 сер 12 21:21 scripts
drwxr-xr-x 2 setevoy setevoy 4096 сер 10 11:21 Templates
-rwxrwxr-x 1 setevoy setevoy 55 сер 12 20:36 venti
drwxr-xr-x 2 setevoy setevoy 4096 сер 10 11:21 Videos

Все файлы на месте.