linux 服务器那些说(2)

经过短暂的修复服务器之后,没想到服务器又不能工作了,又要去折腾,经过前面的经验,发现服务器的硬盘损坏。而且不是独立的硬盘,而是阵列里的硬盘,幸好服务器里的文件有备份,于是就必须找出坏的硬盘并重新组阵列。

首先要理解阵列是什么,常见的阵列有几种。

RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损 失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID可以充分发 挥出多块硬盘的优势,可以提升硬盘速度,增大容量,提供容错功能够确保数据安全性,易于管理的优点,在任何一块硬盘出现问题的情况下都可以继续工作,不会 受到损坏硬盘的影响。

RAID 为 Redundant Array of Indepent Disks (独立磁盘冗余阵列) 的缩写,其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下一个或多个方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。最常用的四种RAID为 RAID 0、RAID 1、RAID 5、RAID 10。

我们将会使用 mdadm 这个Ubuntu上的工具创建和管理磁盘阵列。

前面已经介绍了服务器的raid 阵列是由8个硬盘组成的raid6, 那么现在剔除一个坏的硬盘,由7个硬盘重新组raid6.如果我们事先不知道服务器上是否有阵列和不知道阵列的配置是,我们需要看下配置文件:cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid6 sdh[6] sdg[5] sdf[4] sdb[0] sdd[2] sdc[1] sde[3]

9766917120 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/7] [UUUUUUU]

bitmap: 0/15 pages [0KB], 65536KB chunk

从这里可以看出是raid 6 。

第二步要卸载,移除挂载的阵列

df -h :

Filesystem Size Used Avail Use% Mounted on

udev 32G 0 32G 0% /dev

tmpfs 6.3G 45M 6.3G 1% /run

/dev/sda1 1.8T 1.7T 31G 99% /

tmpfs 32G 192K 32G 1% /dev/shm

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 32G 0 32G 0% /sys/fs/cgroup

/dev/sdi 5.5T 4.3T 879G 84% /backup

/dev/md0 9.1T 1.3T 7.4T 15% /raid/Global

tmpfs 6.3G 0 6.3G 0% /run/user/1002

tmpfs 6.3G 0 6.3G 0% /run/user/1012

tmpfs 6.3G 0 6.3G 0% /run/user/1001

tmpfs 6.3G 64K 6.3G 1% /run/user/1004

看到挂载的阵列是 /dev/md0,卸载阵列:sudo umount /dev/md0

然后移除此阵列:sudo mdadm --stop /dev/md0

sudo mdadm --remove /dev/md0

再查看一下挂载情况: df -h

Filesystem Size Used Avail Use% Mounted on

udev 32G 0 32G 0% /dev

tmpfs 6.3G 45M 6.3G 1% /run

/dev/sda1 1.8T 1.7T 31G 99% /

tmpfs 32G 192K 32G 1% /dev/shm

tmpfs 5.0M 0 5.0M 0% /run/lock

tmpfs 32G 0 32G 0% /sys/fs/cgroup

/dev/sdi 5.5T 4.3T 879G 84% /backup

tmpfs 6.3G 0 6.3G 0% /run/user/1002

tmpfs 6.3G 0 6.3G 0% /run/user/1012

tmpfs 6.3G 0 6.3G 0% /run/user/1001

tmpfs 6.3G 64K 6.3G 1% /run/user/1004

此时md0 已经没有挂载了。

之前的磁盘已经做过阵列,我们需要查看是否是超级快(SUPERBLOCK):lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

NAME SIZE FSTYPE TYPE MOUNTPOINT

sda 00G disk

sdb 00G disk

sdc 00G linux_raid_member disk

sdd 00G linux_raid_member disk

sde 00G disk

sdf 00G disk

sdg 00G disk

sdh 00G disk

sudo mdadm --zero-superblock /dev/sdc

sudo mdadm --zero-superblock /dev/sdd

由于阵列是在/etc/fstab 文件内知道挂载,在这里还需要注释之前的文件。

# /dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0

同时需要移除之前原有的阵列设置:

# ARRAY /dev/md0 metadata=1.2 name=mdadmwrite:0 UUID=7261fb9c:976d0d97:30bc63ce:85e76e91

最后更新 initramfs 系统:

sudo update-initramfs -u

重新组建阵列

sudo mdadm --creat --verbose /dev/md0 --level=6 --raid-devices=7 /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg

提示成功说明已经创建成功了。

阵列创建成功了还需要挂载文件系统:

sudo mkfs.ext4 -F /dev/md0

在文件系统上创建挂载点文件夹:

sudo mkdir -p /mnt/raid/Global

挂载阵列至挂载点文件夹上

sudo mount /dev/md0 /mnt/raid/Global

检查是否已经具有新的磁盘空间:

df -h : /dev/md0 9.1T 1.3T 7.4T 15% /raid/Global

现在文件系统已经成载挂载将可以访问了。

如何设置开机自动挂载

为了确保阵列开机时被载入,我们应该调整一下 /etc/mdadm/mdadm.conf 的配置文件,我可以加以下的指令使系统在启动自检时扫描磁盘阵列的详细信息:

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

另外,你可以更新 initfamfs 或者初始化RAM文件系统,这样一来阵列会在启动前就可以生效:sudo update-initramfs -u

最重要的一点是一定要在 /etc/fstab 配置文件内加入自动挂载的设置:

echo '/dev/md0 /mnt/md0 ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab

这样 ubuntu 启动后就会自动将磁盘阵列挂入了。

-----------------------------------------------------

更多科技生活消息,请关注安卓ROM定制。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180801G0KAKF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券