系统:
配备 Linux Mint 17.3 的笔记本电脑,1x SSD 用于系统,2x HDD 用于使用mdadm
.
情况:
由于不知道如何正确创建 RAID1,所以我创建得很糟糕。
GParted 显示一条警告,表明主
gpt
分区表不存在,并且它正在使用备份分区表,我认为它显示了两次GParted 显示两个 HDD 上的分区都包含
ext4
文件系统,而不是linux-raid
文件系统raid
GParted在两个 HDD 上均未显示该标志重新启动导致阵列无法工作,我的意思是它不仅没有自动安装,而且在不停止阵列并重新组装的情况下无法安装
可能还有其他我没有注意到的事情,比如我不知道阵列(我的意思是镜像)是否正常工作
答案1
在此答案中,请明确指出,两个阵列成员(驱动器)上的所有数据都将被销毁,因此请先备份!
打开终端并成为root
(su
);如果你有sudo
启用后,您还可以执行以下操作sudo -i
:看man sudo
对于所有选项):
sudo -i
mdX
检查数组中的 数字 ( ):
cat /proc/mdstat
假设它是md0
并且它安装在 上/mnt/raid1
,首先我们必须卸载并停止该阵列:
umount /mnt/raid1
mdadm --stop /dev/md0
我们需要擦除两个驱动器上的超级块,假设sda
和sdb
:
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
让我们开始工作吧;也就是说,如果之前有任何数据和文件系统,我们应该擦除驱动器。假设我们有 2 个成员:sda
, sdb
:
pv < /dev/zero > /dev/sda
pv < /dev/zero > /dev/sdb
如果您出于某种原因要跳过上一步,则需要擦除两个驱动器上的所有文件系统。然后检查是否没有留下任何东西,您可以在两个驱动器上使用 GParted 查看,如果有除 之外的任何文件系统unknown
,请将其擦除。
首先,我们擦除所有现有分区,假设sda
包含3个分区,则:
wipefs --all /dev/sda3
wipefs --all /dev/sda2
wipefs --all /dev/sda1
在两个驱动器上使用它并执行所有分区。
然后,我们使用以下命令擦除分区方案:
wipefs --all /dev/sda
wipefs --all /dev/sdb
然后,我们使用 GUID 分区表 (GPT) 初始化两个驱动器:
gdisk /dev/sda
gdisk /dev/sdb
在这两种情况下都使用以下内容:
o
Enter新的空 GUID 分区表 (GPT)
y
Enter以确认您的决定
w
Enter写入更改
y
Enter以确认您的决定
现在,我们需要对两个驱动器进行分区,但不要使用 GParted 执行此操作,因为它会在此过程中创建一个文件系统,这是我们不希望的,请gdisk
再次使用:
gdisk /dev/sda
gdisk /dev/sdb
在这两种情况下,请使用以下内容:
n
Enter对于新分区
Enter对于第一个分区 对于
Enter第一个扇区的默认值
Enter对于最后一个扇区的默认值
fd00
Enter对于 Linux RAID 类型
w
Enter写入更改
y
Enter以确认您的决定
要三重检查是否没有留下任何内容,您可以使用 GParted 查看两个新创建的分区,如果它们包含除 之外的任何文件系统unknown
,请将其擦除:
wipefs --all /dev/sda1
wipefs --all /dev/sdb1
您现在可以检查驱动器:
mdadm --examine /dev/sda /dev/sdb
应该说:
(type ee)
如果是,我们现在检查分区:
mdadm --examine /dev/sda1 /dev/sdb1
应该说:
No md superblock detected
如果是的话,我们可以创建 RAID1 阵列:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
我们将等到数组完全创建,我们可以通过以下方式观察这个过程:
watch -n 1 cat /proc/mdstat
创建数组后,我们应该查看其详细信息:
mdadm --detail /dev/md0
应该说:
State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0
现在我们在阵列上创建文件系统,如果您使用ext4
,最好避免这种情况,因为ext4lazyinit
会花费大量时间,因此得名“lazyinit”,因此我建议您避免这种情况:
mkfs.ext4 /dev/md0
相反,您应该使用以下命令强制进行完整的即时初始化:
mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/md0
通过指定这些选项,inode 和日志将在创建期间立即初始化,这对于较大的阵列很有用。
如果您选择采用快捷方式并ext4
使用“更好避免的命令”创建文件系统,请注意,ext4lazyinit
初始化所有索引节点将花费大量时间,您可以观察它直到完成,例如:
iotop
无论选择哪种方式进行文件系统初始化,都应该在完成初始化后挂载它。
我们现在为此 RAID1 阵列创建一些目录:
mkdir --parents /mnt/raid1
并简单地安装它:
mount /dev/md0 /mnt/raid1
由于我们基本上已经完成,我们可以再次使用 GParted 来快速检查它是否显示linux-raid
文件系统以及raid
两个驱动器上的标志。
如果是这样,我们就正确创建了带有 GPT 分区的 RAID1 阵列,现在可以在其上复制文件。
查看文件系统的 UUID md0
:
blkid /dev/md0
将 UUID 复制到剪贴板。
现在我们需要使用fstab
您最喜欢的文本编辑器进行编辑:
nano /etc/fstab
并添加一个条目:
UUID=<the UUID you have in the clipboard> /mnt/raid1 ext4 defaults 0 0
保存更改后您可以检查是否正确:
mount --all --verbose | grep raid1
应该说:
already mounted
如果是,我们保存阵列配置;如果您还没有md
创建任何设备,您可以简单地执行以下操作:
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
如果数组已经存在,只需运行前面的命令,而不重定向到conf文件:
mdadm --detail --scan
并手动将新数组添加到mdadm.conf
文件中。
最后,不要忘记更新你的 initramfs:
update-initramfs -u
检查您是否按照计划进行了所有操作,如果是,则可以重新启动:
reboot --reboot