磁盤管理

一、 設備文件

  一切皆文件

 1、 設備文件的類型

  設備文件一般默認存放在/dev下
   設備類型:
   塊設備:block,存取單位“塊”,磁盤 CD 軟盤 U盤
  下面我們來列舉一個塊設備文件的信息
磁盤管理
   b:代表塊設備文件
   8:主設備號
   0:次設備號
  字符設備:char,存取單位“字符”,鍵盤 鼠標 顯示器
  下面列舉一個字符設備文件的信息
磁盤管理
   c:表示這是一個字符設備文件
   設備文件:關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信
  設備號碼
   主設備號:major number,表示設備類型
   次設備號:minor numder,表示同一類型下的不同設備
磁盤管理

 2、設備文件的創建

  mknod 設備文件路徑 設備類型 主設備號 次設備號
  例:
磁盤管理
  /app/shebei:設備文件路徑,設備是設備文件名,可以隨便起一個
  b :塊設備文件
  8:住設備號
  5:次設備號
  細心的小朋友會注意到我創建的設備文件跟已有的設備文件/dev/sda5主設備號和次設備號一樣,其實創建設備文件也不算是創建,因爲設備文件是關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信,也就是說,一個設備文件就對應着系統的一個硬件,比如硬盤,內存,鼠標,鍵盤。b、c是區分是設備文件的類型,主設備號是區分同種類型的設備文件的不同設備,次設備號是區分同種設備的不同設備,所以當設備文件類型、主設備號、次設備號一樣的兩個設備文件對應的都是同一個設備。創建設備一個設備類型、主設備號、次設備號一樣的設備文件就相當於複製了一份這樣的一份設備文件只是更改了設備文件的名字和路徑而已,其實還是同一個設備。不信我們來使用fdisk查看一下這兩個設備文件是不是信息一樣
磁盤管理

二、 硬盤接口類型

  並行接口:
   IDE :133MB/s
   SCSI :640MB/s
  串口:
    SATA :6Gbps
    SAS :6Gbps
    USB :480MB/s

三、 硬盤的分類

  機械硬盤(HDD):Hard Disk Drive,即是傳統普通硬盤,主要由:盤 片,磁頭,盤片轉軸及控制電機,磁頭控制器,數據轉換器,接口,緩存 等幾個部分組成。機械硬盤中所有的盤片都裝在一個旋轉軸上,每張盤片 之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距 離比頭髮絲的直徑還小,所有的磁頭聯在一個磁頭控制器上,由磁頭控制 器負責各個磁頭的運動。磁頭可沿盤片的半徑方向運動,加上盤片每分鐘 幾千轉的高速旋轉,磁頭就可以定位在盤片的指定位置上進行數據的讀寫 操作。數據通過磁頭由電磁流來改變極性方式被電磁流寫到磁盤上,也可 以通過相反方式讀取。硬盤爲精密設備,進入硬盤的空氣必須過濾
  固態硬盤(SSD):Solid State Drive,用固態電子存儲芯片陣列而制 成的硬盤,由控制單元和存儲單元(FLASH芯片、DRAM芯片)組成。固 態硬盤在接口的規範和定義、功能及使用方法上與普通硬盤的完全相同, 在產品外形和尺寸上也與普通硬盤一致
  兩者的區別:
   (1)相較於HDD,SSD在防震抗摔、傳輸速率、功耗、重量、噪音上有明顯優 勢,SSD傳輸速率性能是HDD的2倍
   (2)相較於SSD,HDD在價格、容量、使用壽命上佔有絕對優勢
  硬盤有價,數據無價,目前SSD不能完全取代HHD
磁盤管理

四、 硬盤的組成

磁盤管理
  磁臂:用來移動磁頭
  電機:用來站東盤片
  磁頭:用來讀取盤片上的數據
磁盤管理
   每一個硬盤裏面都包含着多個盤片,而數據就存儲在這些盤片上,每一個盤片都有一個盤面,盤面上有劃分着一圈一圈的磁道,每一個磁道上有一小塊一小塊的扇區,數據就存儲在每一個扇區上,每一個扇區是規定512字節,所以一個硬盤的大小就等於
    512*每一個磁道的扇區數*磁道數*盤片數
  但是磁盤的內圈和外圈是不一樣大的,劃分着同樣的扇區數,但是外圈比內圈大也是512字節對於空間上是一大浪費,所以又有了ZBR區位記錄磁盤扇區結構如下圖
磁盤管理

五、 磁盤的大小

  磁盤大小的單位從小到大的排列
   B KB MB GB TB PB EB ZB YB BB NB DB
   1024 B =1 KB
   1024 KB = 1 GB
   1024 GB = 1 TB

六、 CHS和LBA

  CHS:採用24bit尋址
   其中 前十位表示cylinder,中間8位表示head,後面6位表示sector
   最大尋址空間8GB
  LBA:LBA是一個整數,通過轉換成CHS格式完成磁盤具體尋址
   LBA採用48個bit位尋址
   最大尋址空間128PB
  由於CHS尋址方式的尋址空間在大概8GB以內,所以在磁盤 容量小於大概8GB時,可以使用CHS尋址方式或是LBA尋址方 式;在磁盤容量大於大概8GB時,則只能使用LBA尋址方式

七、 使用分區空間

 1、 爲什麼分區

  優化I/O性能
  實現磁盤空間配額限制
  提高修復速度
  隔離系統和程序
  安裝多個OS
  採用不同文件系統

 2、 分區的兩種方式

  兩種分區方式:MBR,GPT
   MBR:分區不超過2T
   GPT:2T以上
  hexdump -C -n 512 /dev/sda -v:查看硬盤主引導信息

 3、 管理分區

  查看分區表
  lsblk 查看分區表(這個命令實際查看的是操作系統內緩存的分區表)
  fdisk -l 查看分區表(這個命令是實時查看的是硬盤中的分區表)
  創建分區使用
   fdisk 創建MBR分區
   gdisk 創建GPT分區
   parted 高級分區操作(創建、複製、調整大小等)
  partprobe重新設置內存中的內核分區表版本

  1. fdisk與gdisk新建分區

  gdisk是類fdisk的GPT分區工具,分區管理模式的子命令
  查看分區
   fdisk -l 查看分區
   fdisk -l /dev/sda 查看sda的分區情況
  管理分區
   fdisk /dev/sdb 進入管理分區模式
   分區管理模式的子命令
   p 分區列表
   t 更改分區類型
   n 創建新分區
   d 刪除分區
   w 保存並退出
   q 不保存並退出
  例圖:
磁盤管理
  使用fdisk命令不是實時生效的,並不是新建了一個分區,就馬上給硬盤分區,而是w保存之後才真正的新建了一個個分區

  2. parted命令

   parted的操作都是實時生效的,parted也可以創建刪除分區,一旦執行立即就生效了,所以一定要慎重,對於parted命令不熟悉的情況下,建議使用交互模式
   使用parted創建分區前一定要先創建相對應的分區表結構,不然創建分區是無法成功創建的,因爲系統不知道創建的是MBR或GPT分區
   parted /dev/sdb mklabel gpt|msdos :創建相對應的分區表結構(gpt分區或mbr分區)
   parted /dev/sdb print :顯示sdb的分區表信息
   parted /dev/sdb rm 1:刪除sdb上的分區號爲1 的分區
   parted -l:列出所有的分區信息
   parted /dev/sdb mkpart primary 1 200 (默認M):創建200M的分區
    1 200:分配從第一硬盤1到200M的空間給新建的分區
    如此再創建第二個分區時這前200M是不能再被分配的,所以第二個只能從未分配的位置開始分配,例: parted /dev/sdb mkpart primary 201 500 ;創建300M的分區,分區大小是由第二個數字減去第一個數字的出來的,單位是MB
   parted /dev/sdb :進入交互模式
   parted交互模式的子命令
    子命令有很多,具體help查看一下,這裏就列舉幾個常用的
    p:列出分區信息
    m:列出交互模式的man信息
    help:列出幫助信息,輸出結果跟m的一樣
    mklabel:創建磁盤分區表結構
    mkpart:創建分區
    rm:刪除分區
    quit:退出
   示例:使用parted命令在交互模式下創建一個200MB的分區和一個1G的分區,然後刪除第二個分區並退出。
第一步:進入交互模式
磁盤管理
第二步:創建分區表結構
磁盤管理
第三步:查看分區信息(因爲不知道此盤的糞污信息,所以不知道這上面是否有已存在的分區,當選擇分區大小時不知從多少M開始,容易出錯,以至於分區大小會發生改變)
磁盤管理
第四步:創建第一個200M的分區
磁盤管理
第五步:創建第二個1G的分區
磁盤管理
小知識:注意到第二個分區,我寫的分區起始位置是1G至2G,但是使用P命令時,起始位置則變成了1000M和2000M,說明使用parted命令分區是M和G的換算是1000:1,而不是我們認知的1024:1,所以在劃分分區時是有強迫症的小夥伴就想要1024M=1G的空間的分區還是要自己算一下的,不要使用選擇起始空間時不要使用G做單位
第6步:刪除分區
磁盤管理
第七步:退出交互模式
磁盤管理

  3. 查看內核是否已經識別新的分區

   cat /proc/partitions

  4. 通知內核重新讀取硬盤分區表

   Centos6:
    新增分區用
     partx -a /dev/sdb 重新讀取 sdb的硬盤分區表(當有新增的分區沒有被識別時)
     Kpartx -a /dev/sdb
    刪除分區用:
     partx /dev/sdb -d –nr 1 :重新讀取分區表(當分區號1 的分區被刪除時)
   centos 5、7:使用partprobe
    partprobe [dev/device] 同步分區表(刪除分區,新建分區都這一個命令)

八、 文件系統

  文件系統是操作系統用於明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱爲文件管理系統,簡稱文件系統
從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配負責文件存儲並對存入的文件進行保護和檢索的系統。具體地說,它負責爲用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日誌,壓縮,加密等
  查看系統支持的文件系統:ls /lib/moduls/uname -r/kernel/fs

 1、 文件系統的類型

  Linux文件系統:ext2,ext3,ext4,xfs,btrfs,reiserfs,jfs,swap
  光盤:iso9660
  Windows:FAT32,exFAT,NTFS
  Unix:FFS,UFS,JFS2
  網絡文件系統:NFS,CIFS
  集羣文件系統:GFS2,OCFS2
  分佈式文件系統:fastdfs,ceph,moosefs,mogilefs,glusterfs,Lustre
  RAW:未經處理貨位經格式化產生的文件系統

 2、 文件系統分類

  根據其是否支持“journal”功能:
   日誌型文件系統:ext3,ext4,xfs
   非日誌型文件系統:ext2,vfat
  文件系統的組成部分:
   內核中的模塊:ext4.xfs,vfat
   用戶空間的管理工具:mkfs,ext4,mkfs.xxfs,mkfs.vfat
  Linux的虛擬文件系統:VFS
  查看當前支持的文件系統:cat /proc/filesystems

 3、 創建文件系統

  1.mkfs 命令

   mkfs.fs_type /dev/device (fs_type:文件系統名,device:設備名)
    例:mkfs.ext4 /dev/sdb1 格式化sdb分區並創建ext4系統
   mkfs -t fs_type /dev/device
       -L ‘label’ :設定卷標

    2.創建ext文件系統

      mke2fs:ext系列文件系統專用工具
        -t {ext2|ext3|ext4}:創建的文件系統
        -b {1024|2048|4096} :設定區塊大小
        -L 'LABEL':設定卷標
        -j: 相當於 -t ext3
          mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
        -i #: 爲數據空間中每多少個字節創建一個inode;此大 小不應該小於block的大小
        -N #:指定分區中創建多少個inode
        -I 一個inode記錄佔用的磁盤空間大小,128---4096
        -m #: 默認5%,爲管理人員預留空間佔總空間的百分比
        -O FEATURE[,...]:啓用指定特性
        -O ^FEATURE:關閉指定特性

  4、 文件系統標籤

    文件系統的標籤就是指向設備的另一種方法,與設備無關

    1. blkid:塊設備屬性信息查看

      blkid [選項] [參數] [device]
        -U UUID:根據指定的UUID來查找對應的設備
        -L LABEL:根據指定的LABEL來查找對應的設備
      例圖:
磁盤管理

    2. e2label:管理ext系列文件系統的LABEL

      e2label DEVICE [LABEL] :更改設備的文件系統標籤
      例:
磁盤管理

    3. findfs:查找分區

      findfs [選項] LABEL=label :根據標籤查找分區
      findfs [選項] UUID=uuid :根據UUID查找分區

  5、 重新設定ext系列文件系統可調整參數的值

    tune2fs [選項] [參數] DEVICE
      -l:查看指定文件系統超級塊信息;super block
      -L 'LABEL':修改卷標
      -m #:修預留給管理員的空間百分比
      -j: 將ext2升級爲ext3
      -O: 文件系統屬性啓用或禁用, –O ^has_journal
      -o: 調整文件系統的默認掛載選項,–o ^acl
      -U UUID: 修改UUID號

  6、 查看超級塊信息,

    dumpe2fs [選項] DEVICE :查看設備的超級塊信息
      -h:查看超級塊信息,佈線是分組信息

九、 文件系統檢測和修復

    常發生於死機或者非正常關機之後,掛載爲文件系統標記爲“no clean”,
    注意:一定不要在掛載狀態下修復

  1、 文件系統檢查

    fsck.fs_type DEVICE :檢測修復設備文件系統,fs_type一定要與分區上文件系統類型一樣等同於fsck -t fs_type DEVICE
      -p: 自動修復錯誤
      -r: 交互式修復錯誤
    例:
磁盤管理

  2、 ext系列文件專用的檢測修復工具

    e2fsck [選項] DEVICE 檢測修復ext系列文件系統的設備文件
      -y:自動回答爲yes
      -f:強制修復

十、 設備掛載

    掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄作爲其它文件訪問入口的行爲。通俗來講就是,我們所存儲的那些數據,在我們訪問查看時,看似是存儲在那一個個的文件或文件夾中,但是實際是存儲在硬盤上的,那些方便我們查找訪問的文件只是爲了方便我們管理那些數據,所以一個硬盤要想爲我們所用,存儲數據在上面,必須把那個硬盤掛載在某一個目錄上,磁盤的空間才能爲我們所用,而這個掛載設備的目錄被稱之爲掛載點
    卸載:爲解除此關聯關係的過程
    掛載點下原有文件在掛載後會被臨時隱藏,卸載後會重新顯示出來
    掛載點目錄一般爲空
    通過查看/dev/mtab文件顯示當前已掛載的所有設備
磁盤管理
    顯示信息以空格分隔 :設備名 掛載點 文件系統 掛載選項 轉儲頻率 自檢次序

  1、 掛載文件系統

    掛載方法:mount [選項] DEVICE mount_point(掛載點)
    例:
磁盤管理
    DEVICE:指明要掛載的設備
      1. 設備文件:例如/dev/sdb1
      2. 卷標:-L ‘LABEL’,例如 -L ‘MYDATA’
      3. UUID,-U ‘UUID’:例如 -U ‘0c50523c-43f1- 45e7-85c0-a126711d406e’
      4. 僞文件系統名稱:proc, sysfs, devtmpfs, configfs
    Mount_point(掛載點):必須是個目錄
      1. 該目錄必須事先存在;建議使用空目錄
      2. 進程正在使用中的設備無法被卸載
    mount的選項:
      -t vsftype:指定要掛載的設備上的文件系統類型
      -r: readonly,只讀掛載
      -w: read and write, 讀寫掛載
      -n: 不更新/etc/mtab,mount不可見
      -a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab 文件中,且掛載選項中有auto功能)
      -L 'LABEL': 以卷標指定掛載設備
      -U 'UUID': 以UUID指定要掛載的設備
      -B, --bind: 綁定目錄到另一個目錄上
      -o options:(掛載文件系統的選項),多個選項使用逗號分隔
        async:異步模式
        sync:同步模式,內存更改時,同時寫磁盤
        atime/noatime:包含目錄和文件
        diratime/nodiratime:目錄的訪問時間戳
        auto/noauto:是否支持自動掛載,是否支持-a選項
        exec/noexec:是否支持將文件系統上運行應用程序
        dev/nodev:是否支持在此文件系統上使用設備文件
        suid/nosuid:不否支持suid和sgid權限
        remount:重新掛載
        ro:只讀
        rw:讀寫
       user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載
        acl:啓用此文件系統上的acl功能
        Defaults:相當於rw, nosuid, dev, exec, auto, nouser, async
        不帶任何選項默認爲:
          rw制度掛載;
          nosiud不支持suid和sgid權限;
          dev支持在此文件系統上使用設備文件
          exec支持將文件件系統上運行應用程序
          auto支持自動掛載
          nouser不允許普通用戶掛載此設備,
          async異步模式

  2、 查看內核追蹤到的已掛載的所有設備

    cat /proc/mounts
磁盤管理

  3、 查看正在訪問指定文件系統的進程

    lsof MOUNT_POINT
磁盤管理
    fuser -v MOUNT_POINT
磁盤管理
    lsof和fuser的區別就是使用lsof顯示的信息更全面一些,而fuser顯示的信息如果多個進程都是同一個用戶發起的,則只顯示進程號最小的那一條

  4、 查看掛載情況

    findmnt MOUNT_POINT
磁盤管理

  5、 終止所有正訪問指定的文件系統的進程

    fuser -km MOUNT_POINT
磁盤管理
    由於我在殺死這些正在訪問指定的文件的進程時正在該目錄下,以至於當前登錄的用戶也被下線了

  6、 卸載

    umount DEVICE
    umount MOUNT_POINT
    使用umonut卸載設備時後面可以跟設備名也可以跟掛載點,
    例
磁盤管理

  7、 文件掛載配置文件/etc/fstab

    /etc/fstab文件的作用:
      配置文件系統體系
      被mount、fsck和其他程序使用
      系統重啓時保留文件系統體系(使用mount掛載設備時只是臨時掛載,在系統重啓後掛載就消失了,只有把掛載信息寫入/etc/fstab中,重啓後纔會自動掛載)
      可以在設備欄使用文件系統卷標
    使用mount -a命令掛載/etc/fstab中的所有文件(當不使用mount命令掛載設備時,只是臨時的,重啓後就沒有了,還得重新掛載,想要永久的讓它自動掛載就得把掛載信息寫入/etc/fstab文件中,但是僅寫入文件中,卻沒有使用mount命令,是隻有重啓後纔會被自動掛載,想讓它當前也生效就可以使用mount -a 命令自動掛載/etc/fstab文件中的所有文件系統)

    1. 查看/etc/fstab文件

磁盤管理
      /etc/fstab每行定義一個要掛載的文件系統,
      要掛載的設備或僞文件系統
        設備文件
        LABEL:LABEL=""
        UUID:UUID=""
      僞文件系統名稱:proc, sysfs
      掛載點:目錄
      文件系統類型
      掛載選項:defaults(默認),參考mount命令的-o選項的參數
      轉儲頻率:0:不做備份 ;1:每天轉儲; 2:每隔一天轉儲
      自檢次序: 0:不自檢 ;1:首先自檢;一般只有rootfs才用1

  8、 處理交換文件和分區

    交換分區是系統RAM的補充,當物理內存不夠用時系統就會調用交換分區(swap)或交換文件當做內存來使用
    交換分區的基本設置包括:
      創建交換分區或文件(可以創建一個分區當做交換分區使用,也可以創建一個空目錄當做交換文件使用)
      使用mkswap寫入特殊簽名
      Mkswap devive(交換分區設備名)
      在/etc/fstab -a 激活交換空間(寫在/etc/fstab中是永久的掛載)

    1. 查看當前swap的大小

      free :查看當前內存和swap的大小和使用率
      swapon -s:僅查看虛擬內存swap的大小
      cat proc/swaps :查看結果跟swapon -s 一樣

    2. 掛載交換分區

      啓用:swapon
      swapon [選項] [device]:啓用交換分區,相當於掛載
        -a:激活寫入/etc/fstab文件中的所有的交換分區
        -p oriority:指定優先級
        -s:顯示當前掛載的交換分區
磁盤管理
      swapon 後不跟選項,只有設備,表示臨時掛載,在重啓系統後被卸載,不會自動掛載;例:swapon /dev/sdb1
      禁用:swpaoff
        Swapoff [選項] [device] 卸載交換分區

    3. Swap的優先級

      可以指定swap分區0到32767的優先級,值越大優先級越高
      如果用戶沒有指定,那麼核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減1
      先添加的swap的缺省優先級比較高,除非用戶自己及指定一個優先級,而用戶的優先級(是正數)永遠高於核心缺省指定的優先級
      優化性能:分佈存放,高性能磁盤存放

    4. 永久性掛載交換分區

      想要永久性的掛載交換分區,除了要做以上的操作外,還要把掛載信息編寫在/etc/fstab文件中
      編輯/etc/fstab文件
        vim /etc/fstab
      如要將設備/sdb1設置爲交換分區,並重啓後自動掛載就添加以下一行內容
        /dev/sdb1 swap swap defaults 0 0
      然後執行命令
        swapon -a

    5. 掛載交換分區示例

      第一步:創建交換分區(如果有現成的未掛載的未存儲數據的分區可以使用,則可以省去這一步,如果沒有其實就跟創建新分區步驟一樣)
磁盤管理
      第二步:使用mkswap寫入特殊簽名
磁盤管理
      第三步:掛載交換分區
磁盤管理

  9、 掛載移動介質

    掛載意味着使外來的文件系統看起來如同是主目錄樹的一部分
    訪問前、介質必須被掛載
    摘除時、介質必須被卸載(否則很可能會導致數據的丟失)
    按照默認設置,非root用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)
    掛載點通常在/media或/mnt下

    1. 使用光盤

      在圖形環境下自動啓動掛載
      否則就必須被手工掛載
        mount /dev/cdrom /mnt/
      卸載可以用umount卸載
      eject命令卸載或彈出磁盤
      創建ISO文件
        cp /dev/cdrom /root/centos7.iso :將一個光盤的內容製作成ISO文件
        mkisofs -r -o /root/etc.iso /etc:將一個目錄下的文件製作成一個ISO文件
      刻錄光盤
        wodim –v –eject centos.iso

    2. 掛載USB介質

      1. 查看USB設備是否識別

        lsusb

      2. 在圖形環境中自動掛載

        圖標在[計算機]窗口中創建
        掛載在/run/media/\<user>\<label>

      3. 手動掛載

        mount /dev/sdb1 /mnt

  10、 常見工具

    內存空間使用狀態
      free [OPTION]
        -m: 以MB爲單位
        -g: 以GB爲單位
    文件系統空間佔用等信息的查看工具
      df [OPTION]... [FILE]...
      -H 以1000爲單位
      -T 文件系統類型
      -h: human-readable
      -i:inodes instead of blocks
      -P: 以Posix兼容的格式輸出
    查看某目錄總體空間佔用狀態
      du [OPTION]... DIR
        -h: human-readable
        -s: summary

  11、 工具dd

    dd命令:轉換和複製文件
      dd if=src of=dest bs=# count=#
        if=file : 源文件src
        of=file : 目標文件dest
        bs=size:指定塊大小(既是ibs也是obs)
        ibs=size:一次讀size個byte
        obs=size:一次寫size個byte
        cbs=size:一次轉化size個byte
        skip=blocks:從開頭忽略blocks大小的塊
        seek=blocks:從開頭忽略blocks個obs大小的塊
        count=n:只拷貝n個記錄
        conv=conversion[,conversion...]:用指定的參數轉換文件
          轉換參數:
          ascii 轉換 EBCDIC 爲 ASCII
          ebcdic 轉換 ASCII 爲 EBCDIC
          lcase 把大寫字符轉換爲小寫字符
          ucase 把小寫字符轉換爲大寫字符
          nocreat 不創建輸出文件
          noerror 出錯時不停止
          notrunc 不截短輸出文件
          sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字 符補齊
    示例:

    1. 有一個大與2K的二進制文件fileA。現在想從第64個字節位置 開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上 面讀取到的128Bytes寫到第32個字節開始的位置,替換 128Bytes,實現如下:

      dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

    2. 備份

      dd if=/dev/sdx of=/dev/sdy 將本地的/dev/sdx整盤備份到/dev/sdy
      dd if=/dev/sdx of=/path/to/image 將/dev/sdx全盤數據備份到指定路徑的image文件
      dd if=/dev/sdx | gzip >/path/to/image.gz 備份/dev/sdx全盤數據,並利用gzip壓縮,保存到指定路徑

    3. 恢復

      dd if=/path/to/image of=/dev/sdx 將備份文件恢復到指定盤
      gzip -dc /path/to/image.gz | dd of=/dev/sdx 將壓縮的備份文件恢復到指定盤

    4. 拷貝內存資料到硬盤

      dd if=/dev/mem of=/root/mem.bin bs=1024 將內存裏的數據拷貝到root目錄下的mem.bin文件

    5. 從光盤拷貝ISO鏡像

     dd if=/dev/cdrom of=/root/cd.iso 拷貝光盤數據到root文件夾下,並保存爲cd.iso文件

    6. 銷燬磁盤數據

      dd if=/dev/urandom of=/dev/sda1
      利用隨機的數據填充硬盤,在某些必要的場合可以用來銷燬數據 ,執行此操作以後,/dev/sda1將無法掛載,創建和拷貝操作 無法執行

    7. 得到最恰當的block size

      dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
      dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
      dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
      通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統 最佳的block size大小

    8. 測試硬盤寫速度

      dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

    9. 測試硬盤讀速度

    dd if=/root/1Gb.file bs=64k | dd of=/dev/null

    10. 修復硬盤

      dd if=/dev/sda of=/dev/sda
      當硬盤較長時間(比如1,2年)放置不使用後,磁盤上會 產生消磁點。當磁頭讀到這些區域時會遇到困難,並可能 導致I/O錯誤。當這種情況影響到硬盤的第一個扇區時, 可能導致硬盤報廢。上邊的命令有可能使這些數據起死回 生,且這個過程是安全高效的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章