Halo semuanya. Untuk mengantisipasi dimulainya grup baru kursus Administrator Linux, kami menerbitkan materi bermanfaat yang ditulis oleh siswa kami, serta mentor kursus, spesialis dukungan teknis produk perusahaan REG.RU Roman Travin.Artikel ini akan membahas 2 kasus penggantian disk dan mentransfer informasi ke disk baru yang lebih besar dengan perluasan lebih lanjut dari array dan sistem file. Kasus pertama akan menyangkut penggantian disk dengan markup MBR / MBR atau GPT / GPT yang sama, kasus kedua akan menyangkut penggantian disk dengan tanda MBR untuk disk dengan kapasitas lebih dari 2 TB, di mana diperlukan markup GPT dengan partisi biosboot. Dalam kedua kasus, disk tempat kami mentransfer data sudah diinstal di server. Sistem file yang digunakan untuk partisi root adalah ext4.
Kasus 1: Mengganti drive yang lebih kecil dengan drive yang lebih besar (hingga 2TB)
Tugas: Ganti disk saat ini dengan disk yang lebih besar (hingga 2 TB) dengan transfer informasi. Dalam hal ini, kami memiliki disk SSD 2 x 240 GB (RAID-1) dengan sistem yang diinstal dan disk SATA 2 x 1 TB yang Anda perlukan untuk mentransfer sistem.
Pertimbangkan tata letak disk saat ini.
[root@localhost ~]
Periksa ruang sistem file saat ini yang digunakan.
[root@localhost ~]
Ukuran sistem file sebelum mengganti disk adalah 204 GB, 2 array perangkat lunak md126 digunakan, yang dipasang di
/boot
dan
md127
, yang digunakan sebagai
volume fisik untuk grup VG
vg0 .
1. Menghapus partisi disk dari array
Periksa status array
[root@localhost ~]
Sistem ini menggunakan 2 array:
md126
(mount point
/boot
) - terdiri dari
/dev/sda1
dan
/dev/sdb1
,
md127
(LVM untuk
swap dan root sistem file) - terdiri dari
/dev/sda2
dan
/dev/sdb2
.
Kami menandai partisi disk pertama, yang digunakan di setiap array, sebagai buruk.
mdadm /dev/md126 --fail /dev/sda1 mdadm /dev/md127 --fail /dev/sda2
Kami menghapus bagian dari perangkat blok / dev / sda dari array.
mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2
Setelah kami menghapus disk dari array, informasi tentang perangkat blok akan terlihat seperti ini.
[root@localhost ~]
Keadaan array setelah menghapus disk.
[root@localhost ~]
2. Menyalin tabel partisi ke disk baru
Anda dapat memeriksa tabel partisi yang digunakan pada disk dengan perintah berikut.
fdisk -l /dev/sdb | grep 'Disk label type'
Output untuk MBR adalah:
Disk label type: dos
untuk GPT:
Disk label type: gpt
Salin tabel markup untuk MBR:
sfdisk -d /dev/sdb | sfdisk /dev/sdc
Dalam perintah ini, yang
pertama adalah drive
tempat markup disalin, yang
kedua adalah tempat untuk menyalin.
PERHATIAN : Untuk GPT, drive untuk menyalin markup ke adalah yang pertama kali ditunjukkan, drive untuk menyalin markup ke dari drive kedua . Jika Anda mencampur disk, maka markup yang awalnya sehat akan ditimpa dan dihancurkan.
Menyalin tabel markup untuk GPT:
sgdisk -R /dev/sd /dev/sdb
Selanjutnya, tetapkan UUID acak ke disk (untuk GPT).
sgdisk -G /dev/sdc
Setelah perintah dijalankan, partisi akan muncul di disk
/dev/sdc
.
[root@localhost ~]
Jika setelah tindakan yang dilakukan, partisi di sistem pada disk
/dev/sdc
tidak didefinisikan, maka kami menjalankan perintah untuk membaca kembali tabel partisi.
sfdisk -R /dev/sdc
Jika disk saat ini menggunakan tabel MBR dan informasi perlu ditransfer ke disk dengan kapasitas lebih dari 2 TB, maka disk baru harus secara manual membuat markup GPT menggunakan bagian biosboot. Kasus ini akan dipertimbangkan di bagian 2 artikel ini.
3. Menambahkan partisi disk baru ke array
Tambahkan partisi disk ke array yang sesuai.
mdadm /dev/md126 --add /dev/sdc1 mdadm /dev/md127 --add /dev/sdc2
Periksa bagian yang telah ditambahkan.
[root@localhost ~]
Setelah itu, kami menunggu sinkronisasi array.
[root@localhost ~]
Anda dapat terus memantau proses sinkronisasi menggunakan utilitas
watch
.
watch -n 2 cat /proc/mdstat
-n
menentukan pada interval berapa detik perintah harus dijalankan untuk memeriksa kemajuan.
Ulangi langkah 1 - 3 untuk drive pengganti berikutnya.Kami menandai partisi disk kedua, yang digunakan di setiap array, sebagai buruk.
mdadm /dev/md126 --fail /dev/sdb1 mdadm /dev/md127 --fail /dev/sdb2
Kami menghapus bagian dari perangkat blok
/dev/sdb
dari array.
mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2
Setelah kami menghapus disk dari array, informasi tentang perangkat blok akan terlihat seperti ini.
[root@localhost ~]
Keadaan array setelah menghapus disk.
[root@localhost ~]
Salin tabel markup MBR dari drive
/dev/sd
ke drive
/dev/sdd
.
sfdisk -d /dev/sd | sfdisk /dev/sdd
Setelah perintah dieksekusi, partisi akan muncul di drive
/dev/sdd
.
[root@localhost ~]
Tambahkan partisi disk ke array.
mdadm /dev/md126 --add /dev/sdd1 mdadm /dev/md127 --add /dev/sdd2
Periksa bagian yang telah ditambahkan.
[root@localhost ~]
Setelah itu, kami menunggu sinkronisasi array.
[root@localhost ~]
5. Instal GRUB pada drive baru
Untuk CentOS:
grub2-install /dev/sdX
Untuk Debian / Ubuntu:
grub-install /dev/sdX
di mana
X
adalah huruf perangkat blok. Dalam hal ini, instal GRUB di
/dev/sdc
dan
/dev/sdd
.
6. Perpanjangan sistem file (ext4) dari partisi root
931.5 GB tersedia pada drive baru
/dev/sdc
dan
/dev/sdd
. Karena kenyataan bahwa tabel partisi disalin dari disk yang lebih kecil, 222,5 GB tersedia di
/dev/sdc2
dan
/dev/sdd2
.
sdc 8:32 0 931,5G 0 disk ├─sdc1 8:33 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdc2 8:34 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP] sdd 8:48 0 931,5G 0 disk ├─sdd1 8:49 0 1G 0 part │ └─md126 9:126 0 1023M 0 raid1 /boot └─sdd2 8:50 0 222,5G 0 part └─md127 9:127 0 222,4G 0 raid1 ├─vg0-root 253:0 0 206,4G 0 lvm / └─vg0-swap 253:1 0 16G 0 lvm [SWAP]
Itu perlu:
- Perpanjang bagian 2 pada setiap drive,
- Perpanjang array md127,
- Perluas PV (volume fisik),
- Perpanjang LV (volume logis) vg0-root,
- Perpanjang sistem file.
Menggunakan utilitas
parted, perluas
/dev/sdc2
ke nilai maksimum.
parted /dev/sdc
(1) dan melihat tabel partisi saat ini dengan perintah
p
(2).

Seperti yang Anda lihat, akhir bagian 2 berakhir dengan 240 GB. Mari kita memperluas bagian dengan perintah
resizepart
2
, di mana 2 adalah nomor bagian (3). Kami menunjukkan nilai dalam format digital, misalnya 1000 GB, atau kami menggunakan indikasi berbagi disk - 100%. Sekali lagi kami memeriksa bahwa bagian tersebut memiliki ukuran baru (4).
Ulangi langkah-langkah di atas untuk drive
/dev/sdd
. Setelah memperluas partisi,
/dev/sdc2
dan
/dev/sdd2
menjadi sama dengan 930.5 GB.
[root@localhost ~]
Setelah itu, kami memperluas array
md127 secara maksimal.
mdadm --grow /dev/md127 --size=max
Pastikan array telah diperluas. Sekarang ukurannya telah menjadi 930,4 GB.
[root@localhost ~]
Kami melakukan ekspansi
volume fisik . Sebelum ekspansi, periksa status PV saat ini.
[root@localhost ~]
Seperti yang Anda lihat, PV
/dev/md127
menggunakan 222,4 GB ruang.
Perluas PV dengan perintah berikut.
pvresize /dev/md127
Periksa hasil ekstensi PV.
[
root@localhost ~]
Memperluas
volume logis . Sebelum ekstensi, periksa status LV saat ini (1).
[root@localhost ~]
LV
/dev/vg0/root
menggunakan 206.41 GB.
Kami memperluas LV dengan perintah berikut (2).
lvextend -l +100%FREE /dev/mapper/vg0-root
Periksa tindakan yang dilakukan (3).
[root@localhost ~]
Seperti yang Anda lihat, setelah ekspansi LV, volume ruang disk yang ditempati menjadi 914,39 GB.

Volume LV telah meningkat (4), tetapi sistem file masih membutuhkan 204 GB (5).
1. Lakukan ekstensi sistem file. resize2fs /dev/mapper/vg0-root
Kami memeriksa setelah perintah dieksekusi ukuran sistem file.
[root@localhost ~]
Ukuran sistem file root akan meningkat menjadi 900 GB. Setelah menyelesaikan langkah-langkah, Anda dapat menghapus drive lama.
Kasus 2: Mengganti drive yang lebih kecil dengan drive yang lebih besar (lebih dari 2TB)
Tugas: Ganti disk saat ini dengan disk yang lebih besar (2 x 3TB) dengan menyimpan informasi. Dalam hal ini, kami memiliki disk SSD 2 x 240 GB (RAID-1) dengan sistem yang diinstal dan disk SATA 2 x 3 TB tempat Anda harus mentransfer sistem. Drive saat ini menggunakan tabel partisi MBR. Karena disk baru memiliki kapasitas lebih dari 2 TB, mereka harus menggunakan tabel GPT, karena MBR tidak dapat bekerja dengan disk yang lebih besar dari 2TB.
Lihat tata letak disk saat ini.
[root@localhost ~]
Periksa tabel partisi yang digunakan pada drive
/dev/sda
.
[root@localhost ~]
Drive
/dev/sdb
menggunakan tabel partisi yang sama. Periksa ruang disk yang digunakan dalam sistem.
[root@localhost ~]
Seperti yang Anda lihat, root dari sistem file adalah 204 GB. Periksa status RAID perangkat lunak saat ini.
1. Instal tabel partisi GPT dan partisi disk
Periksa tata letak disk menurut sektor.
[root@localhost ~]
Pada drive 3TB baru, kita perlu membuat 3 partisi:
bios_grub
bagian bios_grub
untuk kompatibilitas GPT dengan BIOS,- Partisi untuk array RAID yang akan dipasang di
/boot
. - Partisi untuk array RAID yang akan menjadi root dan swap LV LV .
Instal utilitas
parted dengan perintah
yum install -y parted
(untuk CentOS),
apt install -y parted
(untuk Debian / Ubuntu).
Menggunakan
parted, jalankan perintah berikut untuk mempartisi disk.
parted /dev/sdc
dan beralih ke mode edit tata letak disk.
Buat tabel partisi GPT.
(parted) mktable gpt
Buat 1 bagian bagian
bios_grub
dan tetapkan bendera untuk itu.
(parted) mkpart primary 1MiB 3MiB (parted) set 1 bios_grub on
Buat 2 bagian dan atur bendera untuk itu. Partisi akan digunakan sebagai blok untuk array RAID dan memasangnya di
/boot
.
(parted) mkpart primary ext2 3MiB 1028MiB (parted) set 2 boot on
Kami membuat 3 bagian, yang juga akan digunakan sebagai blok array di mana akan ada LVM.
(parted) mkpart primary 1028MiB 100%
Dalam hal ini, pengaturan flag tidak diperlukan, tetapi jika perlu, dimungkinkan untuk mengaturnya dengan perintah berikut.
(parted) set 3 raid on
Periksa tabel yang dibuat.
(parted) p : ATA TOSHIBA DT01ACA3 (scsi) /dev/sdc: 3001GB (./.): 512B/4096B : gpt Disk Flags: 1 1049kB 3146kB 2097kB primary bios_grub 2 3146kB 1077MB 1074MB primary 3 1077MB 3001GB 3000GB primary
Tetapkan drive GUID acak baru.
sgdisk -G /dev/sdd
2. Menghapus partisi disk pertama dari array
Periksa status array
[root@localhost ~]
Sistem ini menggunakan 2 array: md126 (mount point / boot) - terdiri dari
/dev/sda1
dan
/dev/sdb1
,
md127
(LVM untuk
swap
dan root dari sistem file) - terdiri dari
/dev/sda2
dan
/dev/sdb2
.
Kami menandai partisi disk pertama, yang digunakan di setiap array, sebagai buruk.
mdadm /dev/md126 --fail /dev/sda1 mdadm /dev/md127 --fail /dev/sda2
Kami menghapus bagian dari perangkat blok
/dev/sda
dari array.
mdadm /dev/md126 --remove /dev/sda1 mdadm /dev/md127 --remove /dev/sda2
Periksa status array setelah menghapus disk.
[root@localhost ~]
3. Menambahkan partisi disk baru ke array
Langkah selanjutnya adalah menambahkan partisi disk baru ke array untuk sinkronisasi. Kami melihat kondisi tata letak disk saat ini.
[root@localhost ~]
/dev/sdc1
bios_grub
partisi
bios_grub
dan tidak terlibat dalam membuat array.
/dev/sdc2
hanya akan menggunakan
/dev/sdc2
dan
/dev/sdc3
. Tambahkan bagian ini ke array yang sesuai.
mdadm /dev/md126 --add /dev/sdc2 mdadm /dev/md127 --add /dev/sdc3
Kemudian kita menunggu sinkronisasi array.
[root@localhost ~]
Mempartisi disk setelah menambahkan partisi ke array.
[root@localhost ~]
4. Menghapus partisi disk kedua dari array
Kami menandai partisi disk kedua, yang digunakan di setiap array, sebagai buruk.
mdadm /dev/md126 --fail /dev/sdb1 mdadm /dev/md127 --fail /dev/sdb2
Kami menghapus bagian dari perangkat blok
/dev/sda
dari array.
mdadm /dev/md126 --remove /dev/sdb1 mdadm /dev/md127 --remove /dev/sdb2
5. Salin tabel markup GPT dan sinkronkan array
Untuk menyalin tabel markup GPT, kami menggunakan utilitas
sgdisk
, yang termasuk dalam paket untuk bekerja dengan partisi disk dan tabel GPT -
gdisk
.
Instal
gdisk
untuk CentOS:
yum install -y gdisk
Instal
gdisk
untuk Debian / Ubuntu:
apt install -y gdisk
PERHATIAN : Untuk GPT, disk tempat markup disalin pertama kali ditunjukkan, disk kedua adalah disk tempat markup disalin. Jika Anda mencampur disk, maka markup yang awalnya sehat akan ditimpa dan dihancurkan.
Salin tabel markup GPT.
sgdisk -R /dev/sdd /dev/sdc
Mempartisi disk setelah mentransfer tabel ke drive
/dev/sdd
.
[root@localhost ~]
Selanjutnya, kami menambahkan setiap partisi yang berpartisipasi dalam array RAID perangkat lunak.
mdadm /dev/md126 --add /dev/sdd2 mdadm /dev/md127 --add /dev/sdd3
Kami sedang menunggu sinkronisasi array.
[root@localhost ~]
Setelah menyalin markup GPT ke disk baru kedua, markup akan terlihat seperti ini.
[root@localhost ~]
Selanjutnya, instal GRUB pada drive baru.
Instalasi untuk CentOS:
grub2-install /dev/sdX
Instalasi untuk Debian / Ubuntu:
grub-install /dev/sdX
di mana
X
adalah huruf drive, dalam kasus kami drive
/dev/sdc
dan
/dev/sdd
.
Memperbarui informasi tentang array.
Untuk CentOS:
mdadm --detail --scan --verbose > /etc/mdadm.conf
Untuk Debian / Ubuntu:
echo "DEVICE partitions" > /etc/mdadm/mdadm.conf mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf
Memperbarui gambar
initrd
:
Untuk CentOS:
dracut -f -v --regenerate-all
Untuk Debian / Ubuntu:
update-initramfs -u -k all
Memperbarui konfigurasi GRUB.
Untuk CentOS:
grub2-mkconfig -o /boot/grub2/grub.cfg
Untuk Debian / Ubuntu:
update-grub
Setelah langkah-langkah selesai, disk lama dapat dihapus.
6. Perpanjangan sistem file (ext4) dari partisi root
Mempartisi disk sebelum memperluas sistem file setelah memindahkan sistem ke disk 2 x 3TB (RAID-1).
[root@localhost ~]
/dev/sdc3
dan
/dev/sdd3
menempati 2,7 TB. Karena kami membuat partisi baru disk dengan tabel GPT, ukuran 3 partisi segera diatur ke ruang disk maksimum yang mungkin, dalam hal ini, memperluas partisi tidak diperlukan.
Itu perlu:
- Perpanjang array md126,
- Perluas PV (volume fisik),
- Perpanjang LV (volume logis) vg0-root,
- Perpanjang sistem file.
1. md126
array md126
maksimal. mdadm --grow /dev/md126 --size=max
Setelah memperluas array
md126
ukuran ruang yang ditempati meningkat menjadi 2,7 TB.
[root@localhost ~]
Memperluas volume fisik .Sebelum ekspansi, kami memeriksa nilai saat ini dari ruang yang ditempati PV / dev/md126
. [root@localhost ~]
Perluas PV dengan perintah berikut. pvresize /dev/md126
Periksa tindakan yang selesai. [root@localhost ~]
Memperluas kelas volume logis vg0-akar .Setelah memperluas PV, kami memeriksa ruang yang ditempati VG. [root@localhost ~]
Periksa ruang yang ditempati oleh LV. [root@localhost ~]
Volume vg0-root membutuhkan 206.41 GB.Perluas LV ke ruang disk maksimum. lvextend -l +100%FREE /dev/mapper/vg0-root
Memeriksa ruang LV setelah ekspansi. [root@localhost ~]
Memperluas sistem file (ext4).Periksa ukuran sistem file saat ini. [root@localhost ~]
Volume / dev / mapper / vg0-root membutuhkan 204 GB setelah ekstensi LV.Memperluas sistem file. resize2fs /dev/mapper/vg0-root
Periksa ukuran sistem file setelah ekspansi. [root@localhost ~]
Ukuran sistem file ditingkatkan oleh seluruh volume volume.