我有三个 3 TB 驱动器,我尝试使用 mdadm 将它们组合成 RAID 5 设置,但遇到了一些问题。 (实际上,我将使用四个 3 TB 驱动器,但其中一个当前有数据,因此我需要先备份该数据。因此,我一直在使用其中三个驱动器来弄清楚如何获取一切正常,然后我将备份数据并使用所有四个驱动器重建)
首先,我按照此处概述的说明进行了初始配置:https://raid.wiki.kernel.org/index.php/RAID_setup
我最终得到:
root@VMHost:/home/lex# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Nov 10 22:41:00 2014
Raid Level : raid5
Array Size : 5860270080 (5588.79 GiB 6000.92 GB)
Used Dev Size : 2930135040 (2794.39 GiB 3000.46 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Tue Nov 11 05:14:13 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : VMHost:0 (local to host VMHost)
UUID : d058bef5:ae3c96bd:a3a7d216:cb6aca06
Events : 81
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 16 1 active sync /dev/sdb
3 8 64 2 active sync /dev/sde
然后我尝试使用命令在其上创建文件系统
root@VMHost:/home/lex# mkfs.ext3 -v -m .1 -b 4096 -E stride=128,stripe-width=256 /dev/md0
mke2fs 1.42.9 (4-Feb-2014)
fs_types for mke2fs.conf resolution: 'ext3', 'big'
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
183136256 inodes, 1465067520 blocks
1465067 blocks (0.10%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
44711 block groups
32768 blocks per group, 32768 fragments per group
4096 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
然而,当我尝试安装它时,我收到:
root@VMHost:/home/lex# mount /dev/md0 /mnt/md0/
NTFS signature is missing.
Failed to mount '/dev/md0': Invalid argument
The device '/dev/md0' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
此外,指定类型为 ext3:
root@VMHost:/home/lex# mount -t ext3 /dev/md0 /mnt/md0
mount: wrong fs type, bad option, bad superblock on /dev/md0,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so
所以,我想也许我需要事先在驱动器上创建分区,然后使用这些分区作为 RAID 设置(而不是整个驱动器),所以我拆开了 RAID 并开始在驱动器上创建分区,但事实并非如此。当我创建一个 gpt 驱动器时,似乎无法识别它
root@VMHost:/home/lex# parted /dev/sda
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: /dev/sda: unrecognised disk label
(parted) mklabel gpt
(parted) print
Error: /dev/sda: unrecognised disk label
(parted) quit
Information: You may need to update /etc/fstab.
对于 gpt 的设置,我尝试遵循我发现的其他一些说明https://plone.lucidsolutions.co.nz/linux/io/using-parted-to-create-a-raid-primary-partition它使用 msdos 作为磁盘标签,但由于这些是 3 TB 磁盘,我相信我需要使用 msdos 以外的其他东西,它支持更大的磁盘,因此我尝试了 gpt。
您知道为什么parted 无法识别磁盘标签,即使将其设置为gpt 本身之后也是如此吗?有没有比我现在所做的更好的方法来创建 RAID 设备?
编辑:执行 mount -t 命令后检查 dmesg (这些结果实际上是当我尝试格式化为 ext4 时的结果,这是我在 ext3 之前尝试过的)结果:
root@VMHost:/home/lex# dmesg | tail
[611756.731067] EXT4-fs (md0): VFS: Can't find ext4 filesystem
[611756.731488] EXT4-fs (md0): VFS: Can't find ext4 filesystem
[611756.731790] EXT4-fs (md0): VFS: Can't find ext4 filesystem
[611756.732391] FAT-fs (md0): bogus logical sector size 65535
[611756.732421] FAT-fs (md0): Can't find a valid FAT filesystem
[611756.733932] XFS (md0): bad magic number
[611756.733974] XFS (md0): SB validate failed with error 22.
[611756.735611] FAT-fs (md0): bogus logical sector size 65535
[611756.735621] FAT-fs (md0): Can't find a valid FAT filesystem
[611773.636148] EXT4-fs (md0): VFS: Can't find ext4 filesystem
编辑:我确信系统支持 GPT,因为一个驱动器已经安装了 GPT
root@VMHost:/u01# parted --list
Error: /dev/sda: unrecognised disk label
Error: /dev/sdb: unrecognised disk label
Model: ATA ST1000DM003-1CH1 (scsi)
Disk /dev/sdc: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 256MB 255MB primary ext2 boot
2 257MB 1000GB 1000GB extended
5 257MB 1000GB 1000GB logical lvm
Model: ATA ST3000DM001-1CH1 (scsi)
Disk /dev/sdd: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 3001GB 3001GB ntfs Basic data partition msftdata
Model: ATA ST3000DM001-1CH1 (scsi)
Disk /dev/sde: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 3001GB 3001GB primary
答案1
可能是parted被光盘上以前的信息混淆了,所以你可以先擦除每个驱动器的前几个扇区:
dd if=/dev/zero of=/dev/sda bs=1k count=1
之后,以下内容应该有效:
parted /dev/sda
unit TB
mklabel gpt
mkpart primary 0 4
print
quit
如果您计划随后添加第四个驱动器,则应考虑以降级模式创建 raid-5:
mdadm --create --name=DATA00 --level=5 --auto=part --verbose /dev/md0 \
--raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 missing
那么稍后添加驱动器将不需要太多额外的操作:
mdadm --add /dev/sdd1
如果你不在降级模式下创建,你将需要增加raid:
mdadm --grow --raid-devices=4 --backup-file=/root/grow_md0.bak /dev/md0
(这假设之前创建的未降级--raid-devices=3
)
我的 raid 上有 LVM,当我从 4 个光盘增加到 5 个光盘时,很容易扩展,尽管没有也应该可以。
我使用 mdadm 已经超过 10 年了,而且总是在分区上。我的阵列实际上由 3 个 3TB 驱动器和 2 个 4TB 驱动器组成(我将在 3TB 驱动器损坏时更换它们)。 3TB 驱动器完全是一个分区,4TB 驱动器有一个 3TB 兼容分区,其余的当前未使用,但 4TB 驱动器已分区,因此可以用于启动(系统中有一个额外的小型驱动器)我用它来启动,但我可能想摆脱它,以便打开一个 SATA 插槽来增加 raid 的数量。