linux 服务器那些说(2)

安卓ROM定制2019-01-10 15:58:41

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


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


          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定制。





Copyright © 古田计算器虚拟社区@2017