系統管理之磁盤管理(一)

磁盤結構

一.概論

1.操作系統的組成部分:

硬件:

根據馮諾依曼體系,計算機的組成:
   運算,控制器:cpu
   存儲器:主存(ram);   
   io設備:
      輔存(rom):持久存儲
      網卡:提供服務的出入口
      顯示器:輸出設備
      鍵鼠:輸入設備
   總線:
      尋址總線;連接cpu和內存的線纜,32bi
   南橋:連接低速設備的線纜,如硬盤,輸入輸出設備
   北橋:連接高速設備的線纜,如cpu,內存

硬盤分類:

 機械硬盤: 傳統使用機械方式存儲的硬盤
 固態(ssd): 使用電子方式存儲的硬盤
      lops:io per second  執行io的次數 固態比機械高幾倍
      以此評判硬盤的好壞
    硬盤大小分類:
        機械硬盤:容量大 500G-2T 價格實惠 易損壞
        固態硬盤:容量小 120G-512G 價格昂貴 易保存
 硬盤接口類型:
    個人pc:
      IDE(ata):并口,133MB/s
      SATA:串口,第三代:6gbps
      USB:串口,480MB/s
    企業:
      SCSI:并口 UItrascsl320 320MB/s UItrascsl640 640MB/s
      SAS:串口 6gbps

    并口,同一線纜可以接多塊設備
       IDE:兩個,主,從
       SCSI:
         寬帶:16-1
         窄帶:8-1
       串口:同一線纜只可以接一個設備

系統管理之磁盤管理(一)
rpm:rotations
per minute

磁盤組成
,
機械硬盤結構圖:

    磁道:track0
    扇區:sector 512bytes
    柱面:不同盤片相同磁道,分區根據柱面進行分區
    平均尋道時間: 短--性能好(磁頭旋轉,等待磁盤旋轉的時間)
        5400轉 7200轉 10000轉 轉速提高,尋道時間短



SSD組成:
    U盤的陣列 
    注:固態硬盤仿照機械硬盤的運作機制,MBR,扇區等

3.設備文件

 linux的哲學思想: 一切皆文件
    open(),read(),write(),close()
 設備類型:
    塊(block):隨機訪問,數據交換單位是"塊(block)"
    字符(character):線性訪問,數據交換單位是"字符" 如:/dev/zero /devnull
 設備文件:FHS
     存放在 /dev/
     設備文件:關聯至一個設備的驅動程序,進而能夠跟之對應的硬件設備,進行通信(設備的訪問入口)
     設備號:
        majir:主設備號,區分設備類型,用于表明設備所需要的驅動程序
        minor:次設備號,區分同種類型下的不同設備,是特定設備的訪問入口;
        #crw-rw-rw- 1 root root      1,   7 Aug 26 02:25 full#
        創建相同主次設備號,不同設備名稱的設備文件,代表同一文件
  • mknoad命令:創建設備文件命令

  • make block or chararcter speclal files

  • mknod [OPTIONS] …NAME TYPE [MAJOR MINOR]

  • -m MOD E: 創建后的設備文件的訪問權限

  • type:指定類型 c b

  • [major minor]:指定主次設備號

  • [root@w7 ~]# mknod qwe c 8 2

  • [root@w7 ~]# ll

  • crw-r–r– 1 root root 8, 2 Aug 26 04:59 qwe

mkond qwe1 d 8 1 在當前目錄下,建立一個設備文件,把該文件掛載到某文件中,可以訪問跟這個文件相同設備號的設備,相當于建立遠設備的第二的入口

     磁盤設備的設備文件名:/dev/DEV_filename
     磁盤接口標識:
       IDE:/dev/hd  例:/dev/hda /dev/hdc
       SCSI,SATA,USB,SAS:/dev/sd[a-z]
              例:/dev/sda /dev/sdb
       分區:
          /dev/sda#;
             例:/dev/sda1 /dev/sdb2
             注意:centos6  centos7通通將硬盤設備文件標識為/dev/sd[a-z]#
       引用設備方式:
           設備文件名,卷標,UUID

磁盤分區

1.為什么磁盤分區?

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

2分區類型

磁盤分區類型為兩種:MBR,GPT

MBR(Master Boot Record):0 sector,磁盤的0號柱面的0號磁道的0編號扇區被稱作MBR;叫做主引導記錄,主引導扇區    
    按柱面分區
    分為三個部分:(共512字節)
      前面446byets:存放bootloaber,引導啟動操作系統的程序;
      后邊64byets:DPT(Disk Pattition Table),標識硬盤分區表,每16個byets標識一個分區,一共只能有四個分區;
            4主分區(小于等于4個)
            3主1擴展:
              n個邏輯分區
        最后2byets:MBR區域的有效性標識;55AA為有效;
    主分區和擴展分區的標識是:1-4
        擴展分區有EBR,記錄邏輯分區的分區信息以及下一個EBR的路徑
    邏輯分區:只能從5開始

系統管理之磁盤管理(一)

GPT:GUID( Globals Unique Identifiers) 
    partitiontable 支持128個分區,使用64位,支持8Z(512Byte/block ) 64Z (4096Byte/block) 
使用128位UUID 表示磁盤和分區 GPT分區表自動備份在頭和尾兩份,并有CRC校驗位
UEFI (統一擴展固件接口)硬件支持GPT,使操作系統啟動

系統管理之磁盤管理(一)

3.查看分區

    圖形化:

系統管理之磁盤管理(一)

    命令行:

系統管理之磁盤管理(一)

管理分區

創建分區使用:

fdisk 創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15分區
gdisk 創建GPT分區
 GNU parted 高級分區操作(創建、復制、調整大小等等)
partprobe-重新設置內存中的內核分區表版本

創建分區:

fdisk工具:
    fdisk -l [-u] [device...] 
    fdisk提供了一個交互式接口來管理分區,它有許多子命令,分別用于不同的管理功能;
    所有操作均在內存中進行,沒有直接同步到磁盤;直到使用w命令保存到磁盤上才會生效
     選項:
        -l :查看硬盤信息 加分區名,可查看指定分區,默認是所有分區
        不加選項,進入fdisk管理模式:
            子命令:
               a   toggle a bootable flag
               b   edit bsd disklabel
               c   toggle the dos compatibility flag
               d   delete a partition            刪除分區
               g   create a new empty GPT partition table
               G   create an IRIX (SGI) partition table
               l   list known partition types      顯示分區類型列表
               m   print this menu    幫助信息
               n   add a new partition        創建新分區
               o   create a new empty DOS partition table
               p   print the partition table           分區列表
               q   quit without saving changes      不保存并退出
               s   create a new empty Sun disklabel
               t   change a partition's system id    更改分區類型
               u   change display/entry units
               v   verify the partition table
               w   write table to disk and exit     保存并退出
               x   extra functionality (experts only)

    fdisk -l /dev/sda

    Disk /dev/sda: 128.8 GB, 128849018880 bytes
    255 heads, 63 sectors/track, 15665 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x000a50bd

       Device    Boot      Start         End      Blocks   Id  System
    /dev/sda1   *           1          26      204800   83  Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2              26       10469    83886080   83  Linux
    /dev/sda3           10469       13019    20480000   83  Linux
    /dev/sda4           13019       15666    21257216    5  Extended
    /dev/sda5           13019       13280     2097152   82  Linux swap / Solaris

    對cenots6來說start是開始柱面,End是結束柱面,對centos7來說start是開始扇區,End是結束扇區

gdisk工具:
     gfisk /dev/sdb 類fdisk 的專業GPT分區工具

同步分區表:

在創建分區后,系統可能不會識別到新創建的分區,我們只能在不重啟設備的情況下,手工識別分區.
注意:在已經分區并且已經掛載其中某個分區的磁盤設備上創建的新分區,內核可能在創建完成后無法直接識別

查看內核是否已經識別新的分區:
# cat /proc/partations
#lsblk     
    lsblk -f /dev/sd[a-z] 查看分區的文件系統類型

echo "---" > /sys/class/scsi_host/host2scan     刷新硬盤   centos6
echo "---" > /sys/class/scsi_host/host0/scan     刷新硬盤   centos7
通知內核重新讀取硬盤分區表
   CentOS 5, 7: 使用partprobe
   Centos 6:    
    新增分區用
        partx -a -n M:N /dev/DEVICE
        kpartx -a /dev/DEVICE -f: force
    刪除分區用
        partx -d -n M:N /dev/DEVICE
        centos6: –nr N-M

    parted命令:
    parted的操作都是實時生效的,小心使用
     用法: parted [選項]... [設備 [命令 [參數]...]...]
    parted /dev/sdb mklabel gpt|msdos
    parted /dev/sdb print
    parted /dev/sdb mkpart primary 1 200 (默認M)
    parted /dev/sdb rm 1
    parted -l

鏈接文件:訪問同一個文件的不同路徑;
注意:符號鏈接文件的大小是其指向的文件的路徑字符串的字節數

硬鏈接:指向同一個inode的多個文件路徑,
創建硬鏈接命令
> - ln src link_file,ln 目標文件(原文件) 新創建的文件
> - 支持-v選項,顯示創建過程
特性
> - (1)目錄不支持硬鏈接
> - (2)硬鏈接不能跨文件系統
> - (3)創建硬鏈接會增減inode引用計數


符號連接:指向一個文件路徑的另一個文件路徑,
創建軟鏈接的命令 
> - ln -s src link_file,ln -s 目標文件(原文件) 新創建的文件)
> - 支持-v選項,顯示創建過程

特性
> - (1)符號鏈接與文件是兩個各自獨立的文件,各有自己的inode,對原文件創建符號鏈接不會增加引用計數
> - (2)支持對目錄創建符號鏈接,可以跨文件系統
> - (3)刪除符號鏈接不影響原文件,但刪除原文件,符號指定的路徑即不存在,此時會變成無效鏈接

管理文件系統

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

1.文件系統類型

Linux文件系統: : ext2(Extended file system), ext3,ext4, xfs 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:未經處理或者未經格式化產生的文件系統

2.文件系統分類

根據其是否支持"journal"功能:
    日志型文件系統: ext3, ext4, xfs, ...
    非日志型文件系統: ext2, vfat 
文件系統的組成部分:
    內核中的模塊: ext4, xfs, vfat
    用戶空間的管理工具: mkfs.ext4, mkfs.xfs,mkfs.vfat

內核文件系統的組成部分:
    lsmod:查看當前系統內核已經裝載的模塊
    文件系統驅動:由內核提供
    文件系統管理工具:由用戶空間的應用程序提供

查前支持的文件系統: cat /proc/filesystems
Linux的虛擬文件系統: VFS

系統管理之磁盤管理(一)

文件系統的選擇:

    根據存儲數據的單個文件大小,及數據類型
    首先要有日志,ext2,vfat可以淘汰了。
    其次是看各自優勢,jfs似乎沒有明顯的優點,果斷還是直接用ext4省心。
    XFS大文件速度快,reiserfs 作者殺妻子進去了基本等于死掉了,小文件性能是很不錯的。
    fuse系列的文件系統不算原生的,但是如果有特別需求(比如ntfs、aufs)還是考慮使用一下。
    本地兩個殺手級別的文件系統btrfs和zfs,都屬于開發中的(雖說已經production ready了),目前并沒有廣泛使用。

3.創建文件系統

格式化:低級格式化,(分區之前進行,劃分磁道)高級格式化(分區之后對分區進行,創建文件系統)
元數據區,數據區
元數據區:inode(index node)
文件:文件,大小權限,從屬關系,時間戳,數據塊指針...
符號鏈接文件:存儲數據指針的空間當中存儲的是真實文件的訪問路徑;
設備文件:存儲數據指針的空間當中存儲的是設備號(major,minor)
磁盤在劃分完元數據區和數據區以后要在數據去預留一段空間(工作空間)供超級用戶使用,在磁盤空間飽滿后用此段空間進行管理;刪除,整理。。。。。
位圖索引:每個inode號和每個磁盤數據塊都需要位圖索引來判斷是否被占用,位圖為0表示此位圖對應的inode號或者數據塊為空閑,1表示占用

mkfs命令:

(1) # mkfs.FS_TYPE /dev/DEVICE

  • ext4

  • xfs

  • btrfs

  • vfat

(2) # mkfs -t FS_TYPE /dev/DEVICE

  • -L 'LABEL': 設定卷標

  • -i #: 為數據空間中每多少個字節創建一個inode;此大小不應該小于block的大小

  • -N #:為數據空間創建個多少個inode

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

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

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

  • -O ^FEATURE:關閉指定特性

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:關閉指定特性

centos6 默認不支持xfs 如果要安裝得先安裝xfsprogs工具

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

mkfs.vfat device

4.文件系統管理工具

blkid:塊設備屬性信息查看

  • blkid [OPTION]… [DEVICE]

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

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

[root@w7 ~]# blkid
/dev/sdc1: LABEL="qwecz" UUID="88c0011a-e573-4719-9757-b6e60ccfc08f" TYPE="ext4" PARTUUID="d44b6ba9-b442-469d-9dca-25a0e687f131" 
/dev/sdc2: UUID="12fe07e9-665d-485b-b040-10817289820c" TYPE="ext4" PARTUUID="0a301313-291d-4112-b13f-cd92c268274a" 
/dev/sda1: UUID="6c3c827d-60c8-4778-b9b0-439da928a614" TYPE="xfs" 
/dev/sda2: UUID="820ccbbb-45e5-4a16-89cc-7deeab7b6fdd" TYPE="xfs" 
/dev/sda3: UUID="a456c4bc-bb4d-4001-91e1-99a09f61943a" TYPE="swap" 
/dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
[root@w7 ~]# blkid -U a456c4bc-bb4d-4001-91e1-99a09f61943a
/dev/sda3
[root@w7 ~]# blkid -L qwecz /dev/sdc1
/dev/sdc1

uuidgen:可隨機生成UUID
findfs :查找分區,

  • findfs [options] LABEL=label

  • findfs [options] UUID=uuid

[root@w7 ~]# blkid    
/dev/sdc1: LABEL="qwecz" UUID="88c0011a-e573-4719-9757-b6e60ccfc08f" TYPE="ext4"
/dev/sdc2: UUID="12fe07e9-665d-485b-b040-10817289820c" TYPE="ext4" 
/dev/sda1: UUID="6c3c827d-60c8-4778-b9b0-439da928a614" TYPE="xfs" 
/dev/sda2: UUID="820ccbbb-45e5-4a16-89cc-7deeab7b6fdd" TYPE="xfs" 
/dev/sda3: UUID="a456c4bc-bb4d-4001-91e1-99a09f61943a" TYPE="swap" 
/dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" 
[root@w7 ~]# findfs LABEL=qwecz
/dev/sdc1
[root@w7 ~]# findfs UUID=88c0011a-e573-4719-9757-b6e60ccfc08f
/dev/sdc1

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

  • e2label DEVICE [LABEL]

[root@w7 ~]# e2label /dev/sdc1      命令跟分區名,查看分區的卷標
qwecz
[root@w7 ~]# e2label /dev/sdc1 qesd    命令跟分區名加上新卷標,修改分區的卷標
[root@w7 ~]# e2label /dev/sdc1
qesd
[root@w7 ~]#

5.超級塊

超級塊:
   塊組的個數
   每個塊組中塊的個數
   塊的大小
   空閑、已使用的磁盤塊個數
   空閑indoe、已經被使用indoe個數

系統管理之磁盤管理(一)

tune2fs:重新設定ext系列文件系統可調整參數的值
  • -l:查看指定文件系統超級塊信息; super block

  • -L 'LABEL':修改卷標     卷標一般表示為掛載點    

  • -m #:修預留給管理員的空間百分比  可調為0

  • -j: 將ext2升級為ext3

  • -O: 文件系統屬性啟用或禁用, –O ^has_journal   Filesystem features

  • -o: 調整文件系統的默認掛載選項,–o ^acl    Default mount options

  • -U UUID: 修改UUID號

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

6.文件系統檢測和修復

常發生于死機或者非正常關機之后
掛載為文件系統標記為“ dirty”

fsck: File System Check
作用:用于實現文件系統檢測的工具 修復的工作特性就是把不連續的文件刪除
注意:在非掛載的情況下修復
因進程以外終止或系統崩潰等原有導致寫入操作非正常終止時,可能會造成文件損壞;此時,應該檢測并修復文件系統;建議,離線進行
fsck:check and repair a Linux file system

  • -t fstype:指明文件系統類型

  • fsck -t ext4 = fsck.ext4

  • -a:無需交互而自動檔修復所有錯誤;

  • -r: 交互式修復;
    注意: FS_TYPE一定要與分區上已經文件類型相同;

e2fsck: ext系列文件專用的檢測修復工具
e2fsck:check a Linux ext2/ext3/ext4 file system
e2fsck[option]device

  • -y:自動回答為yes

  • -f:強制修復

掛載設備

根文件系統之外的其他文件系統要想能夠被訪問,都必須通過“關聯”至根文件系統上的某個目錄來實現,此關聯操作即為“掛載”;此目錄即為“掛載點”;
掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄做為其它文件訪問入口的行為
卸載:為解除此關聯關系的過程
把設備關聯掛載點: mount Point
mount
卸載時:可使用設備,也可以使用掛載點
umount
掛載點下原有文件在掛載完成后會被臨時隱藏
應該使用未被或不會被其他進程使用的目錄掛載

1.掛載命令

掛載方法: mount DEVICE MOUNT_POINT

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

mount [-fnrsvw] [-t vfstype] [-o options] device dir
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

命令選項:

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

  • -r: readonly,只讀掛載

  • -w: read and write, 讀寫掛載

  • -n: 默認情況下,設備掛載或卸載的操作會同步更新至/etc/mtab文件中,-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
默認掛載的默認選項
mount /dev/sr0 /mnt

查看內核追蹤到的已掛載的所有設備:
cat /proc/mounts

一個使用技巧:
可以實現將目錄綁定在另一個目錄上,作為其臨時訪問入口;

mount --bind 源目錄 目標目錄

掛載本地的回環設備;

mount -o loop /path/to/some_loop_file mount_point

2.卸載命令

查看掛載情況:

findmnt MOUNT_POINT
mount
cat /etcmatb
cat /proc/mounts

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

lsof MOUNT_POINT
fuser -v MOUNT_POINT

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

fuser -km MOUNT_POINT

卸載:

umount DEVICE
umount MOUNT_POINT

3.文件掛載配置文件:/etc/fstab

配置文件系統體系
被mount、 fsck和其它程序使用
系統重啟時保留文件系統體系
可以在設備欄使用文件系統卷標
使用mount -a 命令掛載/etc/fstab中的所有文件系統

設定除了根文件系統以外的其他文件系統能夠開機時自動掛載:/etc/fstab文件
/etc/fstab 每行定義一個要掛載的文件系統;

  • 要掛載的設備或偽文件系統

  • 掛載點

  • 文件系統類型

  • 掛載選項

  • 轉儲頻率

  • 自檢次序

要掛載的設備或偽文件系統:
 設備文件 
 LABEL(LABEL="")
 UUID(UUID="")
 偽文件系統名稱(proc,sysfs)

掛載點:
 swap類型的設備的掛載點為swap
 其他的設備掛載點自定義指向某個路徑

文件系統:
 使用blkid命令查看掛載分區的文件系統類型

掛載選項:
 defaults:使用默認的掛載選項
 如果要同時指明多個掛載選項,彼此間以逗號分隔

轉儲頻率:
 0:不做備份
 1:每天轉儲
 2:每隔一天轉儲

自檢次序: 
 0:不自檢
 1:首先自檢;一般只有根文件系統才用1
 2:次級自檢

交換分區

linux上的交換分區必須使用獨立的文件系統
且文件系統的system id 必須為82
交換分區是系統RAM的補充

1.基本設置包括:

? 創建交換分區或者文件
? 使用mkswap寫入特殊簽名
? 在/etc/fstab文件中添加適當的條目
? 使用swapon -a 激活交換空間

2.創建swap設備

mkswap命令:

mkswap [option] device
-L label:指明卷標
-f:強制

3.掛載交換空間

啟用: swapon

swapon [OPTION]… [DEVICE]

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

  • -p PRIORITY:指定優先級

  • /etc/fstab:pri=value

禁用: swapoff [OPTION]… [DEVICE]

4.swap的優先級

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

移動介質的掛載

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

1.使用光盤介質

在圖形環境下自動啟動掛載

/run/media/<user>/<label>

否則就必須被手工掛載

mount -r /dev/cdrom /mnt/
mount /dev/sr0 /mnt/

卸載光盤:

umount /mnt

eject命令也可卸載或彈出磁盤

創建ISO文件

cp /dev/cdrom /root/centos7.iso
mkisofs -r -o /root/etc.iso /etc

刻錄光盤

wodim –v –eject centos.iso

2.掛載USB介質

被內核探測為SCSI設備

/dev/sdaX、 /dev/sdbX、或類似的設備文件

在圖形環境中自動掛載

圖標在[計算機]窗口中創建
掛載在/run/media//

手動掛載

 mount /dev/sdb1 /mnt

手動卸載

umount /mnt

常見工具

1.隨機創建UUID號

[root@w7 mnt]# uuidgen
212506ac-f127-4ea8-b466-c2a61f17a229

2.查看磁盤命令

lsblk 查看磁盤命令

[root@w7 ~]# lsblk 
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
fd0      2:0    1    4K  0 disk 
sda      8:0    0   80G  0 disk 
├─sda1   8:1    0  200M  0 part /boot
├─sda2   8:2    0 58.6G  0 part /
└─sda3   8:3    0    2G  0 part [SWAP] 
sr0     11:0    1  7.2G  0 rom

3.hexdump 查看二進制文件

在磁盤可查看設備文件的MBR

[root@w7 mnt]# hexdump -C -n 512 /dev/sdc
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001c0  01 00 ee fe ff ff 01 00  00 00 ff ff 7f 02 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

4.查看系統加載的模塊信息

 lsmod命令:

[root@w7 mnt]# lsmod
Module                  Size  Used by
ext4                  578819  0 
mbcache                14958  1 ext4
jbd2                  102940  1 ext4
nls_utf8               12557  0 
isofs                  39844  0 
dm_mirror              22135  0 
dm_region_hash         20862  1 dm_mirror

5. 內存空間使用狀態:

free [OPTION]

  • -m: 以MB為單位

  • -g: 以GB為單位

6.文件系統空間占用等信息的查看工具:

df [OPTION]… [FILE]…

  • -H 以1000為單位

  • -T 文件系統類型

  • -h: human-readable

  • -i: inodes instead of blocks

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

7.查看某目錄總體空間占用狀態:

du [OPTION]… DIR

  • -h: human-readable

  • -s: summary

8.工具dd

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 指定塊大?。仁鞘莍bs也是obs)
ibs=size 一次讀size個byte
obs=size 一次寫size個byte
cbs=size 一次轉化size個byte
skip=blocks 從開頭忽略blocks個ibs大小的塊
seek=blocks 從開頭忽略blocks個obs大小的塊
count=n 只拷貝n個記錄
conv=conversion[,conversion…] 用指定的參數轉換文件。

轉換參數:

ascii 轉換 EBCDIC 為 ASCII
ebcdic 轉換 ASCII 為 EBCDIC
block 轉換為長度為 cbs 的記錄,不足部分用空格填充。
nblock 替代cbs長度的每一行尾的空格為新行
lcase 把大寫字符轉換為小寫字符
ucase 把小寫字符轉換為大寫字符
swab 交換輸入的每對字節
noerror 出錯時不停止
notrunc 不截短輸出文件
sync 把每個輸入塊填充到ibs個字節,不足部分用空(NUL)字符補齊

用法:

磁盤拷貝:
  dd if=/dev/sda of=/dev/sdb
備份MBR:
  dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
破壞MBR中的bootloader:
  dd if=/dev/zero of=/dev/sda bs=64 count=1 seek=446

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

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

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

從光盤拷貝iso鏡像
  拷貝光盤數據到root文件夾下,并保存為cd.iso文件
   dd if=/dev/cdrom of=/root/cd.iso

銷毀磁盤數據
  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=12500  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錯誤。當這種情況影響到硬盤的第一個扇區時 ,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。

有一個大與2K的二進制文件fileA。 現在想從第64個字節位置開始讀取,需要讀取的大小是128Byts。又有fileB, 想把上面讀取到的128Bytes寫到第32個字節開始的位置,替換128Bytes,請問如何實現?
  dd if=fileA of=fileB bs=1 count=128 skip=63 seek=31 conv=notrunc

實戰:
1、創建一個2G的文件系統,塊大小為2048byte, 預留1%用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/testdir目錄,且默認有acl掛載選項
2、寫一個腳本,完成如下功能:
(1) 列出當前系統識別到的所有磁盤設備
(2) 如磁盤數量為1,則顯示其空間使用信息
否則,則顯示最后一個磁盤上的空間使用信

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

(0)
wencxwencx
上一篇 2016-08-30 13:55
下一篇 2016-08-30 13:55

相關推薦

  • 馬哥教育網絡21期+第二周練習博客

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 常用文件管理類命令有cp、mv、rm。 # cp命令:文件復制命令     cp [OPTION]… [-T] SOURCE DEST 單文件復制     cp [OPTION]… SOURC…

    Linux干貨 2016-07-26
  • yum相關知識及源碼編譯安裝http

    二.源碼編譯安裝http 獲得源碼,將源碼放在/usr/local/src下,并將其解壓縮到此目錄下 進入解壓縮文件下,查看INSTALL文件 文件內容如下 黃色區域即為安裝步驟 在當前目錄下執行./configure –prefix=/usr/local/appach2 編譯  make make install  把目標文…

    系統運維 2016-08-24
  • 邏輯卷的創建與移除

    一、彈性控制磁盤大小的lvm:     假如有這樣一個場景,在初始安裝linux系統時給 /home分區設置了一定大小,但是過了一段時間后,你發現初始分配的大小遠不能滿足公司的擴大,員工增加,需要分配的賬號的磁盤空間也變大,這時你應該怎么辦?是掛載一塊更大的硬盤,將原來的小硬盤拆除掉嗎?其實在linux中有lvm可動態增大文件系…

    Linux干貨 2016-08-30
  • MariaDB日志

    MariaDB日志 查詢日志:query log; 慢查詢日志:slow query log 查詢時長超出指定界限。 錯誤日志:error log 二進制日志:binary log;此中存儲要發生改變或潛在發生改變的語句。 中繼日志:reley log 事務日志:transaction log 1、查詢日志 記錄查詢語句,日志存儲位置:一般不開啟。 文件:f…

    Linux干貨 2016-11-20
  • 文件編輯之神器Sed

    pattern space   //  文本中每行內容都會進入到pattern space中, 如果匹配到了,就會進入到右分支, 如果沒有匹配到,則進入左分支。 hold space  //  就是已經被模式匹配到, 并且編輯后保存的內容就是hold space 中. 默認情況下,當沒有被匹配之后,沒有匹配到…

    Linux干貨 2016-08-15
  • N28-第二周

    1. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    2. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
    3. 請使用命令行展開功能來完成以下練習:
    (1) 創建/tmp目錄下的a_c、a_d、b_c、b_d。
    (2) 創建/tmp/mylinux目錄下的bin、boot/grub、dev、etc/rc.d/init.d、etc/sysconfig/network-scripts、lib/modules、
    lib64、proc、sbin、sys、tmp、usr/local/bin、usr/local/sbin、var/lock、var/log、var/run目錄。
    4. 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?如何修改文件的時間戳信息?
    5. 如何定義一個命令的別名?如何在命令中引用另一個命令的執行結果?
    6. 顯示/var目錄下所有以L小寫開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
    7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
    8. 顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄。
    9. 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
    11. 複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
    12. 複製/etc目錄下所有以L小寫或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干貨 2017-12-14
欧美性久久久久