[LINUX] Verschieben Sie den Mount-Punkt / var, / opt in einen anderen Speicher (GPT).

Einführung

Dieses Mal gab es ein Problem, dass die Kapazität des von uns verwalteten lokalen Servers knapp war. Auf dem betreffenden Server war CentOS 7 vorinstalliert und funktionierte unverändert. Die Speicherkonfiguration dieses Servers lautet

Es ist geworden. In den vorinstallierten Einstellungen

--Mountpunkt / auf / dev / sda1 (50 GB) --Mountpunkt / home auf / dev / sdb1 (6 TB)

Dann wurden / var und / opt, die DB usw. enthalten, allmählich fett und machten / dev / sda1 dicht, und es trat ein Serverfehler auf. Außerdem enthält / home die Quelle der Webseite und personenbezogene Daten, wird jedoch höchstens 1 TB verwendet, sodass es unwahrscheinlich ist, dass dies schnell zunimmt.

Also habe ich beschlossen, / var, / opt von / dev / sda nach / dev / sdb zu verschieben.

Zu jener Zeit

  1. Verkleinern Sie / dev / sdb1 auf 3 TB
  2. Schneiden Sie die Partition und machen Sie 1 TB von / dev / sdb2 und 2 TB von / dev / sdb3
  3. Übertragen Sie die Daten von / var, / opt
  4. Setzen Sie den Einhängepunkt / var auf / dev / sdb3 und / opt auf / dev / sdb2

Die Migration wird gemäß dem Verfahren durchgeführt. Außerdem ist / dev / sdb im GPT-Format formatiert, um große Speicherkapazitäten zu verarbeiten. Das Verfahren kann geringfügig vom MBR-Format abweichen. Speziell

--Verwenden Sie "fdisk" anstelle von "gdisk"

Und so weiter.

Über SELinux

Ich arbeite daran, den Einhängepunkt zu ändern, aber es scheint, dass die SELinux-Beschriftung zu diesem Zeitpunkt korrekt eingestellt sein muss. Bitte beachten Sie, dass ich mit SELinux nicht vertraut bin und dies in einer "Deaktivierungs" -Umgebung mache.

Partition verkleinern

Verkleinern Sie zuerst die Partition / dev / sdb1.

Hängen Sie zuerst / dev / sdb1 aus.

# umount /dev/sdb1

Ändern Sie als Nächstes die Größe des Dateisystems.

# 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 ist ein Befehl zum Ändern der Größe des Dateisystems. Dieser Befehl funktioniert nicht auf Partitionen. Dadurch werden die in der Partition verstreuten Daten defragmentiert und die Informationen im Superblock geändert. Dies wird einige Zeit dauern. (Referenz: https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/storage_administration_guide/ext4grow)

Berechnen Sie hier, wie viele Bytes Kapazität Sie nach der Größenänderung aus der Größe des Ausgabeblocks haben. In diesem Beispiel ist 1 Block = 4 kB = 4096 B, also ist die Kapazität

786432000 * 4096 = 3,221,225,472,000 B

Es wird sein.

Dann verkleinern Sie die Partition. Stellen Sie sicher, dass / dev / sdb nicht gemountet ist, und ändern Sie die Größe der Partition im interaktiven Modus parted.


# parted /dev/sdb
(parted) unit b  #Stellen Sie die Ausgabeeinheit auf Byte
(parted) p #Aktuelle Informationen ausgeben
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

Da der Anfang von / dev / sdb1 1048576 B ist, addieren Sie hier den Startversatz zu der zuvor angegebenen Größe (Byte), um die Endposition zu berechnen.

1,048,576 + 3,221,225,472,000 = 3,221,226,520,576‬ B

Dies ist eine Fortsetzung der "geteilten" Dialogkonsole.


(parted) resizepart
Partition number? 1

End?  [5996836552192B]? 3221226520576‬B

Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? Yes #Ich habe die Größe des Dateisystems bereits geändert, damit es in Ordnung ist

(parted) p

#Abkürzung

Disk Flags:
Number  Start     End             Size            File system  Name  Flags
 1      1048576B  3221226521087B  3221225472512B  ext4

(parted) q #Ich konnte bestätigen, dass die Größe korrekt geändert wurde, also habe ich die Trennung beendet

Jetzt können Sie sehen, dass / dev / sdb1 korrekt geschrumpft ist.

Schneiden Sie eine neue Partition

Als nächstes erstellen Sie / dev / sdb2. Wir werden "gdisk" für diese Aufgabe verwenden. Ich kann eine neue Partition mit "parted" erstellen, aber ich konnte sie nicht gut ausrichten. gdisk wird auch nahtlos ausgerichtet, daher habe ich mich entschieden, dies beim Partitionieren zu verwenden. Im Gegenteil, es ist schnell, die Größe der Partition mit "parted" zu ändern.

Hier wird angenommen, dass "/ dev / sdb2" 1 TB als "opt" und "/ dev / sdb3" 2 TB als "/ var" ist.

In der Hilfe finden Sie den interaktiven Befehl gdisk. Jeder hier verwendete Befehl

-- n: Erstellt eine neue Partition -- c: Partition umbenennen --p: Partitionstabelle drucken -- w: Partition schreiben

Es werden also keine Änderungen geschrieben, bis Sie "w" ausführen.

# 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.

Nachdem die Partition abgeschnitten wurde, starten Sie sie neu, um das Gerät zu erkennen.

Formatieren Sie eine neue Partition

Formatieren Sie dann jede neu geschnittene Partition mit "ext4". Verwenden Sie den Befehl mkfs.ext4, um mit ext4 zu formatieren.

# 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

Die Formatierung ist jetzt abgeschlossen.

Verschieben Sie / var, / opt in eine neu geschnittene Partition

Kopie der Daten

Erstens, wenn es einen Dienst gibt, der auf das vorhandene / var, / opt (in / dev / sda1) zugreift, kann die Migrationsarbeit nicht ausgeführt werden. Wechseln Sie daher in den Einzelbenutzermodus.

# init 1

In dieser Arbeit wurde der Server nicht direkt betrieben, sondern aufgrund der Protokollsammlung über ssh, sodass nur diese Arbeit den Hauptteil direkt berührte und network, sshd startete.

# systemctl start network.service
# systemctl start sshd.service

Als nächstes mounten Sie vorübergehend "/ dev / sdb2" und "/ dev / sdb3" und kopieren Sie den Inhalt des aktuellen "/ opt" bzw. "/ 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/

Jetzt wird das / opt in / dev / sda1 nach / dev / sdb2 und das / var in / dev / sda1 nach / dev / sdb3 kopiert. ..

Nehmen Sie es ab und lassen Sie es für alle Fälle "fsck".

# 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

Es ist in Ordnung.

Erstellen Sie ein Mount-Verzeichnis

Ändern Sie als Nächstes das aktuelle / opt und / var in / opt.org bzw. / var.org und erstellen Sie die Mount-Zielverzeichnisse / opt und / var.

# cd /
# mv opt opt.org
# mv var var.org
# mkdir opt var

Bearbeiten von / etc / fstab

Dann bearbeiten Sie / etc / fstab. Überprüfen Sie zuvor die UUID des Geräts. Der Einfachheit halber wurde die UUID geändert, um das Verständnis zu erleichtern. Lesen Sie sie daher gegebenenfalls.

# 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

Wenn Sie bestätigen können, bearbeiten Sie "/ etc / fstab" und geben Sie "/ dev / sdb2" als Einhängepunkt "/ opt" und "/ dev / sdb3" als Einhängepunkt "/ var" an.

/etc/fstab(Auszug nur dort, wo es relevant ist)


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

Dadurch wird es neu gestartet.

Bestätigung

Überprüfen Sie es nach dem Start mit df (Auszug nur dort, wo es relevant ist).

# 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

Es ist normal montiert.

Es wurde auch bestätigt, dass Dienste, die / opt und / var verwenden, ordnungsgemäß funktionieren.

Schließlich

In dieser Zeit kann der Speicher in der Cloud variabel zusammengestellt werden, daher denke ich, dass solche gefährlichen Arbeiten weniger wahrscheinlich sind. Bitte lesen Sie sie, wenn Sie die Möglichkeit dazu haben. Vergessen Sie nicht, ein Backup zu erstellen und es sicher aufzubewahren.

Recommended Posts

Verschieben Sie den Mount-Punkt / var, / opt in einen anderen Speicher (GPT).