Ajouter un disque dur sur un VPS

J'ai un VPS chez OVH sur lequel tourne mon instance OwnCloud. Comme j'étais à l'étroit au niveau espace disque et qu'OVH permet maintenant de commander un disque additionnel, je me suis lancé. Je vais suivre la procédure d'OVH. J'ai aussi posté un message sur debian-fr.org pour être sûr de faire ça dans les règles.

Petite remarque : Voici les étapes que j'ai suivies en y allant “pas à pas”. Il y a moyen de faire plus court et d'éviter des étapes inutiles. Lisez bien jusqu'au bout avant de commencer.

C'est parti ! Une fois le disque commandé via l'interface d'OVH, on peut le voir sur le VPS :

# fdisk -l
 
Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 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
Disklabel type: dos
Disk identifier: 0x00000000
 
Device     Boot Start      End  Sectors Size Id Type
/dev/vda1  *     2048 20971519 20969472  10G 83 Linux
 
Disk /dev/vdb: 50 GiB, 53687091200 bytes, 104857600 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

Il n'a pas encore de partition(s). On va en créer une avec fdisk :

# fdisk /dev/vdb
 
Welcome to fdisk (util-linux 2.25.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
 
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x78fc199b.
 
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-104857599, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-104857599, default 104857599): 
 
Created a new partition 1 of type 'Linux' and of size 50 GiB.
 
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

On peut voir la différence avec un fdisk -l :

# fdisk -l
(...)
Disk /dev/vdb: 50 GiB, 53687091200 bytes, 104857600 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
Disklabel type: dos
Disk identifier: 0x78fc199b
 
Device     Boot Start       End   Sectors Size Id Type
/dev/vdb1        2048 104857599 104855552  50G 83 Linux

On formate la partition vdb1 en ext4 avec mkfs :

# mkfs.ext4 /dev/vdb1
mke2fs 1.42.12 (29-Aug-2014)
Creating filesystem with 13106944 4k blocks and 3276800 inodes
Filesystem UUID: 5e9d2a50-54bd-47ff-8d1e-873d32991c6c
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624, 11239424
 
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

On regarde l'UUID du nouveau disque avec la commande blkid :

# blkid 
/dev/vda1: UUID="838bb60b-f760-4fe8-a3b7-b2e214f16e83" TYPE="ext3"
/dev/vdb1: UUID="5e9d2a50-54bd-47ff-8d1e-873d32991c6c" TYPE="ext4" PARTUUID="78fc199b-01"

L'UUID du nouveau disque : “5e9d2a50-54bd-47ff-8d1e-873d32991c6c”. Il faut créer le point de montage :

# mkdir /var/www/nomdedomaine/owncloud/data2

On modifie maintenant le fichier /etc/fstab pour en tenir compte et le monter au démarrage.

# vim /etc/fstab
proc                                        /proc                               proc  nodev,noexec,nosuid           0   0               
/dev/vda1                                   /                                   ext3  errors=remount-ro             0   1
UUID="5e9d2a50-54bd-47ff-8d1e-873d32991c6c" /var/www/nomdedomaine/owncloud/data2 ext4  defaults,errors=remount-ro    0   1

On vérifie :

# mount -a
# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=249154,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=401908k,mode=755)
/dev/vda1 on / type ext3 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,size=200956k,mode=700,uid=1001,gid=1000)
/dev/vdb1 on /var/www/nomdedomaine/owncloud/data2 type ext4 (rw,relatime,errors=remount-ro,data=ordered)

Dans le dossier OwnCloud on a donc un dossier data et un dossier data2. L'objectif étant de remplacer le dossier data par le dossier data2. On commence par copier les fichiers de l'un vers l'autre.

# cp -r /var/www/nomdedomaine/owncloud/data/* /var/www/nomdedomaine/owncloud/data2/
# cp /var/www/nomdedomaine/owncloud/data/.* /var/www/nomdedomaine/owncloud/data2/

On applique les bons droits :

# chown www-data:www-data -R /var/www/nomdedomaine/owncloud/data2/

On copie le dossier data d'origine vers data-old :

# mv /var/www/nomdedomaine/owncloud/data/ /var/www/nomdedomaine/owncloud/data-old/

On démonte la partition de 50Gio, on la déplace (en changeant le nom du dossier et le fichier fstab)

# umount /var/www/nomdedomaine/owncloud/data2
# mv /var/www/nomdedomaine/owncloud/data2/ /var/www/nomdedomaine/owncloud/data/
# vim /etc/fstab
proc                                        /proc                               proc  nodev,noexec,nosuid           0   0
/dev/vda1                                   /                                   ext3  errors=remount-ro             0   1
UUID="5e9d2a50-54bd-47ff-8d1e-873d32991c6c" /var/www/nomdedomaine/owncloud/data  ext4  defaults,errors=remount-ro    0   1

On teste :

# mount -a
# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=249154,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=401908k,mode=755)
/dev/vda1 on / type ext3 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,size=200956k,mode=700,uid=1001,gid=1000)
/dev/vdb1 on /var/www/nomdedomaine/owncloud/data type ext4 (rw,relatime,errors=remount-ro,data=ordered)

Ça semble bon, mon instance d'owncloud continue de bien fonctionner. On nettoie :

# rm -r /var/www/nomdedomaine/owncloud/data-old/