这是我关于超级用户的第一个问题,因此如果我忘记提及某事,请询问。
我正在尝试设置一台家庭服务器,该服务器将用作文件服务器和媒体服务器。我安装了 Ubuntu Server 14.04,现在我正尝试使用 mdadm 设置一个总共由 5 个磁盘组成的 Raid5。创建 raid 后,我能够使用它,并且还可以从其他 PC 访问 raid。重新启动服务器后,raid 不再显示。我也无法组装 raid。
我已完成以下步骤:
创建 RAID
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=5 /dev/sda /dev/sdc /dev/sdd /dev/sde /dev/sdf
RAID 完成后(watch cat /proc/mdstat
),我将 RAID 配置存储起来
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
然后我删除了 mdadm.conf 中的部分条目。生成的文件如下所示:
# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#
# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers
#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 <system>
# instruct the monitoring daemon where to send mail alerts
MAILADDR root
# definitions of existing MD arrays
# This file was auto-generated on Fri, 14 Mar 2014 23:38:10 +0100
# by mkconf $Id$
ARRAY /dev/md0 UUID=b73a8b66:0681239e:2c1dd406:4907f892
检查 RAID 是否正常工作 ( mdadm --detail /dev/md0
) 将返回以下内容:
/dev/md0:
Version : 1.2
Creation Time : Sat Apr 19 15:49:03 2014
Raid Level : raid5
Array Size : 7813531648 (7451.56 GiB 8001.06 GB)
Used Dev Size : 1953382912 (1862.89 GiB 2000.26 GB)
Raid Devices : 5
Total Devices : 5
Persistence : Superblock is persistent
Update Time : Sat Apr 19 22:13:37 2014
State : clean
Active Devices : 5
Working Devices : 5
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : roembelHomeserver:0 (local to host roembelHomeserver)
UUID : c29ca6ea:951be1e7:ee0911e9:32b215c8
Events : 67
Number Major Minor RaidDevice State
0 8 0 0 active sync /dev/sda
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
5 8 80 4 active sync /dev/sdf
据我所知,这一切看起来都很好。下一步我创建了文件系统:
mke2fs -t ext4 /dev/md0
输出结果如下:
mke2fs 1.42.8 (20-Jun-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=512 blocks
244174848 inodes, 1953382912 blocks
97669145 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
59613 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, 1934917632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
然后我通过在文件末尾添加以下条目将其更改为 fstab:
/dev/md0 /data ext4 defaults,nobootwait,no fail 0 2
安装 RAID(mount -a
)后,我就可以使用它、创建文件、从其他电脑访问它……
现在问题来了:
重新启动服务器 ( reboot now
) 后,RAID 不再存在,即
- 没有 /dev/md0
- 空的 /proc/mdstat(除了个性设置)
- df -h 不显示 raid
- mdadm --assemble --scan 不执行任何操作
有人有什么建议吗?我做错了什么吗?
答案1
听起来你忘了一步 - 告诉 initramfs 在启动时加载你的阵列。你所有的步骤都是正确的,并且按时间顺序排列,但听起来你错过了最后一步。但考虑到我不知道你的服务器的当前状态,我建议你尝试以下操作:
启动并输入
mdadm --detail --scan
你看到了什么吗?如果看到了,你的阵列就在那里,应该可以工作(也就是说下面的解决方案可能没用)。我猜当你重新启动时,你根本看不到你的 RAID 驱动器。如果真是这样,
确保 MDADM 守护程序正在运行ps aux | grep mdadm
这将显示是否有任何 MDADM 进程正在运行(如果没有看到结果,请启动 MDADM)
确保阵列已安装
mount -a
更新 initramfs
update-initramfs -u
验证 MDADM 未运行同步或重建
watch cat /proc/mdstat
如果有任何处理,请先让它完成,以免搞砸你的阵列
重启并测试
答案2
通过使用分区而不是原始驱动器解决了我机器上的问题。因此,
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=5 /dev/sda /dev/sdc /dev/sdd /dev/sde /dev/sdf
这将是
mdadm --create --verbose /dev/md0 --level=5 --raid-devices=5 /dev/sda1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
确保在每个分区上设置 raid 标志(我使用了 gparted)。我的理解是,这允许 mdadm 守护程序查看分区并在启动时重新初始化阵列。
答案3
我的 RAID 磁盘在重启后也没有挂载。但是,我从 dmesg 中注意到,重启后 /dev/md0 被命名为 /deb/md127。我相应地修复了 fstab,从而解决了问题。
答案4
重启后,可以使用 mdadm --assemble --verbose /dev/md0 组装 mdadm。我认为启动顺序的早期阶段存在问题。