Як додати на сервер NVMe-диск? 

Тип диска NVMe доступний тільки на нових тарифах NVMe VPS. Придбавши цей сервер, у вас є можливість активувати собі високошвидкісне сховище. Призначено для дуже великих баз даних NoSQL (наприклад, MongoDB, Elasticsearch, TimeScaleDB); системи аналітики і сховища даних.

Встановіть інструменти

Щоб розбити диск на розділи, скористаємося утилітою parted. У більшості випадків вона уже встановлена на сервері.

Якщо ви використовуєте сервер Ubuntu або Debian, ви можете встановити його, набравши:

apt-get install parted

Якщо ви використовуєте сервер CentOS або Fedora, ви можете встановити його, набравши:

yum install parted

Визначте новий диск в системі

Перш ніж налаштовувати диск, нам необхідно правильно ідентифікувати його на сервері.

Для цього використовуємо наступну команду:

parted -l | grep Error

Відповідь буде наступною

Error: /dev/nvme0n1: unrecognised disk label

Ви також можете використовувати команду lsblk і знайти диск правильного розміру, який не має пов’язаних розділів:

lsblk
root@test:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 30G 0 disk
└─vda1 252:1 0 30G 0 part /
nvme0n1 259:1 0 30G 0 disk

Коли ви знаєте ім’я, яке ядро ​​присвоїло вашому диску, ви можете розбити його на розділи.

root @ test: ~ # parted /dev/nvme0n1 mklabel gpt

Після вибору формату ви можете створити розділ, що охоплює весь диск, набравши:

root @ test: ~ # parted -a opt /dev/nvme0n1 mkpart ext4 0% 100%

Якщо ми перевіримо lsblk, ми повинні побачити доступний новий розділ:

root@test:~# lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 252:0 0 30G 0 disk
└─vda1 252:1 0 30G 0 part /
nvme0n1  259:1 0 30G 0 disk
└─nvme0n1p1 259:3 0 30G 0 part

Створіть файлову систему на новому розділі

Для цього будемо використовувати утиліту mkfs.ext4

root@test: ~ # mkfs.ext4 -L nvme /dev/nvme0n1p1
mke2fs 1.45.5 (07 -Jan-2020)
Discarding device blocks: done
Creating filesystem with 7863808 4k blocks and 1966080 inodes
Filesystem UUID: 50d5f8b7-d794-41cf-9ae8-d1d1f8b53add
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Якщо ви хочете змінити мітку розділу пізніше, використайте команду: e2label

 

root@test: ~ # e2label /dev/nvme0n1p1 newlabel

Ви можете побачити всі способи ідентифікувати свій розділ за допомогою lsblk. Ми хочемо знайти ім’я, мітку і UUID розділу.

root@test: ~ # lsblk --fs
NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
vda
└─vda1 ext4 root ed61e67e-7605-4383-ac16-fe54ee2ede87 26G 7% /
nvme0n1
└─nvme0n1p1 ext4 newlabel 50d5f8b7-d794-41cf-9ae8-d1d1f8b53add

Змонтуйте нову файлову систему

Тепер ми можемо змонтувати файлову систему для використання.

root@test: ~ # mkdir -p /var/lib/mysql
root@test:~# mount -o defaults /dev/nvme0n1p1 /var/lib/mysql
root@test:~# fdisk -l
Disk /dev/vda: 30 GiB, 32212254720 bytes, 62914560 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: 0x941390d7
Device Boot Start End Sectors Size Id Type
/dev/vda1 *  2048 62914559 62912512 30G 83 Linux 
Disk /dev/nvme0n1: 30 GiB, 32212254720 bytes, 62914560 sectors 
Disk model: SAMSUNG MZPLJ3T2HBJR-00007 
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: gpt
Disk identifier: BA6956DF-1E18-4623-AF5E-4ACB6E5FE6A0
Device Start End Sectors Size Type 
/dev/nvme0n1p1 2048 62912511 62910464 30G Linux filesystem


Змонтований розділ обов'язково потрібно додати в файл /etc/fstab 
для прикладу: UUID="50d5f8b7-d794-41cf-9ae8-d1d1f8b53add" /var/lib/mysql auto errors=remount-ro,noatime,nodiratime,nodev,nofail 0 2 
де 50d5f8b7-d794-41cf-9ae8-d1d1f8b53add - ідентифікатор диску
/var/lib/mysql - розділ в який монтували диск

Тестуємо швидкість дисків

root@test:/# sudo dd if=/dev/zero of=/var/lib/mysql/test1.img bs=1G count=1 oflag=dsync 
1+0 records in 
1+0 records out 
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.996802 s, 1.1 GB/s 
root@test:~# sudo dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync 
1+0 records in 
1+0 records out 
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.34612 s, 201 MB/s

У першому випадку швидкість запису дорівнює 1.1 GB / s, що в 8 разів швидше стандартного SSD диска.

Ви змонтували даний диск під розділ  var/lib/mysql і тим самим збільшили швидкість роботи сервера баз даних. Можете таким же способом змонтувати диск в інший потрібний вам розділ (наприклад /mnt/data).