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 刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章