mdadm
我在 debian 8.2 上设置 RAID1 阵列时遇到奇怪的行为。
设置阵列后,lsblk
显示:
simon@debian-server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
sdb 8:16 0 931.5G 0 disk
`-sdb1 8:17 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
sdc 8:32 0 232.9G 0 disk
|-sdc1 8:33 0 512M 0 part /boot/efi
|-sdc2 8:34 0 244M 0 part /boot
`-sdc3 8:35 0 232.2G 0 part
|-debian--server--vg-root 254:0 0 228.3G 0 lvm /
`-debian--server--vg-swap_1 254:1 0 3.9G 0 lvm [SWAP]
重启后lsblk
显示:
simon@debian-server:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
|-md0p1 259:0 0 811.6G 0 md
`-md0p2 259:1 0 346.1G 0 md
sdb 8:16 0 931.5G 0 disk
`-sdb1 8:17 0 931.5G 0 part
`-md0 9:0 0 931.4G 0 raid1
|-md0p1 259:0 0 811.6G 0 md
`-md0p2 259:1 0 346.1G 0 md
sdc 8:32 0 232.9G 0 disk
|-sdc1 8:33 0 512M 0 part /boot/efi
|-sdc2 8:34 0 244M 0 part /boot
`-sdc3 8:35 0 232.2G 0 part
|-debian--server--vg-root 254:0 0 228.3G 0 lvm /
`-debian--server--vg-swap_1 254:1 0 3.9G 0 lvm [SWAP]
我不知道 md0p1 和 md0p2 分区来自哪里。我/etc/fstab
和/etc/mdadm/mdadm.conf
他们都没有任何关于此事的内容。
parted
显示 上的一个分区md0
:
simon@debian-server:~$ sudo parted /dev/md0 print
Model: Linux Software RAID Array (md)
Disk /dev/md0: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0.00B 1000GB 1000GB ntfs
你知道 md0p1 和 md0p2 分区来自哪里吗?
我通过执行以下操作来设置数组:
删除现有设备(我已经这样做过几次):
sudo mdadm --stop /dev/md0 sudo mdadm --remove /dev/md0
零驱动器:
sudo dd if=/dev/zero of=/dev/sda bs=1M count=1024 sudo dd if=/dev/zero of=/dev/sdb bs=1M count=1024
创建分区表:
sudo parted /dev/sda mklabel gpt sudo parted /dev/sdb mklabel gpt
创建全盘分区:
sudo parted -a optimal /dev/sda mkpart primary '0%' '100%' sudo parted -a optimal /dev/sdb mkpart primary '0%' '100%'
在分区上设置 raid 标志:
sudo parted /dev/sda set 1 raid on sudo parted /dev/sdb set 1 raid on
创建RAID阵列:
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[ab]1
添加文件系统(我使用的是NTFS,但问题也发生在ext4上)
sudo mkfs.ntfs -f /dev/md0
答案1
你知道 md0p1 和 md0p2 分区来自哪里吗?
我认为它们正在被kpartx
或同等的人解释。 (手册页kpartx
说它是“从热插拔调用”,现在这通常意味着udev
)。
我认为如果您kpartx /dev/md0
在没有任何参数(或带有-v
)的情况下运行,它可能会显示相同的分区。
parted 显示 md0 上的一个分区
呃。 parted 可能会检测其他内容,例如文件系统,或者它是 MD 分区的事实,并将其视为更重要的。或者parted不支持与kpartx相同的一组分区表格式。或者其他一些差异。不会让我感到惊讶。
零驱动...
唔。你尝试过wipefs
吗?它支持多种分区格式,包括文件系统。某些格式可能在第一个兆字节之外有幻数。例如,GPT 分区表在驱动器末尾包含一个“尾部”,用作开头“标头”的备份。 wipefs
具体处理这种情况:http://karelzak.blogspot.co.uk/2011/11/wipefs8-improvements.html
我认为您还需要确保md0
在创建它后进行擦除。 (我相信会检查新 LV 上的任何格式并提示执行此操作,但对于新 MD 阵列lvcreate
则不然)。mdadm --create
请注意wipefs
,不能 100% 保证找到kpartx
所需的相同内容。 kpartx
是为 lvm/DM 项目创建的,并使用自己的分区代码。