Linux 磁盤、文件系統管理

Linux 磁盤、文件系統管理

                                                                                        2016-08-229


本章內容

     磁盤結構

     分區類型

     管理分區

     管理文件系統

     掛載設備

     管理虛擬內存


第一篇:Linux磁盤管理

  概述:

         計算機的五大組成部件:輸入設備、輸出設備、存儲器、運算器、控制器,其中,輸入、輸出設備稱之為I/O設備,運算器和控制器稱之為CPU ,存儲器如內存、硬盤等。計算機只有CPU和內存其實就可以獨立完成計算任務了,只是其輸入輸出都在內存中實現,但是,內存屬于隨機存儲單元,斷點就會導致數據丟失,因此,我們就通過其他輔助設備來彌補內存的不足,這些輔助設備稱之為外存,如:磁盤,光驅等。


一、硬盤

    1.硬盤接口類型:

1.png

   2.硬盤:固態硬盤和機械硬盤

  3.硬盤存儲術語(CHS):

     head:磁頭  256個 

        track:磁道  1024個磁道

        平均尋道時間:5400rpm,7200rpm,10000rpm,15000rpm

        cylinder: 柱面 (分區劃分基于柱面)

        secotr: 扇區,512bytes  63個

        cylinder=512*63track*256head=8M

1.png

2.png



二、設備文件

    1.一切皆文件:

         open(), read(), write(), close()

    2.設備類型:

        塊設備(block):隨機訪問,數據交換單位是“塊”;

        字符設備(character):線性訪問,數據交換單位是“字符”;

    3.設備文件:FHS  /dev

        關聯至一個設備驅動程序,進而能夠跟與之對應硬件設備進行通信

    4.設備號:

        major:主設備號,區分設備類型;用于標明設備所需要的驅動程序;

        minor:次設備號,區分同種類型下的不同設備;是特定設備的訪問入口;

wKiom1fDh1ziQDW0AAB4YTRYQsQ634.png    5.mknod命令:創建設備文件

         make block or character speclal files

3.png

         語法:mknod [OPTION]… NAME TYPE [MAJOR MINOR]

                -m MODE :創建后的設備文件的訪問權限;



 三、設備文件名:ICANN

      1.磁盤:

           IDE:/dev/hd[a-z]  例如:/dev/hda,/dev/hdb

           SCSI,SATA,USB,SAS:

                不同設備:/dev/sd[a-z]

      2.分區:

            同一設備上的不同分區:1,2…

                /dev/sda#:  如:/dev/sda1…

            CentOS 6和7統統將硬盤設備文件表示為/dev/sd[a-z]

      3.引用設備的方式:

            設備文件名、卷標(label)、

           UUID(全局唯一標識符,uuidgen 命令可以生成uuid)

wKioL1fEHSHShaa2AAAMhSYCIDA877.png

      注意:引用設備的時候,最好用UUID,因為設備文件名可能會改變。



四、磁盤分區:MBR、GPT

MBR: 0 sector 

     1.Master Boot Recor,1982年,使用32位表示扇區數,分區不超過2T

     2.如何分區:按柱面

     3.0磁道0扇區:512bytes,分為三部分

            446bytes: bootloader,程序,引用啟動操作系統程序;

            64bytes:分區表,每16bytes: 標識一個分區,一共只能有4個分區;

            2bytes: MBR區域的有效標識,一般55AA為有效;

wKioL1fEI1jzk4rlAABe-McGpKg751.png

     4. 4個主分區;3主分區+1擴展(N個邏輯分區);

         主分區和擴展分區的標識:1-4

         邏輯分區只能從5開始(5+)

wKioL1fEJL_xt6-pAABVQHhY_WQ332.png

     5.新增添磁盤,還不能直接顯示出來,要想出現要對磁盤進行掃描(實際生產環境中不需要,都是熱插拔技術):

          命令:echo "—" > /sys/class/scsi_host/host2/scan  


 GPT分區:

       GUID(Globals Unique Identifiers)partition table 

       支持128個分區,使用64位,支持8Z(512Byte/block )64Z (4096Byte/block)

       使用128位UUID 表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位

       UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動



五、管理磁盤

     1.列出塊設備:lsblk

     2.創建分區使用:

          fdisk創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區

          gdisk創建GPT分區

          GNU parted高級分區操作(創建、復制、調整大小等等)

     3.partprobe-重新設置內存中的內核分區表版本


磁盤分區管理工具:fidsk、parted


parted命令:

    用法:parted [選項]… [設備[命令[參數]…]…]

           parted /dev/sdb mklabel gpt|msdos

           parted /dev/sdb print  查看分區

           parted /dev/sdb mkpart primary 1 200 (默認M)創建分區

           parted /dev/sdb rm1  刪除分區

           parted -l

    注意:parted的操作都是實時生效的,一般不建議使用


fdisk命令

1.語法fdisk -l [-u] [device…]

         列出指定磁盤設備上的分區情況

fdisk.png

2.管理分區         

   fdisk device

   fdisk提供了一個交互式接口來管理分區,他有許多命令,分別用于不同的管理功能;所有的操作均在內存中完成,沒有直接同步到磁盤;直接使用w命令保存至磁盤上;

fdisk1.png

3.常用命令

       n:創建新分區;

       d:刪除已有分區;(如果刪除擴展分區sda4 邏輯分區都會消失)

       t:修改分區類型;

       l:查看所有分區ID

fdisk-l.png       w:保存并退出

       q:不保存并退出;

       m:查看幫助信息

       p:顯示現有分區表

    注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別;

fdisk-warning.png


同步分區表:partx,partprobe

 1)查看內核是否已經識別新的分區:

        # cat /proc/partations

fdisk-內核識別.png

2)通知內核重新讀取硬盤分區表

    新增分區用:

        partx -a /dev/device

        kpartx -a /dev/device -f: forcepartx -a.png

    刪除分區用:

        partx -d –nr N /dev/DEVICE

        centos6:–nr N-M(表示范圍)

wKioL1fELeWA_XijAAB4L59SOEE403.png

    partprobe命令:centos5,7使用。一條命令搞定,增減刪除都可以!

                 用法:partprobe [/dev/DEVICE]



六、創建文件系統(格式化)

相關概念:

     文件系統是操作系統用于明確存儲設備或分區上的文件的方法和數據結構;即在存儲設備上組織文件的方法。操作系統中負責管理和存儲文件信息的軟件結構稱為文件管理系統,簡稱文件系統。

    從系統角度來看,文件系統是對文件存儲設備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統。具體地說,它負責為用戶建立文件,存入、讀出、修改、轉儲文件,控制文件的存取,安全控制,日志,壓縮,加密等。


1.格式化:

       低級格式化(分區之前進行,劃分磁道)

       高級格式化(分區之后進行,創建文件系統)

2.磁盤分區劃分為元數據區和數據區

元數據區:

     文件元數據(inode):

         包含文件的大小、權限、屬主屬組、時間戳、數據塊指針

     符號鏈接文件(軟鏈接):

         存儲數據指針的空間當中存儲的是真實文件的訪問路徑;

     設備文件

         存儲數據指針的空間當中存儲的是設備號(major,minor)  

3.文件系統組織結構中的常見術語

      block groups(塊組),塊組內分為元數據區(inode table中又存放indoe)和數據區(block)

      bitmap index :位圖索引 (了解哪些inode已經使用,哪些還沒使用) 

      block bitmap:了解哪些磁盤塊已經使用,哪些還沒有使用;

      superblock:記錄當前整個分區上有哪些塊組,以及塊組的劃分   

wKiom1fEO5zC62uoAAFoFTqa18I714.png


Linux 的文件系統

1.VFS虛擬文件系統接口,當兩個層次之間不銜接時,所加的中間層。因此linux可以引入眾多的文件系統類型。

vfs.png

2.文件系統:

    linux:

        ext2(Extended file system), ext3, ext4xfs(SGI),                           btrfs(Oracle),reiserfs, jfs(AIX), swap(用于存放虛擬內存)

    光盤:iso9660

    Windows:fat32, ntfs

    Unix: FFS(fast), UFS(unix), JFS2

    網絡文件系統:NFS, CIFS

    集群文件系統:GFS2, OCFS2(oracle)

    分布式文件系統:ceph, moosefs, mogilefs, glusterfs, Lustre

     RAW:未經處理或者未經格式化產生的文件系統

3.根據其是否支持"journal"功能

     日志型文件系統: ext3, ext4, xfs, …

     非日志型文件系統: ext2, vfat

4.文件系統的組成部分:

     內核中文件系統的驅動塊(lsmod命令可查看):ext4, xfs, vfat

     用戶空間的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

5.查前支持的文件系統:cat /proc/filesystems


內核及文件系統的組成部分

     文件系統驅動:由內核提供

     文件系統管理工具:由用戶空間的應用程序提供



七、文件系統管理工具:

        mkfs,mk2fs,e2label,tune2fs,dumpe2fs,

        主要都是和ext系列的文件系統有關。

注意:擴展分區是不能格式化的,因為它存放的是邏輯分區,可對邏輯分區格式化


1.創建文件系統的工具

   mkfs命令:(按兩次Tab鍵)

1.png   (1) # mkfs.FS_TYPE /dev/device

            ext4,xfs,btrfs,vfat

  示例:

    創建ext2文件類型

2.png

     在ext2基礎上創建ext3文件類型(區別:多了一個創建日志的功能)

3.png

     (2) # mkfs -t FS_TYPE /dev/DEVICE  如:(mkfs -t ext2=mkfs.ext2)

                   -L 'LABEL': 設定卷標

            mke2fs的選項,mkfs也支持


mke2fsext系列文件系統專用管理工具

語法:mke2fs [OPTIONS] /dev/sd… 默認為ext2文件系統

      -t {ext2|ext3|ext4}:指明要創建的文件系統類型

      -b {1024|2048|4096}:指明塊大小,默認為4K,最大不超過4K

      -L 'LABEL' :指明卷標

mk2fs.png

      -j: 創建有日志功能的文件系統ext3

               mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3

      -i#: 指明indoe與字節的比率;即每多少個字節創建一個inode;此大小不應該小于block的大小

      -N #:直接指明要給此文件系統創建的inode的數量;

      -I 一個inode記錄大小128—4096

      -m #: 默認5%,為管理人員指定預留空間占總空間的百分比

      -O FEATURE[,…]:啟用指定特性

      -O ^FEATURE:關閉指定特性


e2label命令:卷標的查看,預設定

      查看:e2label devicee2lable.png


 tune2fs:查看或修改ext系列文件系統的某些屬性;

    adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems;注意:塊大小不可修改

   語法:tune2fs [options] devicd

      -l:查看指定文件系統超級塊信息;super block

tune3fs.png      -L 'LABEL':修改卷標

      -m #:調整預留給管理員的空間百分比

tune2fs -m.png

      -j: 將ext2升級為ext3

tune2fs -j.png

      -O[^]FEATHER: 文件系統屬性啟用或禁用,–O ^has_journal

tune2fs -o.png      -o: 開啟或關閉文件系統的默認掛載選項,–o ^acl

tune2fs-oo.png      -U UUID: 修改UUID號


dumpe2fs命令

顯示ext系列文件系統的屬性信息

    語法:dumpe2fs [-h] device

         -h:查看超級塊信息(分組信息),分區用分組管理

11.png



用于實現文件系統檢測的工具:fsck,e2fsck

    因進程意外中止或系統崩潰等原因導致操作非正常終止時,可能會造成文件損壞;此時應該檢測并修復文件系統,建議離線進行

    常發生于死機或者非正常關機之后

    掛載為文件系統標記為“dirty”


fsck命令

fsck – check and repair a Linux file system

      fsck.FS_TYPE

fsck..png

      fsck -t FS_TYPE  如:fsck -t ext4=fsck.ext4

             -a: 自動修復錯誤

             -r: 交互式修復錯誤

     注意: FS_TYPE一定要與分區上已經文件類型相同;


e2fsckext系列文件專用的檢測修復工具

     語法:e2fsck [OPTIONS] device

         -y:對所有問題自動回答為yes;

         -f:即使文件系統處于clean狀態,也要強制進行檢測;

e2fsck.png


blkid:塊設備屬性信息查看

 語法:blkid[OPTION]…[DEVICE]

        -U UUID: 根據指定的UUID來查找對應的設備

        -L LABEL:根據指定的LABEL來查找對應的設備

blkid.png

findfs:查找分區

    findfs[options] LABEL=<label>

    findfs[options] UUID=<uuid>



八、其他文件系統

1.swap文件系統

     Linux上的交換分區必須使用獨立的文件系統;且文件系統的System ID必須為82;

     創建swap設備:mkswap命令

     語法:mkswap [OPTIONS] device

                -L LIBEL:指明卷標

                -f:強制

2.Windows無法識別Linux的文件系統;因此存儲設備需要在兩種系統之間交叉使用時,應該使用windows和linx同時支持的文件系統:fat32(vfat)

     # mkfs.vafat device



第二篇:文件系統的使用:掛載

  磁盤的分區和格式化完成后,磁盤要想能夠使用,就需要掛載,在掛載某個分區前需要先建立一個掛載點。

一、相關概念

    1.首先要"掛載":mount和unmount卸載命令

    2.根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即為“掛載”,此目錄即為掛載點;

    3.掛載點:mount_point,作為另一個文件系統的訪問入口

          1)事先存在;

          2)應該使用未被或不會被其他進程使用到的目錄;

          3)掛載點下原有文件將會被臨時隱藏;

    4.卸載:為解除此關聯關系的過程

       卸載時:可使用設備,也可以使用掛載點


二、mount命令

    掛載方法:mount DEVICE MOUNT_POINT

     mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備

mount.png

    語法:mount [-fnrsvw] [-t vfstype] [-o options] device dir

    device:指明要掛載的設備;

        (1) 設備文件:例如/dev/sda5

        (2) 卷標:-L 'LABEL', 例如-L 'MYDATA'

        (3) UUID, -U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e'

        (4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs

    dir:掛載點

        事先存在;建議使用空目錄

        進程正在使用中的設備無法被卸載


mount命令用法

   語法:mount [-nrw] [-t vfstype] [-o options] device dir

   命令選項:

        -r: readonly,只讀掛載

mount -r.png

        -w: read and write, 讀寫掛載

        -n: 在默認情況下,設備掛載或卸載的操作同時會更新至/etc/mtab文件中,-n 用于禁此特性;

        -t vsftype:指定要掛載的設備上的文件系統類型;多數情況下可省略,此時mount會通過blkid來判斷要掛載的設備的文件系統的類型;

        -a:自動掛載所有支持自動掛載的設備(定義在了/etc/fstab文件中,且掛載選項中有auto功能)

        -L 'LABEL': 掛載時以卷標的方式指明掛載設備

               mount -L LABEL dir

mount -L.png        -U 'UUID': 掛載時以UUID指定要掛載的設備

              mount -U UUID dir

mount -U.png

        -B, –bind: 將目錄綁定至另一個目錄上,作為其臨時訪問入口

mount-B.png



-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功能

            # mount -o acl device dir

            # tune2fs -o acl device

acl.png

     defaults:相當于rw, suid, dev, exec, auto, nouser, async  


查看當前系統已掛載的所有設備

      # mount

      # cat /etc/mtab

      # cat /proc/mounts

掛載光盤

      mount -r /dev/cdrom mount_point

      光盤設備文件:/dev/cdrom,/dev/dvd

      把光盤制作成iso文件方法:

Linux 磁盤、文件系統管理   特殊用法:/misc

Linux 磁盤、文件系統管理

掛載U盤:

      事先識別U盤的設備文件

掛載本地回環設備:

     # mount -o loop /PATH/TO/SOME_LOOP_FILE MOUNT_POINT


unmount命令

     正在被進程訪問到的掛載點無法被卸載

     查看掛載情況:

          # findmnt MOUNT_POINT

     查看被那個或者哪些進程所占用:

          # lsof MOUNT_POINT

          # fuser -v MOUNT_POINT

1111.png

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

          # fuser -km MOUNT_POINT

fuser.png

     卸載:

          # umount DEVICE

          # umount MOUNT_POINT

          # umount -l

Linux 磁盤、文件系統管理



/etc/fstab 配置文件

設定除根文件系統以外的其他文件系統能夠開機時自動掛載

/etc/fstab每行定義一個要掛載的文件系統及相關屬性;

     6個字段:

         1)要掛載的設備

              設備文件;

               LABEL(LABEL="")

               UUID(UUID="")

               偽文件系統

         2)掛載點

               swap類型的設備的掛載點為swap;

         3)文件系統類型

         4)掛載選項

               defaults:使用默認掛載選項

               如果要同時指明多個掛載選項,彼此間逗號分隔;

         5)轉儲頻率

               0:從不備份

               1:每天備份

               2:每隔一天備份

         6)自檢次序

               0:不自檢;

               1:首先自檢,通常只能是根文件系統可用;

               2:次級自檢

                 …

mount -a:可自動掛載定義在此文件中的所支持自動掛載的設備

示例:

     在/etc/fstab配置文件中添加一行來掛載分區Linux 磁盤、文件系統管理    使用命令 df或者mount可以查看掛載情況,要想生效執行 mount -a命令,自動掛載此文件中的所有支持自動掛載的設備

Linux 磁盤、文件系統管理    如果對掛載的參數修改,要重新生效使用 mount -o remount MOUNT_POINT

Linux 磁盤、文件系統管理

Linux 磁盤、文件系統管理


 注意:/etc/fstab 設備名出錯,自檢非0,開機會導致無法啟動

          排錯方法:mount -o remount,rw /



四、處理swap交換文件和分區:

    swap,它類似于Windows的虛擬內存,分區時一般指定虛擬內存的大小為實際內存的2倍,如果你的實際內存超過了8G,那你劃分16G給虛擬內存就足夠日常交換了,如果真的遇到虛擬內存不夠用的情況,就必須增加哦一個虛擬磁盤,因此我們不可能重新給磁盤分區,增加虛擬內存的基本思路:建立swapfile–>格式化swap格式–>啟用虛擬磁盤。


交換分區是系統RAM的補充

1.基本設置包括:

      1)創建交換分區(fdisk -t 82)或者文件

      2)使用mkswap寫入特殊簽名

Linux 磁盤、文件系統管理      3)在/etc/fstab文件中添加適當的條目

Linux 磁盤、文件系統管理

     4)使用swapon -a 激活交換空間

Linux 磁盤、文件系統管理

2.掛載交換分區

啟用:swapon

        swapon[OPTION]… [DEVICE]

            -a:激活所有的交換分區;

            -p PRIORITY:指定優先級

           /etc/fstab:pri=value

禁用:swapoff[OPTION]… [DEVICE]mkswap.png

總結:

swap的創建

   1)fdisk  -t 82 分區
    dd if=/dev/zero of=/swapfile bs=1M count=1024 文件
  2)mkswap /dev/sdc1
    mkswap /swapfile
  3)vim /etc/fstab
    /dev/sdc1   swap swap defaults,pri=100  0 0
    /swapfile swap swap pri=100  0 0
  4)swapon -s 查看swap分區
    swapon -a 讀/etc/fstab 生效

   示例:創建swap文件增加虛擬內存

Linux 磁盤、文件系統管理

Linux 磁盤、文件系統管理

     心得:既然可以把一個文件當做一個swap分區用,同樣我們也可以創建一個文件當做分區使用,如果需要的話直接就可以把文件拷貝走,很方便。


swap的優先級

     用戶可以給某個swap指定一個0到32767的優先級

     如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定優先級的swap,會給這個優先級減一。

     先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級(是正數)永遠高于核心缺省指定的優先級(是負數)。

    優化性能:分布存放,高性能磁盤存放

Linux 磁盤、文件系統管理



free命令內存空間及交換分區使用狀態查看

    free [OPTION]

          -m: 以MB為單位

          -h:以人類適宜的方式查看

    Mem:物理內存的使用情況;

    Swap:交換分區的使用情況 ;

    -/+ buffers/cache:表示物理內存在不考慮緩存和緩存占據空間時的使用情況

Linux 磁盤、文件系統管理       buffers:緩沖,用來緩存寫

       cache:  緩存,迎來緩存度

Linux 磁盤、文件系統管理


df命令:查看磁盤設備的使用情況

     df [OPTION]… [FILE]…

          -l:僅顯示本地文件的相關信息;

          -H 以1000為單位

          -T 文件系統類型

          -h: human-readable

          -i:顯示inode的使用狀態而非block

          -P: 以Posix兼容的格式輸出

Linux 磁盤、文件系統管理


du命令查看某目錄總體空間占用狀態:

     du [OPTION]… DIR

          -h: human-readable

          -s: summary

Linux 磁盤、文件系統管理


losetup命令

     可以把文件關聯到一個設備,從而用設備名代替文件名

centos6 實現loop 設備和文件關聯

   dd if=/dev/zero of=/testdir/bigfile bs=1M count=500

   losetup  /dev/loop7 /testdir/bigfile 

   mkfs.ext4 /testdir/bigfile

   mount /dev/loop7  /mnt/bigfile/ 

   losetup -a

示例:

    創建一個文件,對文件進行格式化掛載到另一個目錄下

Linux 磁盤、文件系統管理

Linux 磁盤、文件系統管理

   下面是CentOS7版本的

Linux 磁盤、文件系統管理

Linux 磁盤、文件系統管理



dd命令:convert and copy a file

用法:

    dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

    bs=#:block size, 復制單元大小

    count=#:復制多少個bs

    of=file         寫到所命名的文件而不是到標準輸出

    if=file         從所命名文件讀取而不是從標準輸入

    bs=size         指定塊大小(既是是ibs也是obs)

    ibs=size         一次讀size個byte

    obs=size         一次寫size個byte

    cbs=size         一次轉化size個byte

    skip=blocks     從開頭忽略blocks個ibs大小的塊

    seek=blocks     從開頭忽略blocks個obs大小的塊

    count=n          只拷貝n個記錄

Linux 磁盤、文件系統管理


conv=conversion[,conversion…] 用指定的參數轉換文件。

轉換參數:

     ascii 轉換EBCDIC 為ASCII

     ebcdic 轉換ASCII 為EBCDIC

     block 轉換為長度為cbs 的記錄,不足部分用空格填充。

     unblock 替代cbs長度的每一行尾的空格為新行

     lcase 把大寫字符轉換為小寫字符

     ucase 把小寫字符轉換為大寫字符

     swab 交換輸入的每對字節

     noerror 出錯時不停止

     notrunc 不截短輸出文件

     sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊


1)磁盤拷貝:

      dd if=/dev/sda of=/dev/sdb

2)備份MBR:

      dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

3)破壞MBR中的bootloader:

      dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

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

      #ddif=fileAof=fileBbs=1 count=128 skip=63 seek=31 conv=notrunc


1)備份:

      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工具進行壓縮,保存到指定路徑

2)恢復:

      dd if=/path/to/image of=/dev/sdx

          將備份文件恢復到指定盤

      gzip -dc /path/to/image.gz | dd of=/dev/sdx

          將壓縮的備份文件恢復到指定盤


1)拷貝內存資料到硬盤

    dd if=/dev/mem of=/root/mem.bin bs=1024

    將內存里的數據拷貝到root目錄下的mem.bin文件

2)從光盤拷貝iso鏡像

    dd if=/dev/cdrom of=/root/cd.iso

    拷貝光盤數據到root文件夾下,并保存為cd.iso文件

3)銷毀磁盤數據

    dd if=/dev/urandom of=/dev/sda1

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


得到最恰當的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 if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

     通過比較dd指令輸出中所顯示的命令執行時間,即可確定系統最佳的block size大小


測試硬盤讀寫速度

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

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

    通過上兩個命令輸出的執行時間,可以計算出測試硬盤的讀/寫速度


修復硬盤

     dd if=/dev/sda of=/dev/sda

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

    

        

         


        

        

         

原創文章,作者:zhumengxiaotao,如若轉載,請注明出處:http://www.www58058.com/40299

(0)
zhumengxiaotaozhumengxiaotao
上一篇 2016-09-01
下一篇 2016-09-01

相關推薦

  • 循環語句for、while、until

    作用:    循環語句的作用是它可以讓一段代碼重復的執行,直到所需條件不滿足為止。 在linux中變量的賦值方式有三種:       第一:直接等于號賦值       第二:通過read交互賦值       第三:for循環的賦值 bash腳本中的循…

    Linux干貨 2016-08-22
  • 第七周作業

    第七周 1,創建一個10G分區,并格式化為ext4文件系統;(1) 要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl;(2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@www ~]# fdisk /dev/sda <————-fd…

    Linux干貨 2017-09-03
  • 查找find命令簡介

       之前都是寫一些關于課后練習題的博客,既練習了課后習題也把博客寫了,舒服!不過這周學的知識需要練習的不多,更多的是需要了解和記憶,所以給大家介紹一個自我覺得挺強大的一個命令,那就是查找find命令。大家都知道計算機的數據茫茫多,要想找到自己想要的級必須加點限制性的條件來縮小一下范圍,或者準確的告訴計算機你想要的是什么。那么怎么來實現呢…

    2017-08-12
  • 第四周作業

    Linux系統文件管理使用案例 1、 復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 首先,利用cp命令將/etc/skel目錄復制為/home/tuser1: [root@localhost ~]# cp -r /etc/skel /home/tuser1 隨后通過chmo…

    Linux干貨 2018-03-24
  • 第六周作業-練習題sed,crontab,bash

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;    方法一用sed:          方法二用vim       &…

    Linux干貨 2017-01-16
  • 用戶、組命令總結

    useradd:添加用戶   -u :指定UID   -o :不對UID的惟一性進行檢查,用法是-ou   -g :指定用戶的主組或者是GID   -G :指定用戶的附加組group1,group2,。。。   -d :指定用戶的家目錄,所指定的家目錄必須是不存在的   -s :指定用戶的登錄she…

    Linux干貨 2016-11-23

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-01 15:08

    文章整體思路清晰,結構層次分明,對于前面的可以做成鏈接跳轉回更好。

欧美性久久久久