Cette fois, il y avait un problème que la capacité du serveur sur site que nous gérons était serrée. Le serveur en question avait CentOS 7 pré-installé et fonctionnait tel quel. La configuration de stockage de ce serveur est
Il est devenu. Dans les paramètres préinstallés
/
sur / dev / sda1 (50 Go)/ home
sur / dev / sdb1 (6 To)Ensuite, «/ var» et «/ opt», qui contiennent des bases de données, etc., sont progressivement devenus gras et ont rendu «/ dev / sda1» serré, et une erreur de serveur a commencé à se produire.
De plus, / home
contient la source de la page Web et des données personnelles, mais il n'est pas utilisé au plus 1 To, il semble donc peu probable que cela augmente rapidement.
J'ai donc décidé de déplacer / var
, / opt
de / dev / sda
vers / dev / sdb
.
À ce moment-là
/ dev / sdb1
à 3 To/ dev / sdb2
et 2 To de / dev / sdb3
/ var
, / opt
/ var
sur / dev / sdb3
et / opt
sur / dev / sdb2
La migration est effectuée selon la procédure. De plus, / dev / sdb
est formaté au format GPT pour gérer une grande capacité de stockage. La procédure peut être légèrement différente du format MBR. En particulier
--Utilisez fdisk
au lieu de gdisk
Etc.
Je travaille sur le changement du point de montage, mais il semble que l'étiquetage SELinux doit être correctement défini à ce moment-là.
Veuillez noter que je ne suis pas familier avec SELinux et que je le fais dans un environnement disable
.
Réduisez d'abord la partition / dev / sdb1
.
Tout d'abord, démontez / dev / sdb1
.
# umount /dev/sdb1
Ensuite, redimensionnez le système de fichiers.
# e2fsck -f /dev/sdb1
# resize2fs /dev/sdb1 3000G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/sdb1 to 786432000 (4k) blocks.
resize2fs
est une commande pour redimensionner le système de fichiers. Cette commande ne fonctionne pas sur les partitions.
Cela défragmentera les données dispersées dans la partition et modifiera les informations dans le superbloc. Cela prendra un certain temps.
(Référence: https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/storage_administration_guide/ext4grow)
Ici, calculez le nombre d'octets de capacité dont vous disposez à partir de la taille du bloc de sortie après le redimensionnement. Dans cet exemple, 1 bloc = 4 ko = 4096 B, donc la capacité est
786432000 * 4096 = 3,221,225,472,000 B
Ce sera.
Puis rétrécissez la partition. Assurez-vous que / dev / sdb
n'est pas monté et redimensionnez la partition en utilisant le mode interactif de parted
.
# parted /dev/sdb
(parted) unit b #Réglez l'unité de sortie sur Byte
(parted) p #Informations sur le courant de sortie
Model: ASR8405 RAID1-data (scsi)
Disk /dev/sdb: 5996837601280B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1048576B 5996836552703B 5996835504128B ext4
Ici, puisque le début de / dev / sdb1
est 1048576 B, ajoutez le décalage de début à la taille (octet) donnée précédemment pour calculer la position de fin.
1,048,576 + 3,221,225,472,000 = 3,221,226,520,576 B
Ceci est une continuation de la console de dialogue «parted».
(parted) resizepart
Partition number? 1
End? [5996836552192B]? 3221226520576B
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? Yes #J'ai déjà redimensionné le système de fichiers, donc ça va
(parted) p
#Abréviation
Disk Flags:
Number Start End Size File system Name Flags
1 1048576B 3221226521087B 3221225472512B ext4
(parted) q #J'ai pu confirmer que la taille a été modifiée correctement, alors j'ai arrêté de me séparer
Vous pouvez maintenant voir que / dev / sdb1
a diminué correctement.
Ensuite, créez / dev / sdb2
. Nous utiliserons gdisk
pour cette tâche. Je peux créer une nouvelle partition avec parted
, mais je n'ai pas pu l'aligner correctement. gdisk
s'aligne également de manière transparente, j'ai donc décidé de l'utiliser lors du partitionnement. Au contraire, il est rapide de redimensionner la partition avec «parted».
Ici, on suppose que «/ dev / sdb2» est 1 To comme «opt» et «/ dev / sdb3» est 2 To comme «/ var».
Voir l'aide pour la commande interactive gdisk
. Chaque commande utilisée ici
-- n
: créer une nouvelle partition
-- c
: Renommer la partition
--p
: Imprimer la table de partition
-- w
: Ecrire la partition
Ainsi, aucune modification n'est écrite tant que vous n'exécutez pas w
.
# gdisk /dev/sdb
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-11712573406, default = 6291460096) or {+-}size{KMGTP}:
Last sector (6291460096-11712573406, default = 11712573406) or {+-}size{KMGTP}: +1T
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): n
Partition number (3-128, default 3): 3
First sector (34-11712573406, default = 8438943744) or {+-}size{KMGTP}:
Last sector (8438943744-11712573406, default = 11712573406) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): c
Partition number (1-3): 2
Enter name: opt
Command (? for help): c
Partition number (1-3): 3
Enter name: var
Command (? for help): p
Disk /dev/sdb: 11712573440 sectors, 5.5 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): BE239631-679B-474D-B43A-305F9146AE5D
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 11712573406
Partitions will be aligned on 2048-sector boundaries
Total free space is 4061 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 6291458048 2.9 TiB 0700
2 6291460096 8438943743 1024.0 GiB 8300 opt
3 8438943744 11712573406 1.5 TiB 8300 var
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdb.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
Maintenant que la partition a été coupée, redémarrez-la pour reconnaître le périphérique.
Formatez ensuite chaque partition nouvellement coupée avec ext4
. Utilisez la commande mkfs.ext4
pour formater avec ext4
.
# mkfs.ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
67108864 inodes, 268435456 blocks
13421772 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2415919104
8192 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, 214990848
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# mkfs.ext4 /dev/sdb3
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
102301696 inodes, 409203707 blocks
20460185 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2558525440
12488 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, 214990848
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
Le formatage est maintenant terminé.
/ var
, / opt
vers une partition nouvellement coupéePremièrement, s'il y a un service qui accède au fichier existant / var
, / opt
(dans / dev / sda1
), le travail de migration ne peut pas être effectué, alors entrez en mode mono-utilisateur.
# init 1
Dans ce travail, le serveur n'a pas été exploité directement, mais à cause de la collecte de journaux, cela a été fait via ssh, donc seul ce travail a directement touché le corps principal et a démarré network
, sshd
.
# systemctl start network.service
# systemctl start sshd.service
Ensuite, montez temporairement / dev / sdb2
et / dev / sdb3
et copiez respectivement le contenu des actuels / opt
et / var
.
# cd /mnt
# mkdir opt_new var_new
# mount /dev/sdb2 opt_new/
# mount /dev/sdb3 var_new/
# rsync -au /opt/* opt_new/
# rsync -au /var/* var_new/
Maintenant, le / opt
dans / dev / sda1
est copié dans / dev / sdb2
et le / var
dans / dev / sda1
est copié dans / dev / sdb3
. ..
Démontez-le et laissez-le fsck
juste au cas où.
# umount /dev/sdb2
# umount /dev/sdb3
# e2fsck -f /dev/sdb2
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb2: 312692/67108864 files (0.2% non-contiguous), 9517164/268435456 blocks
# e2fsck -f /dev/sdb3
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb3: 231758/102301696 files (0.2% non-contiguous), 11135325/409203707 blocks
C'est bon.
Ensuite, changez respectivement les paramètres «/ opt» et «/ var» actuels par «/ opt.org» et «/ var.org» et créez les répertoires de destination de montage «/ opt» et «/ var».
# cd /
# mv opt opt.org
# mv var var.org
# mkdir opt var
/ etc / fstab
Puis éditez / etc / fstab
. Avant cela, vérifiez l'UUID de l'appareil. Par souci de simplicité, l'UUID a été modifié pour le rendre plus facile à comprendre, veuillez donc le lire comme il convient.
# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 Jul 2 14:51 33333333-3333-3333-3333-333333333333 -> ../../sdb3
lrwxrwxrwx 1 root root 10 Jul 2 14:51 22222222-2222-2222-2222-222222222222 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Jul 2 14:23 11111111-1111-1111-1111-111111111111 -> ../../sdb1
Si vous pouvez confirmer, éditez / etc / fstab
et spécifiez / dev / sdb2
comme point de montage / opt
et / dev / sdb3
comme point de montage / var
.
/etc/fstab(Extrait uniquement lorsque cela est pertinent)
UUID=11111111-1111-1111-1111-111111111111 /home ext4 defaults 1 2
UUID=22222222-2222-2222-2222-222222222222 /opt ext4 defaults 1 2
UUID=33333333-3333-3333-3333-333333333333 /var ext4 defaults 1 2
Cela le redémarrera.
Après l'avoir démarré, vérifiez-le avec df
(extrait uniquement là où c'est pertinent).
# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 ext4 2.9T 676G 2.1T 25% /home
/dev/sdb2 ext4 1008G 21G 937G 3% /opt
/dev/sdb3 ext4 1.6T 18G 1.5T 2% /var
Il est monté normalement.
En outre, il a été confirmé que les services qui utilisent «/ opt» et «/ var» fonctionnent correctement.
À cette époque, le stockage peut être assemblé de manière variable dans le cloud, je pense donc qu'un travail aussi dangereux est moins susceptible d'être effectué, mais veuillez vous y référer si vous en avez la possibilité. N'oubliez pas de faire une sauvegarde et de la garder en sécurité.
Recommended Posts