====== [Draft]在已存在的 Ubuntu lvm 開機碟建立 RAID1 ======
* 環境 : Ubuntu 20.04 採用 iso 開機預設 lvm 建立開機碟 sda(32G)
* 目標 : 加入 sdb(32G) 設定 sda+sdb 成為 RAID1, 當 sda 損毀還能透過 sdb 開機使用, 並能加回更換後的 sda
===== 處理程序 =====
- 確認現有 sda 內的相關資訊
root@test-lvm-102:~# fdisk -l /dev/sda
Disk /dev/sda: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4F956088-02A8-402A-931B-440831A9F332
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 4198399 4194304 2G Linux filesystem
/dev/sda3 4198400 67106815 62908416 30G Linux filesystem
root@test-lvm-102:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 941M 0 941M 0% /dev
tmpfs 198M 1.0M 197M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 30G 4.5G 24G 16% /
tmpfs 986M 0 986M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 986M 0 986M 0% /sys/fs/cgroup
/dev/loop0 62M 62M 0 100% /snap/core20/1611
/dev/sda2 2.0G 108M 1.7G 6% /boot
/dev/loop1 68M 68M 0 100% /snap/lxd/22753
/dev/loop2 47M 47M 0 100% /snap/snapd/16292
tmpfs 198M 0 198M 0% /run/user/1000
root@test-lvm-102:~# pvdisplay
--- Physical volume ---
PV Name /dev/sda3
VG Name ubuntu-vg
PV Size <30.00 GiB / not usable 0
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 7679
Free PE 0
Allocated PE 7679
PV UUID 1yb1vq-CMMu-7NLs-nif3-QFVU-SrAd-r81xKs
root@test-lvm-102:~# vgdisplay
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <30.00 GiB
PE Size 4.00 MiB
Total PE 7679
Alloc PE / Size 7679 / <30.00 GiB
Free PE / Size 0 / 0
VG UUID 1ZEt2r-TSxy-jyR8-TBh8-W4tf-azfb-iRn4cG
root@test-lvm-102:~# lvdisplay
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID 7t6pa0-Fx5y-31DZ-lE1B-vKWP-v6at-nNLp0V
LV Write Access read/write
LV Creation host, time ubuntu-server, 2023-12-18 21:50:55 +0000
LV Status available
# open 1
LV Size <30.00 GiB
Current LE 7679
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
- 安裝 mdadm 套件(Ubuntu 20.04預設已安裝)
apt install initramfs-tools mdadm
並載入 Linux Kernel
modprobe md
modprobe linear
modprobe multipath
modprobe raid0
modprobe raid1
modprobe raid5
modprobe raid6
modprobe raid10
檢查 md 狀態
root@test-lvm-102:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
unused devices:
- 準備將 sdb 加入
root@test-lvm-102:~# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ... OK
Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new GPT disklabel (GUID: 4F956088-02A8-402A-931B-440831A9F332).
/dev/sdb1: Created a new partition 1 of type 'BIOS boot' and of size 1 MiB.
/dev/sdb2: Created a new partition 2 of type 'Linux filesystem' and of size 2 GiB.
/dev/sdb3: Created a new partition 3 of type 'Linux filesystem' and of size 30 GiB.
/dev/sdb4: Done.
New situation:
Disklabel type: gpt
Disk identifier: 4F956088-02A8-402A-931B-440831A9F332
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M BIOS boot
/dev/sdb2 4096 4198399 4194304 2G Linux filesystem
/dev/sdb3 4198400 67106815 62908416 30G Linux filesystem
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@test-lvm-102:~# fdisk -l /dev/sdb
Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4F956088-02A8-402A-931B-440831A9F332
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M BIOS boot
/dev/sdb2 4096 4198399 4194304 2G Linux filesystem
/dev/sdb3 4198400 67106815 62908416 30G Linux filesystem
將 /dev/sdb2 與 /dev/sdb3 的檔案系統類型設定為 Linux RAID
root@test-lvm-102:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): t
Partition number (1-3, default 3): 2
Partition type (type L to list all types): 29
Changed type of partition 'Linux RAID' to 'Linux RAID'.
Command (m for help): p
Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4F956088-02A8-402A-931B-440831A9F332
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M BIOS boot
/dev/sdb2 4096 4198399 4194304 2G Linux RAID
/dev/sdb3 4198400 67106815 62908416 30G Linux filesystem
Command (m for help): t
Partition number (1-3, default 3): 3
Partition type (type L to list all types): 29
Changed type of partition 'Linux filesystem' to 'Linux RAID'.
Command (m for help): p
Disk /dev/sdb: 32 GiB, 34359738368 bytes, 67108864 sectors
Disk model: QEMU HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 4F956088-02A8-402A-931B-440831A9F332
Device Start End Sectors Size Type
/dev/sdb1 2048 4095 2048 1M BIOS boot
/dev/sdb2 4096 4198399 4194304 2G Linux RAID
/dev/sdb3 4198400 67106815 62908416 30G Linux RAID
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
確認 /dev/sdb2 與 /dev/sdb3 內沒有 RAID 資訊
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
- 建立 RAID1 : /dev/sdb2 -> /dev/md0 , /dev/sdb3 -> /dev/md1
mdadm --create /dev/md0 --level=1 --raid-disks=2 --metadata=0.90 missing /dev/sdb2
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb3
root@test-lvm-102:~# mdadm --zero-superblock /dev/sdb2
mdadm: Unrecognised md component device - /dev/sdb2
root@test-lvm-102:~# mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb2
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
查看 md 狀態
root@test-lvm-102:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb2[1]
2097088 blocks [2/1] [_U]
md1 : active raid1 sdb3[1]
31436800 blocks super 1.2 [2/1] [_U]
unused devices:
格式化 /dev/md0 -> ext4 , /dev/md1 -> LVM
root@test-lvm-102:~# mkfs.ext4 /dev/md0
mke2fs 1.45.5 (07-Jan-2020)
Discarding device blocks: done
Creating filesystem with 524272 4k blocks and 131072 inodes
Filesystem UUID: f24c70d1-2144-4bd5-9870-8f2c138c940a
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
pvcreate /dev/md1
vgextend ubuntu-vg /dev/md1
pvdisplay
-
===== 參考網址 =====
* https://www.howtoforge.com/set-up-raid1-on-a-running-lvm-system-debian-etch
{{tag>lvm raid}}