红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > Ubuntu

Ubuntu server 如何用两个3T硬盘做RAID1?

发布时间:2012-10-24 16:04:06来源:红联作者:xtayfhvk
Ubuntu server 如何用两个3T硬盘做RAID1?
文章评论

共有 9 条评论

  1. cfcratlhzwd 于 2012-10-25 17:17:42发表:

    我要积分。。。

  2. cfcratlhzwd 于 2012-10-25 17:16:51发表:

    我要积分。。。

  3. cfcratlhzwd 于 2012-10-25 17:16:49发表:

    我要积分。。。

  4. cfcratlhzwd 于 2012-10-25 17:16:47发表:

    我要积分。。。

  5. cfcratlhzwd 于 2012-10-25 17:16:45发表:

    我要积分。。。

  6. cfcratlhzwd 于 2012-10-25 17:16:43发表:

    我要积分。。。

  7. zjw02016 于 2012-10-25 11:00:47发表:

    不错,挺好的,攒钱下载哈~

  8. okzokz123 于 2012-10-25 10:23:39发表:

    [i=s] 本帖最后由 okzokz123 于 2012-10-25 11:00 编辑 [/i]

    ****** 首先,3TB硬盘由于不能继续做成MBR分区了,否则不能认2TB以后的磁盘空间,所以要做成GPT磁盘,下面是个例子。
    **** 先要了解一下GPT分区
    ******* linux的两种 gpt 分区方案 *********
    保护MBR--GPT头(EFI信息区-1扇区)--分区表(2~33扇区)--ESP--MSR--分区(N个,系统和数据区;非UEFI引导需要分BIOS boot partition)和剩余空间--分区表备份扇区(2~33扇区备份)--GTP头备份扇区(EFI信息区-1扇区备份)
    在用于加载操作系统的磁盘上,EFI系统分区(ESP)应该是第1个分区,MSR应该是第2个分区。在非系统磁盘上,由于不用于启动操作系统的GPT磁盘不包含EFI系统分区,因此MSR应该是第1个分区。EFI系统分区(ESP)不是EFI信息(GPT头),这个不要搞混淆。
    虽然GPT是EFI项目的派生产品,但是GPT本身并不依赖EFI,这个必须要明确。
    能否使用GPT分区,取决于三个支持条件,一是OS内核,二是引导管理器,也就是Bootloader,第三就是磁盘工具,比如分区工具等等。

    一:主板不支持UEFI - 普通的BIOS兼容分区+GPT,和正常的MBR分区安装Linux一样,安装程序会自动识别GPT和BIOS兼容分区并且把引导管理器安装到BIOS兼容分区里面(推荐使用Grub2的发行版)。
    DiskGenius进行预先分引导启动区,分区类型是 BIOS boot partition ,大小一般1~2MB左右就足够了。这个分区的作用是存放引导管理器(一般是Grub2,GRUB2 包含 GPT 支持;Grub legacy0.97默认不支持GPT,需要额外打补丁)的引导代码。其他的分区就和正常的GPT一样了,可以随意分配。用 cgdisk 或 GNU Parted 创建 2 MB 的无文件系统分区。只要位于磁盘的前 2TiB 空间内,分区位置没有要求。但是建议放在磁盘开始位置,/boot 之前。cgdisk 中设置类型为 "EF02" 或在GNU Parted 中设置 set bios_grub on 标记。

    二:主板支持UEFI - UEFI+GPT
    ESP的作用就是存放操作系统的引导管理器以及 EFI 文件;GNU Parted 认为 ESP 拥有引导标记集。ESP 通常 200MB 左右,并针对 FAT-32 格式化。它包含引导过程中 EFI 可以使用的驱动程序。如果您的计算机使用 BIOS 引导,则不需要这个分区。许多 GPT 分区工具在每个分区之后创建 128MB 左右的空间(ESP 不适用这个规则)。这个规则是为了使磁盘工具可以使用这个空间来帮助完成它们的任务。

    MSR分区即 Microsoft 保留 (MSR) 分区。是每个 GUID 分区表 (GPT)磁盘都要求的分区。系统组件可以将 MSR 分区的部分分配到新的分区以供它们使用。例如,将基本 GPT 磁盘转换为动态磁盘后,系统分配的 MSR 分区将被用作“逻辑磁盘管理器”(LDM) 元数据分区。MSR 分区的大小会因 GPT 磁盘的大小不同而发生变化。对于小于 16 GB 的磁盘,MSR 分区为 32 MB。对于大于 16 GB 的磁盘,MSR 分区为 128 MB。MSR 分区在“磁盘管理”中不可见,用户也无法在 MSR 分区上存储或删除数据。不装Windows的话,只分ESP即可,把磁盘分区类型转换成 GPT 时,DiskGenius会提示创建ESP分区。如果要和Windows组双系统,则需要分配MSR分区,Microsoft 建议所有 GPT 磁盘都包括 MSR。此分区必须存在于 ESP 和 Windows 操作系统分区之间。即 ESP+MSR 才能实现双系统.

    总结:
    1.BIOS boot partition //2M即可,从BIOS引导GPT需要,仅适用于BIOS+linux+GPT,位置:分区表后,硬盘前2TB内任意位置,建议放在磁盘开始位置,/boot 之前
    2.ESP //200M即可-fat32格式,UEFI需要,不论系统类型,双启时该分区为 boot on 标识
    3.MSR //200M即可,UEFI+windows或双启需要
    4.GPT数据盘以上三个分区都可以不要,但将不能在该盘上安装系统。

    *** parted命令分gpt分区 ****
    一:分区(sudo或root未挂载分区的情况下创建分区)
    primary/主分区/extended/扩展分区?/logical/逻辑分区? (只输入mkpart就有交互提示,答首字母即可,然后选择分区类型的时候输入linux-swap 即创建交换分区)其他如:
    文件系统类型? [ext2]? fat32
    分区的ID号:主分区/扩展分区=1~4 ; 逻辑分区=5~
    # parted /dev/sdb //或 parted 后用select /deb/sdx 来选择磁盘
    (parted) mklabel gpt //将MBR磁盘格式化为GPT,或msdos
    (parted) mkpart primary 0 100 //划分一个起始位置为0大小为100M的主分区
    parted /dev/sdx mkpart primary 0 100 //划分一个起始位置为0大小为100M的主分区。
    (parted) mkpart primary 100 200 //划分一个起始位置为100M大小为100M的主分区
    (parted) mkpart primary 0 -1 //划分所有空间到一个分区,-1表示硬盘最后一个扇区,就是硬盘的最末尾处,数字为负数表示从磁盘末尾开始计算;如果指定 1M 的起始值,然后扇区将得到合理对齐
    (parted) rm //删除已经存在的分区
    分区编号? 1 //指定要删除的分区编号 I / C I:删除;C:取消
    (parted) rescue start end //在开始和结束的大概区域搜索误删丢失的分区,后提示恢复,start end 可填入大概的值
    (parted) set 1 boot on 将编号为1的分区的boot 标记设定为(on生效)或(off失效),有boot、lba(LBA模式)、raid、LVM(大写)、hidden(隐藏)或mac(linux等)的root、swap
    (parted) print //查看当前分区
    (parted) quit //退出
    (parted) mklabel msdos //如果要反过来将GPT磁盘转化为MBR磁盘
    # parted -l //直接在命令模式下显示所有设备的分区表
    # parted /dev/sdb print //直接在命令模式下显示/dev/sdb的分区表

    *****然后做软RAID,需要注意的是/boot 不能在软raid中,所以安装时要单独分出来。后面的/和/home都可以做成软raid,根据你的需要来做了。
    软RAID:如LVM一样在一块硬盘上单独分出/boot,/根分区可以由MD创建;RAID0 不适用mdadm的添加删除操作
    创建:
    1. mdadm -C /dev/md1 -a yes -n 2 -l 1 -c 32 /dev/sdb1 /dev/sdb2 //创建RAID1 有/dev/sdb1和/dev/sdb2,chunk size的大小必须是2的N次方 n大于1 必须是4的倍数,stride是每次写入raid成员的block数,即64KB的数据要写多少次。stride 等于 chunk size / filesystem block size,创建文件系统时指定

    或 mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/hde1 /dev/hdf2 /dev/hdg1 //用 RAID5 模式创建 md0,-x(--spare-devices)参数用于指定冗余磁盘的数量,--grow(或者其缩写-G)增加,和 --raid-devicess(或者其缩写-n)参数再加上合适的设备个数。扩展后阵列中原来的热备盘变为活跃磁盘

    mdadm /dev/md0 -a /dev/sdd1 //临时增加一个设备(分区)到 RAID 中

    2. cat /proc/mdstat //确定没有与初始化相关的信息。如果还有,请等待...;也用来最终确定创建状态或运行状态。

    3. mkfs.ext4 /dev/md0 //格式化 md0 设备
    mkfs.ext4 -j -b 4096 -E stride=16 /dev/md0,意为将/dev/md0格式化为ext4每个块大小为4k,在使用RAID读取数据时每次存取16个块。这样可以提高RAID的磁盘性能。

    4. mdadm -Ds >> /etc/mdadm.conf //首次使用要创建RAID的配置信息文件,因为系统有时不会自动创建,所以是必须的,也要备份该文件。
    mdadm -D /dev/md0 //查看RAID的信息。

    5. mdadm -A /dev/md0 /dev/sdb /dev/sdc /dev/sdd //启动阵列 md0 即由sdb、sdc、sdd组成的md0
    mdadm -As /dev/md0 //已有/etc/mdadm.conf 的可以用s来查找

    6. /dev/md0 /moutpiont ext4 defaults 1 2 //写入 fstab 的自动挂载

    7. # mdadm --monitor --mail=root@localhost --program=/root/md.sh --syslog --delay=300 /dev/md0 --daemonise //配置每300秒mdadm监控进程查询MD设备一次,当阵列出现错误,会发送邮件给指定的用户,执行事件处理的程序并且记录上报的事件到系统的日志文件。使用--daemonise参数(或者其缩写-f)使程序持续在后台运行。如果要发送邮件需要sendmail程序运行,当邮件地址被配置为外网地址应先测试是否能发送出去。/etc/init.d/中有mdmonitor脚本,可以监控RAID将信息发送给/etc/mdadm.conf中定义的邮箱

    8. # tail -f /var/log/messages //查看阵列或者阵列中的设备发生过的事件

    9. # mdadm -S /dev/md0 //停止RAID,一般不用,即使添加移除设备也不需要停止阵列。

    应用(替换设备):
    # unount /mountpiont //umount即停止上层应用
    # mdadm --query /dev/md0 //查询RAID设备的基本信息 -Q
    # mdadm /dev/md0 --fail /dev/sdb //指定损坏的磁盘 --fail(或者其缩写-f)
    # mdadm /dev/md0 --remove /dev/sdb //移除某个磁盘 --remove(或者其缩写-r)
    # mdadm /dev/md0 --add /dev/sdd //如果阵列没有热备磁盘,可以使用--add(或者其缩写-a)参数增加热备磁盘;如果阵列带有spare磁盘,那么自动将损坏磁盘上的数据(文件系统格式和用户数据)重构到新的spare磁盘上
    # mdadm -G /dev/md0 --raid-devices 4 --size=xxxx //扩容(一般不需要,特殊情况下,如做RAID的磁盘大小不等),使用模式--grow(或者其缩写-G)增加以及--size参数(或者其缩写-z 小z 默认KB)就能分别扩展阵列所使用每个块设备的大小
    # cat /proc/mdstat //确定没有与初始化相关的信息。如果还有,请等待...
    # mount /dev/md0 /mountpiont //挂载使用

    关于重装系统后:由于没有动superblocks所以直接用 mdadm -A /dev/md0 /dev/sdxx /dev/sdxx /dev/sdxx 加载上来就行了

    删除:
    1. umount /moutpiont //移除挂载点

    2. mdadm --stop /dev/md0 //停止设备,必须的 --stop(或 -S)

    3. mdadm /dev/md1 -f /dev/sdbx //模拟表示为坏盘后才能移除,(RAID0无法标示成坏盘)

    4. mdadm /dev/md0 --fail /dev/sdx --remove /dev/sdbxx //删除所有raid对应的磁盘或分区,一个是磁盘一个是分区
    或 mdadm /dev/md1 -r /dev/sdb2 //移除磁盘/dev/sdb2

    5. mdadm --misc --zero-superblock /dev/sdxx // 清空磁盘或分区(根据创建内容来删除)超级块中的raid信息 (必须先停止设备)
    rm -rf /dev/md0 //硬删除,不推荐

    6. dpkg-reconfig mdadm //若有问题则重新配置生成initrd文件

  9. Permanent 于 2012-10-25 08:53:41发表:

    帮顶