Thay đổi UUID của phân vùng trong Linux Image Thay đổi UUID của phân vùng trong Linux

Bài viết này sẽ hướng dẫn các bạn thay đổi UUID của phân vùng trên hệ điều hành Linux. Trong bài viết này sẽ giới thiệu với các bạn thay đổi UUID với filesystem ở dạng xfs và etx4 trên bản phân phối CentOS 7 từ đó giúp cho chúng ta có thể tự tìm hiểu và tự học Linux cơ bản một cách dễ dàng hơn.

1. Tại sao phải thay đổi UUID

Trong thực tế thì việc trùng UUID là rất hiếm khi xảy ra nhưng trong một số trường hợp vẫn có thể xảy ra.

Ví dụ: Chúng ta thực hiện việc sao chép một phân vùng bằng lệnh dd có thể dẫn đến trường hợp số UUID của hai phân vùng bị trùng nhau.

UUID (Universally Unique IDentifier) được sử dụng trên hệ điều hành Linux để xác định phân vùng trong tệp /etc/fstab.

2. Cách thay đổi UUID

2.1. Thay đổi UUID với filesystem etx4

Bước 1: Thực hiện kiểm tra UUID các phân vùng trên hệ thống của chúng ta bằng cách sử dụng lệnh blkid như sau:

[root@localhost ~]# blkid | grep sd
/dev/sda2: UUID="6epfod-gNoM-0lIq-nrPQ-K4RU-67aG-DZYeYE" TYPE="LVM2_member"
/dev/sda1: UUID="939f8894-ff56-4b24-9278-3257b70f1365" TYPE="xfs"
/dev/sdb1: UUID="19c0d203-a112-4834-afd8-736bd68127e6" TYPE="ext4"
/dev/sdb2: UUID="222dfef8-4aee-4a1e-9591-b44f69c803af" TYPE="ext4"

Qua đây chúng ta thấy các phân vùng điều có số UUID khác nhau. Giả sử hai phân vùng /dev/sdb1/dev/sdb2 có số UUID trùng nhau sau đó chúng ta cần đổi số UUID của 1 trng 2 phân vùng trên.

Bước 2: Thay đổi UUID của một phân vùng ở định dạng etx4 chúng ta sẽ sử dụng lệnh tune2fs. Chúng ta sẽ thay đổi UUID trên phân vùng thứ nhất /dev/sdb1 chúng ta thực hiện như bên dưới:

Đầu tiên chúng ta kiểm tra số UUID hiện tại của phân vùng /dev/sdb1:

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="19c0d203-a112-4834-afd8-736bd68127e6" TYPE="ext4"

Khi muốn thay đổi UUID thì chúng ta cần phải ngắt kết nối phân vùng trước:

[root@localhost ~]# umount /dev/sdb1

Tiếp theo chúng ta thực hiện thay đổi UUID cho phân vùng bằng cách chạy lệnh sau:

[root@localhost ~]# tune2fs -U random /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)

Sau khi thay đổi UUID chúng ta kiểm tra lại số UUID và so sánh với số UUID ban đầu

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="9da696d8-0c86-443d-9702-6b044ac98ca7" TYPE="ext4"

Qua kết quả trên cho chúng thấy UUID của phân vùng /dev/sdb1 đã thay đổi hoàn toàn mới.

Bước 3: Khi đã thay đổi UUID thành công ta thực hiện gắn kết lại phân vùng /dev/sdb1.

[root@localhost ~]# mount /dev/sdb1 /web/

Phân vùng gắn kết của chúng ta là tạm thời. Nếu hệ điều hành được khởi động lại, các thư mục được gắn kết này sẽ bị mất. Vì vậy, chúng ta cần phải gắn kết vĩnh viễn. Để thực hiện gắn kết vĩnh viễn phải thay đổi UUID ban đầu của phân vùng /dev/sdb1 trong tệp /etc/fstab. Bạn có thể sử dụng trình soạn thảo vi để nhập vào:

[root@localhost ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Oct  7 19:01:09 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=939f8894-ff56-4b24-9278-3257b70f1365 /boot                   xfs     defaults        0 0
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
UUID=9da696d8-0c86-443d-9702-6b044ac98ca7	/web	etx4	defaults        0 0
UUID=222dfef8-4aee-4a1e-9591-b44f69c803af	/data	etx4	defaults        0 0

Lưu lại file /etc/fstab và chạy lệnh:

[root@localhost ~]# mount -a

Nếu có lỗi, không reboot server để tránh tình trạng server không thể khởi động. Kiểm tra cấu hình trong file /etc/fstab và chạy lại lệnh cho tới khi không có thông báo lỗi.

2.2. Thay đổi UUID với filesystem xfs

Bước 1: Thực hiện kiểm tra UUID các phân vùng trên hệ thống của chúng ta bằng cách sử dụng lệnh blkid như sau:

[root@localhost ~]# blkid | grep sd
/dev/sda2: UUID="Cn3u7z-IOC8-Vhsy-ISzU-69g4-I4vf-Do1OHu" TYPE="LVM2_member"
/dev/sda1: UUID="0a3e73e3-ec59-4aeb-8087-64f8741f6f73" TYPE="xfs"
/dev/sdb1: UUID="1a668cb0-340c-4966-916d-1b7908142135" TYPE="xfs"
/dev/sdb2: UUID="31fd8464-c34d-4f25-939e-e8998e2e6314" TYPE="xfs"

Qua đây chúng ta thấy các phân vùng sẽ có số UUID khác nhau. Giả sử hai phân vùng /dev/sdb1/dev/sdb2 có số UUID trùng nhau sau đó chúng ta cần đổi số UUID của 1 trong 2 phân vùng trên.

[  109.852158] XFS (sdb2): Filesystem has duplicate UUID d2450d5e-83bc-4712-b9dd-af2bc461a018 - can't mount
[  283.963302] XFS (sdb2): Mounting V5 Filesystem
[  284.128576] XFS (sdb2): Ending clean mount

Bước 2: Thay đổi UUID của một phân vùng ở định dạng xfs chúng ta sẽ sử dụng lệnh xfs_admin. Chúng ta sẽ thay đổi UUID trên phân vùng thứ nhất /dev/sdb1 chúng ta thực hiện như bên dưới:

Kiểm tra lại UUID của phân vùng /dev/sdb1:

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="1a668cb0-340c-4966-916d-1b7908142135" TYPE="xfs"

Trước khi thay đổi UUID chúng ta cần thực hiện bỏ gắn kết phân vùng /dev/sdb1:

[root@localhost ~]# umount /dev/sdb1

Tiếp theo chúng ta thực thi lệnh xfs_admin như bên dưới để thay đổi UUID của phân vùng ở dạng filesystem xfs:

[root@localhost ~]# xfs_admin -U generate /dev/sdb1
Clearing log and setting UUID
writing all SBs
new UUID = fd768db8-d22c-4506-aaac-9d7d6dab7f0c

Qua kết quả trên chúng ta thấy một UUID đã được tạo mới khác hoàn toàn với UUID cũ.

Bước 3: Khi đã thay đổi UUID thành công ta thực hiện gắn kết lại phân vùng /dev/sdb1.

[root@localhost ~]# mount /dev/sdb1 /web/

Phân vùng gắn kết của chúng ta là tạm thời. Nếu hệ điều hành được khởi động lại, các thư mục được gắn kết này sẽ bị mất. Vì vậy, chúng ta cần phải gắn kết vĩnh viễn. Để thực hiện gắn kết vĩnh viễn phải thay đổi UUID ban đầu của phân vùng /dev/sdb1 trong tệp /etc/fstab. Bạn có thể sử dụng trình soạn thảo vi để nhập vào:

[root@localhost ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Oct  7 23:13:13 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/cl-root     /                       xfs     defaults        0 0
UUID=0a3e73e3-ec59-4aeb-8087-64f8741f6f73 /boot                   xfs     defaults        0 0
/dev/mapper/cl-swap     swap                    swap    defaults        0 0
UUID=fd768db8-d22c-4506-aaac-9d7d6dab7f0c	/web	xfs	defaults        0 0
UUID=31fd8464-c34d-4f25-939e-e8998e2e6314	/data	xfs	defaults        0 0

Lưu lại file /etc/fstab và chạy lệnh:

[root@localhost ~]# mount -a

Nếu có lỗi, không reboot server để tránh tình trạng server không thể khởi động. Kiểm tra cấu hình trong file /etc/fstab và chạy lại lệnh cho tới khi không có thông báo lỗi.

3. Lời kết

Qua bài trên, giúp cho chúng ta hiểu hơn về cách thay đổi UUID cho phân vùng trên hệ điều hành Linux. Từ đây giúp cho chúng ta khắc phục được các sự cố bị trùng UUID giữa các phân vùng trên hệ thống.