монтируем новый жёсткий диск в Debian

или решаем проблемы со свободным местом

Постановка задачи: подключить новый жесткий диск, создать на нём ext4 раздел и смонтировать его через fstab по UUID.

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

1. Создание нового раздела на жёстком диске

Для начала, определим имя свеже-подключённого жесткого диска в системе:

root@server:/# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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: 0x00078170

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    15988735     7993344   83  Linux
/dev/sda2        15990782    16775167      392193    5  Extended
/dev/sda5        15990784    16775167      392192   82  Linux swap / Solaris

Disk /dev/sdb: 6442 MB, 6442450944 bytes
255 heads, 63 sectors/track, 783 cylinders, total 12582912 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

Как видно, новый жёсткий диск доступен под именем /dev/sdb и не имеет еще никаких разделов (Disk /dev/sdb doesn't contain a valid partition table). Исправим это, используя cfdisk (Утилита из пакета gpart, установите её по-необходимости командой apt-get install gpart).

Далее, создадим новый раздел ext4 на нашем новом жёстком диске, который займёт всё доступное место.

root@server:/# cfdisk /dev/sdb

По-этапно, создание одного раздела размером на весь жёсткий диск выглядит так, как показано на рисунке ниже:

создание нового раздела с помощью cfdisk
рисунок 1 — создание нового раздела с помощью cfdisk
> 1.New -> 2.Primary -> 3.Specify size in MB
> 4.Write -> 5.yes
> 6.Quit

Проверим теперь наши разделы:

root@server:/# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 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: 0x00078170

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    15988735     7993344   83  Linux
/dev/sda2        15990782    16775167      392193    5  Extended
/dev/sda5        15990784    16775167      392192   82  Linux swap / Solaris

Disk /dev/sdb: 6442 MB, 6442450944 bytes
64 heads, 48 sectors/track, 4096 cylinders, total 12582912 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

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1              63    12582911     6291424+  83  Linux

2. Форматирование нового раздела в ext4

Для этого используем утилиту mkfs.ext4 из библиотеки e2fslibs для работы с файловыми системами ext2/ext3/ext4. (По-необходимости, установите пакет с помощью комманды apt-get install e2fslibs)

root@server:/# mkfs.ext4 /dev/sdb1

mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
393216 inodes, 1572856 blocks
78642 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1610612736
48 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

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

3. Создание точки монтирования и настройка монтирования в fstab, используя UUID

Ввиду того, что виртуальная машина для разработки имеет один раздел на всё, в нашем, частном случае, появилась необходимость вынести папку /home на новый жесткий диск. Для этого проделаем следующие операции от суперпользователя (root):

root@server:/# mv /home /oldhome
root@server:/# mkdir /home

Примечание: не ребутайтесь до завершения всех операций, дабы исключить возможный гемор. Кстати, в ином, чисто академическом случае — просто создайте произвольную папку mkdir /newhdd и настраивайте монтирование в неё.

Естественно, для того, чтобы настроить монтирование по UUID (Universally Unique Identifier), нам необходимо узнать этот код для нового раздела. Для этого используем утилиту blkid (пакет libblkid1):

root@server:/# blkid

/dev/sda5: UUID="0feb8a2f-6359-4cd3-a9ab-0a44857d71cc" TYPE="swap" 
/dev/sda1: UUID="b2c5503e-d2dc-49ee-8f1c-d4ed6eb90497" TYPE="ext4" 
/dev/sdb1: UUID="9d2bf5ca-68a8-47a9-8766-ac417d4b12d6" TYPE="ext4" 

Теперь, используя наш UUID=9d2bf5ca-68a8-47a9-8766-ac417d4b12d6 добавим новый диск/раздел в наш файл /etc/fstab, для того чтобы он монтировался автоматически при запуске нашей ОС:

root@server:/# echo "UUID=9d2bf5ca-68a8-47a9-8766-ac417d4b12d6 /home ext4 errors=remount-ro 0 1" >> /etc/fstab

Непосредственно для монтирования раздела "на-горячую" выполним команду:

root@server:/# mount /home

И напоследок вернём содержимое папки /oldhome на старое место:

root@server:/# mv /oldhome/* /home

Примечание: укажите именно mv /oldhome/* /home при переносе содержимого папки, чтобы перенести именно содержимое папки, а не её саму. Обязательно после переноса проверьте права на папки пользователей внутри корневой папки home, иначе у Вас могут возникнуть проблемы со входом в систему при последующей перезагрузке (доступ к папкам .ssh, если Вы используете авторизацию по ключам).

После успешного переноса, пустую папку можно удалить:

root@server:/# rmdir /oldhome 

Проверим теперь нашу структуру разделов и доступное место:

root@server:/# df -h

Файловая система                                       Размер Использовано  Дост Использовано% Cмонтировано в
rootfs                                                   7,6G         5,3G  1,9G           74% /
udev                                                      10M            0   10M            0% /dev
tmpfs                                                    151M         644K  151M            1% /run
/dev/disk/by-uuid/b2c5503e-d2dc-49ee-8f1c-d4ed6eb90497   7,6G         5,3G  1,9G           74% /
tmpfs                                                    5,0M            0  5,0M            0% /run/lock
tmpfs                                                    378M         268K  378M            1% /run/shm
/dev/disk/by-uuid/9d2bf5ca-68a8-47a9-8766-ac417d4b12d6   6,0G         1,8G  3,9G           31% /home

Всё настроено верно и проблема со свободным местом успешно решена. Теперь можно, перекрестясь, перезапустить систему и убедиться что всё работает как должно!

Комментарии

Комментарии отключены, сожалеем