Xem mẫu
- Cài đặt RAID 1 trên hệ thống LVM trong Ubuntu 10.04
Bài viết sau sẽ hướng dẫn và giải thích với các bạn cách thiết lập, cài đặt
phần mềm theo chuẩn RAID1 trên hệ thống LVM đang hoạt dộng trong
- nền tảng Ubuntu 10.04. Và GRUB2 bootloader sẽ được thiết lập để hệ
thống không thể khởi động khi 1 trong 2 ổ cứng có vấn đề.
Lưu ý sơ bộ
Trong thí nghiệm này sử dụng hệ điều hành Ubuntu 10.04 và 2 ổ cứng
(/dev/sda và /dev/sdb), trong đó /dev/sdb không sử dụng, /dev/sda có các
phân vùng sau:
/dev/sda1: phân vùng boot - ext2
/dev/sda2: là phân vùng extended, có chứa /dev/sda5
/dev/sda5: được sử dụng cho LVM (volume group server1) và có ký tự /
(root) và swap (swap_1)
Và đến khi kết thúc, chúng ta sẽ có được kết quả như sau:
/dev/md0 (tạo ra từ /dev/sda1 và /dev/sdb1): phân vùng /boot - ext2
/dev/md1 (tạo ra từ /dev/sda5 và /dev/sdb5): LVM (volume group server1)
có ký tự / (root) và swap (volume swap_1)
Còn đây là hiện tại:
df -h
root@server1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/server1-root
4.5G 809M 3.5G 19% /
none 243M 176K 242M 1% /dev
none 247M 0 247M 0% /dev/shm
none 247M 36K 247M 1% /var/run
none 247M 0 247M 0% /var/lock
- none 247M 0 247M 0% /lib/init/rw
/dev/sda1 228M 17M 199M 8% /boot
root@server1:~#
fdisk -l
root@server1:~# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006b7b7
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 653 4990977 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 32 653 4990976 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
- Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
root@server1:~#
pvdisplay
root@server1:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name server1
PV Size 4.76 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1218
Free PE 3
Allocated PE 1215
PV UUID bsF5F5-s2RN-ed1h-zjeb-4mAJ-aktq-kEn86r
root@server1:~#
vgdisplay
root@server1:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
- Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 4.76 GiB
PE Size 4.00 MiB
Total PE 1218
Alloc PE / Size 1215 / 4.75 GiB
Free PE / Size 3 / 12.00 MiB
VG UUID hMwXAh-zZsA-w39k-g6Bg-LW4W-XX8q-EbyXfA
root@server1:~#
lvdisplay
root@server1:~# lvdisplay
--- Logical volume ---
LV Name /dev/server1/root
VG Name server1
LV UUID b5A1R5-Zhml-LSNy-v7WY-NVmD-yX1w-tuQVUW
- LV Write Access read/write
LV Status available
# open 1
LV Size 4.49 GiB
Current LE 1149
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:0
--- Logical volume ---
LV Name /dev/server1/swap_1
VG Name server1
LV UUID 2UuF7C-zxKA-Hgz1-gZHe-rFlq-cKW7-jYVCzp
LV Write Access read/write
LV Status available
# open 1
LV Size 264.00 MiB
Current LE 66
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:1
root@server1:~#
- Cài đặt mdadm
Một trong những công cụ quan trọng nhất để thiết lập chế độ RAID là
mdadm. Sử dụng câu lệnh sau để cài đặt:
aptitude install initramfs-tools mdadm
Sau đó, tiến hành tải thêm 1 vài module kernel khác (để tránh phải khởi
động lại hệ thống):
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
Tiếp theo chạy câu lệnh sau:
cat /proc/mdstat
Và kết quả trả về sẽ có dạng như sau:
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4]
[raid10]
unused devices:
root@server1:~#
Chuẩn bị cho phân vùng /dev/sdb
- Để tạo RAID1 array trên hệ thống đang hoạt động sẵn, chúng ta cần chuẩn
bị phân vùng /dev/sdb cho RAID1, sau đó copy toàn bộ nội dung của
/dev/sda tới phân vùng đó, và cuối cùng thêm /dev/sda tới RAID1 array.
Trước tiên ta copy toàn bộ bảng phân vùng từ /dev/sda tới /dev/sdb, vì vậy
cả 2 ổ đĩa đều có kết quả như nhau:
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Và kết quả trả về sẽ có dạng như sau:
root@server1:~# sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Checking that no-one is using this disk right now ...
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
OK
Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 499711 497664 83 Linux
/dev/sdb2 501758 10483711 9981954 5 Extended
/dev/sdb3 0 - 0 0 Empty
- /dev/sdb4 0 - 0 0 Empty
/dev/sdb5 501760 10483711 9981952 8e Linux LVM
Warning: partition 1 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
root@server1:~#
Sử dụng câu lệnh sau:
fdisk -l
và cả 2 ổ cứng sẽ như thế này:
root@server1:~# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006b7b7
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
- /dev/sda2 32 653 4990977 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 32 653 4990976 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2 32 653 4990977 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sdb5 32 653 4990976 8e Linux LVM
root@server1:~#
Tiếp theo, tiến hành chuyển đổi định dạng của 3 phân vùng trên /dev/sdb
thành Linux raid autodetect:
fdisk /dev/sdb
root@server1:~# fdisk /dev/sdb
WARNING: DOS-compatible mode is deprecated. It's strongly
recommended to
- switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help):
- 1 FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16
- Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help):
- /dev/sda1 * 1 32 248832 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 653 4990977 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 32 653 4990976 8e Linux LVM
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 32 248832 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdb2 32 653 4990977 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sdb5 32 653 4990976 fd Linux raid autodetect
root@server1:~#
Để chắc chắn rằng không còn gì sót lại từ quá trình cài đặt RAID trước trên
/dev/sdb, thực hiện câu lệnh sau:
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5
Nếu không còn gì sót lại từ RAID trước kia, mỗi câu lệnh bên trên sẽ trả lại
thông báo lỗi như sau (không có gì phải lo lắng):
- root@server1:~# mdadm --zero-superblock /dev/sdb1
mdadm: Unrecognised md component device - /dev/sdb1
root@server1:~#
Còn lại với các trường hợp khác, câu lệnh sẽ không hiển thị bất kỳ thông báo
nào.
Tạo hệ thống RAID Arrays
Trong bước tiếp theo, chúng ta sẽ tiến hành khởi tạo RAID arrays /dev/md0
và /dev/md1. Trong đó, /dev/sdb1 sẽ được thêm vào /dev/md0 và/dev/sdb5
tới /dev/md1. Nhưng /dev/sda1 và /dev/sda5 vẫn chưa thể thêm vào thời
điểm hiện tại (bởi vì hệ thống được cài đặt và hoạt động trên những phân
vùng này), do vậy ta phải sử dụng cú pháp missing trong các câu lệnh sau:
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb5
Câu lệnh:
cat /proc/mdstat
chỉ ra rằng chúng ta đang có 2 RAID arrays xuống cấp ([_U] hoặc [U_] có
nghĩa là 1 array bị xuống cấp, còn [UU] vẫn ổn):
root@server1:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4]
[raid10]
md1 : active raid1 sdb5[1]
4990912 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
248768 blocks [2/1] [_U]
- unused devices:
root@server1:~#
Tiếp theo, tạo file hệ thống (ext2) trên RAID array non-LVM /dev/md0:
mkfs.ext2 /dev/md0
Và LVM RAID array trên /dev/md1. Để chuẩn bị cho LVM, thực hiện lệnh
sau:
pvcreate /dev/md1
Sau đó thêm /dev/md1 tới volume group server1:
vgextend server1 /dev/md1
Kết quả của
pvdisplay
sẽ trông giống như sau:
root@server1:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda5
VG Name server1
PV Size 4.76 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1218
Free PE 3
Allocated PE 1215
PV UUID bsF5F5-s2RN-ed1h-zjeb-4mAJ-aktq-kEn86r
- --- Physical volume ---
PV Name /dev/md1
VG Name server1
PV Size 4.76 GiB / not usable 1.94 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 1218
Free PE 1218
Allocated PE 0
PV UUID rQf0Rj-Nn9l-VgbP-0kIr-2lve-5jlC-TWTBGp
root@server1:~#
Kết quả của
vgdisplay
sẽ có dạng như sau:
root@server1:~# vgdisplay
--- Volume group ---
VG Name server1
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
- Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size 9.52 GiB
PE Size 4.00 MiB
Total PE 2436
Alloc PE / Size 1215 / 4.75 GiB
Free PE / Size 1221 / 4.77 GiB
VG UUID hMwXAh-zZsA-w39k-g6Bg-LW4W-XX8q-EbyXfA
You have new mail in /var/mail/root
root@server1:~#
Bước tiếp theo là điều chỉnh /etc/mdadm/mdadm.conf như sau:
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
Hiển thị nội dung của file:
cat /etc/mdadm/mdadm.conf
Và bạn sẽ thấy thông tin chi tiết của 2 RAID array:
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
- # by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions
# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes
# automatically tag new arrays as belonging to the local system
HOMEHOST
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Wed, 16 Jun 2010 20:01:25 +0200
# by mkconf $Id$
ARRAY /dev/md0 level=raid1 num-devices=2
UUID=90f05e41:bf936896:325ecf68:79913751
ARRAY /dev/md1 level=raid1 num-devices=2
UUID=1ab36b7f:3e2031c0:325ecf68:79913751
Tiếp theo là chính sửa /etc/fstab:
vi /etc/fstab
# /etc/fstab: static file system information.
#
- # Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
#
proc /proc proc nodev,noexec,nosuid 0 0
/dev/mapper/server1-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
#UUID=67b1337f-89a2-4729-a6c8-6d43ba82d1f1 /boot ext2 defaults 0 2
/dev/md0 /boot ext2 defaults 0 2
/dev/mapper/server1-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
Thay thế /dev/sda1 với /dev/md0 trong /etc/mtab:
vi /etc/mtab
/dev/mapper/server1-root / ext4 rw,errors=remount-ro 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
none /sys sysfs rw,noexec,nosuid,nodev 0 0
none /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
none /dev devtmpfs rw,mode=0755 0 0
none /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
none /dev/shm tmpfs rw,nosuid,nodev 0 0
none /var/run tmpfs rw,nosuid,mode=0755 0 0
none /var/lock tmpfs rw,noexec,nosuid,nodev 0 0
nguon tai.lieu . vn