linux 磁盘管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 磁盘管理相关的知识,希望对你有一定的参考价值。

  • 创建设备文件

        mknod /app/sda b 8 0
        mknod /app/zhongduan1 c 4 1
  • 命名规则

      • centos5及之前
        ide /dev/hda
        /dev/hdb
        ...
        /dev/hdaa
        sata/sas/scsi/usb /dev/sda
        /dev/sdb
      • centos6及之后

               sata/sas/scsi/usb/ide  /dev/sda

     kvm虚拟机的虚拟硬盘   /dev/vda

     xen虚拟机的虚拟硬盘   /dev/xvda

      vmware的虚拟硬盘      /dev/sda

  • 磁盘的三围

     c:2^10=1024 c:表示柱面
     h:2^8=256      h:表示磁头也是磁道面
     s:2^6=64        s:表示扇区

一个扇区大小512byte
256*64*1024*512/1024/1024/1024=8GB

单位大小:K, M, G, T, P, E, Z, Y, B, N, D

1.Bios basic input/output system 自检

2.由第一启动项,引导OS

3.MBR Master boot record 主引导记录
446 boot loader
        lilo   linux loader
        grub    
        grub2
16*4=64 分区

55 AA  结束位

16字节   CHS  24bit
分区是否活动   head    扇区6    2+  8 =10 柱面   分区的类型     head    扇区6    2+  8 =10 柱面
 1          2              3        4          5               6     7           8

9     16 表示扩展分区
  • dd命令

      skip=xxx 是在备份时对if后面的部分也就是原文件跳过多少块
      seek=xxx 是在备份时对of后面的部分也就是目标文件跳过多少块开始写

实验一:备份mbr,并破坏,再恢复
1.备份mbr
dd if=/dev/sda of=/app/mbr.img bs=1 count=512
2.将mbr.img 复制到其他主机 sz /app/mbr.img
3.破坏mbr
dd if=/dev/zero of=/dev/sda bs=1 count=512
4.关机
5.在另一个主机上将被破坏的硬盘添加
6.在vmware虚拟机,新加硬盘不用重启的生效方法
echo ‘- - -‘ > /sys/class/scsi_host/host0/scan
7.恢复
dd if=mbr.img of=/dev/sdb
8.poweroff
9.开启被恢复的主机
10.从恢复机中删除故障硬盘


实验二:仅破坏分区表,并恢复.
dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
dd if=/app/mbr.img of=/dev/sda bs=1 count=64 skip=446 seek=446


实验三:新增硬盘sdb,并使用sda的mbr备份来恢复sdb的分区表
dd if=/app/mbr.img of=/dev/sdb bs=1 count=66 skip=446 seek=446

  • lsblk
  • parted

     parted 支持msdos和gpt
     交互和非交互
     parted /dev/sda
     parted -l 列出所有硬盘的分区信息
     parted /dev/sda print 列出指定硬盘的分区
     parted /dev/sdb mklabel msdos 设置硬盘的分区类型
                        或gpt
     parted /dev/sdb mklabel msdos -s 自动回答yes
     parted /dev/sdb mkpart primary 1 2G
     parted /dev/sdb mkpart primary 2G 4G
     parted /dev/sdb mkpart primary 4G 6.5G
     parted /dev/sdb mkpart extended 6.5G 21.5G
     parted /dev/sdb mkpart logical 6.5G 7G
    
     fdisk 支持msdos,在centos7中也支持gpt(不建议使用)
     fdisk -l 查看所有硬盘的分区信息
     fdisk -l /dev/sda 查看指定硬盘的分区信息
  • fdisk

     fdisk /dev/sdb
     o 设置msdos分区表
     g 设置gpt分区表(不建议使用)
     m 帮助
     n 创建分区
     p 主分区
     e 扩展分区 (请把所有空间分给扩展)
            起始的扇区数 一般直接回车,取可用的最小扇区
            结束的扇区数 一般用+XX K/M/G 来指定具体分多少大小的分区
     q 退出不保存
     w 退出并保存    
     t 设置分区的类型
     L 查看分区的类型所对应的代码表示方式
    d 删除指定分区
    a 设置该分区为启动分区,或设置为非启动
    p 显示分区表
    u 更新显示分区起止的单位,在扇区和柱面之间切换

    非交互方式
    echo -e "n\np\n\n\n+1G\nw\n" |fdisk /dev/sdb &> /dev/null

  • gpgdisk

      gdisk  只能划分gpt分区
      gdisk -l 列出所有硬盘分区表
      gdisk -l /dev/sdb 列出指定硬盘的分区表
      gdisk /dev/sdb 对分区进行划分
      o 创建gpt分区表
      m 帮助
      n 创建分区
           起始的扇区数 一般直接回车,取可用的最小扇区
           结束的扇区数 一般用+XX K/M/G 来指定具体分多少大小的分区
     q 退出不保存
     w 退出并保存    
      t 设置分区的类型
      L 查看分区的类型所对应的代码表示方式
     d 删除指定分区
      p 显示分区表
    
     非交互方式
     echo -e "n\n\n\n+2G\n\nw\ny\n" |gdisk /dev/sdb
    
     cat /proc/partitions 当前内核所加载的分区表

 对于非系统所在硬盘,内核自动更新分区表,而对于系统所在硬盘,不能直接列新,要使用以下命令
通知内核读取分区表
cenots5\centos7: partprobe (centos6不可用)
centos6:partx -a /dev/sda  添加
partx -d --nr /dev/sda7 删除

以上是关于linux 磁盘管理的主要内容,如果未能解决你的问题,请参考以下文章

Linux磁盘管理的Linux管理命令

Linux磁盘管理系列 — 磁盘配额管理

【Linux命令】磁盘管理(逻辑卷与物理卷)

Linux 磁盘管理

Linux 下磁盘管理--逻辑卷--LV

Linux 磁盘管理