Linux磁盤及文件系統管理

Linux磁盤及文件系統管理

創建文件系統 
    mkfs.ext#
    .xfs
mke2fs 功能比mkfs強大的多

檢測及修復
    fsck 
        fsck。ext2 。。。

查看文件系統
dumpe2fs   tune2fs
調整文件系統特性
        tune2fs
part -a  掃描已經創建的分區 刪除的分區也行

blkid 查看文件系統
lsmod 查看內核已裝載模塊
findfs :查找分區

設備文件:FHS(LSB)  /dev/: 設備

設備文件,關聯至設備的驅動程序;設備的訪問入口
每一個設備文件叫做一個節點

設備類別:一般在/dev下

  • 塊(block):隨機訪問,數據交換單位為“塊”(隨機訪問)

  • 字符(character):線性性訪問,數據交換單位為字符(順序訪問)

mknod命令:用來創建塊設備或者字符設備,并指明設備號,特殊文件

    mknod [OPTION]... NAME TYPE [MAJOR MINOR]
        -m, --mode=MODE  :創建設備文件時直接指明權限

        設備文件的文件名:ICANN

        [root@localhost testdir]# mknod -m 755  ltt1 b 10 15
        [root@localhost testdir]# mknod -m 755  ltt2 c 8 1
        [root@localhost testdir]# ll
        總用量 0
        brwxr-xr-x+ 1 root root 10, 15 8月  25 20:32 ltt1
        crwxr-xr-x+ 1 root root  8,  1 8月  25 20:32 ltt2
            創建塊設備文件時,必需指定主、次設備號

注意:設備文件沒有大小,只有設備號!

所以創建個和某設備一樣的設備號,那就是同一個文件,

這就相當于復制設備文件了

[root@localhost mnt]# ll /media/qiu/
總用量 18
drwx------. 2 root root 16384 8月  26 19:18 lost+found
-rw-r--r--. 1 root root     0 8月  26 20:45 qqq
drwxr-xr-x. 2 root root  2048 8月  26 19:50 tmps
[root@localhost mnt]# ll 
總用量 18
drwx------. 2 root root 16384 8月  26 19:18 lost+found
-rw-r--r--. 1 root root     0 8月  26 20:45 qqq
drwxr-xr-x. 2 root root  2048 8月  26 19:50 tmps
[root@localhost mnt]# ll ~/CPsdb1 
brw-r--r--. 1 root root 8, 17 8月  26 20:37 /root/CPsdb1
[root@localhost mnt]# ll /dev/sdb1
brw-rw----. 1 root disk 8, 17 8月  26 19:33 /dev/sdb1

設備號:

major:主設備號,區別設備類別,用于標明所需驅動程序
minor:次設備號,區分同種類型下的不同的設備;特定設備的訪問入口

磁盤設備文件:

IDE接口(ATA):并行, 133MB/s

兩個IDE控制器:每個控制器可通過線纜接入兩塊磁盤,一主一從;

/dev/hd[a-z][#]
/dev/hda, /dev/hdb,
/dev/hdc, /dev/hdd

SCSI接口: 并行,Small Computer System Interface

  UltraSCSI 320, 320MB/s
  SATA接口:串行,Serial ATA,     **6Gpbs**
    USB接口:串行,480MB/s
    SAS接口:串行

設備文件:/dev/sd[a-z][#]

        [a-z]:標記設備
        [#]:磁盤分區

磁盤的結構

  • track: 磁道

  • sector: 扇區,512bytes

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

  • 尋道時間:平均尋道時間

    • 現在的普通機械硬盤:5400rpm,7200rpm,1000rpm,1500rpm  rpm(轉速)

Linux磁盤及文件系統管理Linux磁盤及文件系統管理

磁盤分區:

為什么要分區?

  • 優化I/O性能

  • 實現磁盤空間配額限制

  • 提高修復速度

  • 隔離系統和程序

  • 安裝多個OS

  • 采用不同文件系統

兩種分區方式:MBR,GPT

MBR:

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

如何分區:按柱面

MBR:0磁道0扇區,主引導扇區(master boot record):512bytes**

  • 446bytes: boot loader(MBR)

  • 64bytes:磁盤分區表    (DPT)

    • 4個主分區;3主分區+1擴展(N個邏輯分區從5+分)最多每個分區2T

    • 16bytes: 標識一個分區

  • 2bytes:  (BRID)引導記錄標示,當前MBR信息是否有效的標記; 55 aa 為有效
    Linux磁盤及文件系統管理

Linux磁盤及文件系統管理
Linux磁盤及文件系統管理

GPT:全局唯一標識分區表

GPT:是一個物理硬盤的分區結構。它是可擴展固件接口標準的一部分,用來替代BIOS中的主引導記錄分區表。但因為MBR分區表不支持容量大于
2TB的分區,所以也有一些BIOS系統為了支持大容量硬盤而用GPT分區表取代MBR分區表。GPT分區表支持最多128PB的硬盤和分區

劃分

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

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

Linux磁盤及文件系統管理

管理分區

blkid:顯示當前已掛載的文件系統

Linux下可以使用blkid命令對查詢設備上所采用文件系統類型進行查詢。blkid主要用來對系統的塊設備(包括交換分區)所使用的文件系統類型、LABEL、UUID等信息進行查詢。要使用這個命令必須安裝e2fsprogs軟件包。

1、列出當前系統中所有已掛載文件系統的類型:

sudo blkid

2、顯示指定設備 UUID:

sudo blkid -s UUID /dev/sda5

3、用指定的 UUID 查設備

blkid -U ef7a7136-8f3b-403a-93aa-1d3406b0dbca (UUID)

4、以列表形式顯示

[root@localhost testdir]# blkid -o list
device       fs_type label    mount point      UUID
-----------------------------------------------------------------------------------
/dev/sda1    xfs              /boot            a7adb729-cfa8-4292-aae5-59fbd6ad64f1
/dev/sda2    swap             <swap>           ef7a7136-8f3b-403a-93aa-1d3406b0dbca
/dev/sda3    xfs              /                d82b626b-bbfb-412f-a994-fbe75ed89e82
/dev/sr0     iso9660 CentOS 7 x86_64 (not mounted) 2015-12-09-22-36-30-00

自動生成UUID命令:uuidgen

lsblk命令 (查看內存中的分區)

相當于
ls /dev/sd* == cat /proc/partitions
默認情況下將以樹狀列出所有塊設備

    lsblk

    NAME   MAJ:MIN rm   SIZE RO type mountpoint
    sda      8:0    0 232.9G  0 disk 
    ├─sda1   8:1    0  46.6G  0 part /
    ├─sda2   8:2    0     1K  0 part 
    ├─sda5   8:5    0   190M  0 part /boot
    ├─sda6   8:6    0   3.7G  0 part [SWAP]
    ├─sda7   8:7    0  93.1G  0 part /data
    └─sda8   8:8    0  89.2G  0 part /personal
    sr0     11:0    1  1024M  0 rom

7個欄目名稱如下:

  1. NAME:這是塊設備名。

  2. MAJ:MIN:本欄顯示主要和次要設備號。

  3. RM:本欄顯示設備是否可移動設備。注意,在本例中設備sdb和sr0的RM值等于1,這說明他們是可移動設備。

  4. SIZE:本欄列出設備的容量大小信息。例如298.1G表明該設備大小為298.1GB,而1K表明該設備大小為1KB。

  5. RO:該項表明設備是否為只讀。在本案例中,所有設備的RO值為0,表明他們不是只讀的。

  6. TYPE:本欄顯示塊設備是否是磁盤或磁盤上的一個分區。在本例中,sda和sdb是磁盤,而sr0是只讀存儲(rom)。

  7. MOUNTPOINT:本欄指出設備掛載的掛載點。

默認選項不會列出所有空設備。要查看這些空設備用  -a 選項

開機狀態下掃描新加的硬盤(虛擬機適用):

echo " – – – " /sys/class/scsi_host/host0/scan

[root@localhost ~]# echo " - - - " /sys/class/scsi_host/host0/scan 
[root@localhost ~]# lsblk

若掃不出來
后綴變成
host0、1、2、3/scan
都試一下就能出現了

分區工具fdisk命令和gfdisk:

1、查看已經識別的磁盤設備(真實磁盤分區表):

fdisk -l /dev/[hs]d[a-z]可以省略

2、管理分區

fdisk DEVICE —–列出指定設備上的磁盤信息

dos表示 mbr格式的磁盤

boot 引導分區
centos6 start  從哪個柱面
7  從哪個扇區開始

block  剩下一共用多少的塊

Id表示,磁盤所在的場景類型  
83表示linux正常分區(16進制數字)

  • 5擴展分區

  • 82 swap分區

fdisk提供了一個交互式接口來管理分區,它有許多子命令,分別用于不同的管理功能;所有的操作均在內存中完成,沒有直接同步到磁盤;
常用命令:
                p: 顯示現有分區表;
                n: 創建新分區
                d: 刪除現有分區
                t: 修改分區ID
                l: 查看支持哪些分區ID
                w: 保存退出
                q: 不保存退出
                m: 顯示幫助信息

            示例:/dev/sdb
                3主+1擴展(3個邏輯)
                2主+1擴展(4個邏輯)
                ...    

        注意:如果本來有sda1-7
           這時你刪除了6,那么7還在不過7的盤符就變成了6

    出現警告:
        查看內核是否已經識別新建分區:
            # cat /proc/partitions

        通知內核強制重讀分區表:
            CentOS 5, 7: partprobe /dev/DEVICE
            CentOS 6: partx, kpartx
                新增分區用(可不加指明的 -n 選項)
                    **partx -a -n M:N  /dev/DEVICE**(常用 直接 -a )
                    kpartx -a /dev/DEVICE -f: force
                刪除分區用 (可不加指明 -n 選項)
                    partx -d -n M:N /dev/DEVICE
                    centos6: –nr N-M

                注意:成功讀取分區,可能需要命令重復執行2次或以上;

        此外的工具:sfdisk, parted

parted 此工具直接寫入內存非常危險

parted的操作都是實時生效的,小心使用

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

轉化 gpt或者msdos的分區格式

parted /dev/sdb mklabel  gpt|msdos

顯示分區狀態
parted /dev/sdb print

分區從第一塊開始 分1200M
parted /dev/sdb mkpart primary 1 1200 (從1開始到1200M默認M)

刪除第一個分區
parted /dev/sdb rm 1
parted -l

其他:
查看mbr
hexdump  -C -n 512 /dev/sda

備份mbr
dd if=/dev/sda of=/testdir/mbrbak bs=1 count=512
hexdump  -C -v /testdir/mbrbak

恢復mbr
dd if=/testdir/mbrbak  of=/dev/sdd
fdisk /dev/sdd -l
lsblk
hexdump  -C -n 512 /dev/sdd

破壞boot loader
dd if=/dev/zero of=/dev/sdd bs=1 count=446
hexdump  -C -v -n 512 /dev/sdd

清除分區標識
dd if=/dev/zero of=/dev/sdd bs=1 count=2 skip=510 seek=510
hexdump  -C -v -n 512 /dev/sdd
fdisk -l /dev/sdd
恢復分區標識
dd if=/testdir/mbrbak  of=/dev/sdd bs=1 count=2 skip=510 seek=510


文件系統:

概念

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

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

文件系統類型  VFS: Virtual File System

  • Linux文件系統: ext2, ext3, ext4, xfs(SGI), btrfs(Oracle), reiserfs, jfs(AIX), swap

  • 光盤:iso9660

  • Windows:fat32, ntfs

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

  • 網絡文件系統:NFS, CIFS

    • windows網絡共享就是用的CIFS

    • linux需要借助samba

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

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

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

              偽文件系統: tmpfs, hugepagefs, proc, sysfs
              交換文件系統:swap

    文件系統分類

    根據其是否支持"journal(日志)"功能:

    文件系統的組成部分:

    Linux的虛擬文件系統:VFS

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

    • 在真實的文件系統之上搭建的虛擬文件系統,便于用戶訪問,提供一個統一的接口

    • 內核中的模塊:ext4, xfs, vfat

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

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

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

元數據:每個索引項稱一個inode, (index node)
        inode table

/var/logs/messages 
    根的inode --> 根目錄對應的磁盤塊 --> var對應的inode編號 --> 查inode table, 找到編號對應的inode --> var目錄的磁盤塊 --> logs 的inode編號 --> 查inode table, 找到logs目錄的inode --> logs目錄的磁盤塊 --> 找到messages文件名對應的inode編號 -->查inode表,找到messages的inode編號對應的inode --> messages的磁盤塊

                dentry

            鏈接文件:訪問同一個文件數據不同路徑
                硬鏈接:兩個文件路徑指向了同一個inode;
                    創建方法:
                        # cp -l SRC DEST
                        # ln SRC DEST

                        特性:
                            (1) 目錄不支持硬鏈接;
                            (2) 硬鏈接不能跨文件系統;
                            (3) 硬鏈接文件與原文件是指向同一個inode,創建硬鏈接文件會增加inode的引用計數;
                符號鏈接:鏈接文件是一個完全獨立的新文件,但其指向了原文件的文件路徑;
                    特性:
                        (1) 符號鏈接文件與原文件是兩個各自獨立文件;
                        (2) 目錄可以創建符號鏈接;
                        (3) 可以跨文件系統;
                        (4) 刪除鏈接不影響原文件;但刪除原文件,符號鏈接指向的文件路徑將不復存在,因此,此時鏈接文件將變成失效的鏈接;

                        其大小并非真正原文件大小,而是指向的原文件的文件路徑字符串所包含的字節數;

                    創建方法:
                        ln -s SRC DEST

                bitmap索引

                block group: 
                    bitmap: inode, block

創建文件系統

mkfs命令:

(1) # mkfs.FS_TYPE /dev/DEVICE

    ext4
    xfs
    btrfs
    vfat
yum install xfsprogs


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

  • -L  'LABEL': 設定卷標

但凡加上 e2fs的命令一般就是給 ext # 系列文件系統用的的工具

ext系列文件系統:mke2fs

mke2fs [OPTION]... /dev/DEVICE
  • -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:關閉指定特性

blkid塊設備屬性信息查看

語法:blkid [OPTION]… [DEVICE]

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

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

      [root@localhost ~]# blkid 
      /dev/sda1: UUID="a7adb729-cfa8-4292-aae5-59fbd6ad64f1" TYPE="xfs" 
      /dev/sda2: UUID="ef7a7136-8f3b-403a-93aa-1d3406b0dbca" TYPE="swap" 
      /dev/sda3: UUID="d82b626b-bbfb-412f-a994-fbe75ed89e82" TYPE="xfs" 
      /dev/sr0: UUID="2015-12-09-22-36-30-00" LABEL="CentOS 7

    e2label:管理ext系列文件系統的LABEL(卷標名)

    語法: e2label device [ new-label ](改卷標名):

          查看:e2label /dev/DEVICE
          設定卷標:e2label /dev/DEVICE LABEL

findfs :查找分區

語法:
以全標明查找分區
findfs [options] LABEL=

以UUID查找分區
findfs [options] UUID=

[root@localhost ~]# findfs LABEL=123
/dev/sdc1


[root@localhost ~]# findfs UUID=d82b626b-bbfb-412f-a994-fbe75ed89e82
/dev/sda3
[root@localhost ~]# blkid -U d82b626b-bbfb-412f-a994-fbe75ed89e82
/dev/sda3

UUID: 全局惟一標識符

tune2fs:調整文件系統的參數

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

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

  • -L 'LABEL':修改卷標

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

  • -j: 將ext2升級為ext3

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

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

  • -U UUID: 修改UUID號

dumpe2fs:

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

文件系統檢測和修復:

因進程意外中止或系統崩潰等原因導致寫入操作非正常終止時,可能會導致文件損壞;此時,應該修改修復文件系統;

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

注意:應該離線進行;

fsck: File System Check

  • fsck.FS_TYPE

  • fsck -t FS_TYPE

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

    • -a: 自動修復錯誤

    • -r: 交互式修復錯誤

e2fsck:ext系列文件專用的檢測修復工具

  • -y:自動回答為yes

  • -f:強制修復;

注意:這只是文件系統被破壞,里面的文件還是存在的,修復需謹慎,要做備份,
重要的話不要修復?。?! 一定要在非掛載的情況下修復?。?!

Windows無法識別Linux上專用的文件系統,因此,有存儲設備需要兩種系統之間交叉使用時,應該使用windows支持的文件系統:

    # mkfs -t vfat /dev/DEVICE

swap文件系統:
    Linux上交換空間必須使用獨立的磁盤分區;
        fdisk /dev/DEVICE
            t命令調整其ID為82; 

    創建交換分區文件系統:mkswap命令
        mkswap [-L LABEL] /dev/DEVICE

注意:在Linux系統上,所有的文件系統必須通過根文件系統的某個分支來訪問;根文件系統:根關聯到的分區
        有一定的要求:FHS

掛載mount

  • 掛載:將額外文件系統與根文件系統某現存的目錄建立起關聯
    關系,進而使得此目錄做為其它文件訪問入口的行為

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

  • 把設備關聯掛載點:mount Point

    • mount

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

    • umount

mount命令:

語法格式:mount DEVICE MOUNT_POINT

掛載點
   1、事先存在;
   2、應該使用別的進程未使用的目錄;
   3、掛載點下原有的文件將被隱藏;
   4、進程正在使用的設備無法被卸載

mount:將顯示當前系統已經掛載的所有文件系統的相關信息;
通過查看/etc/mtab文件顯示當前已掛載的所有設備或者更全面的 /proc/mounts

命令選項:

  • -r: 只讀掛載

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

  • -L LABEL: 以卷標的方式指定要掛載的設備,因此,此時DEVICE可省;

  • -U UUID:以UUID的方式指定要掛載的設備,因此,此時DEVICE可??;

  • -a: 自動掛載所有的支持自動掛載的設備(/etc/fstab文件中定義的支持自動掛載的設備);

  • -B, –bind: 綁定目錄到另一個目錄上(掛載目錄)

  • -n: 默認情況下,設備掛載與否的改變結果會被保存于/etc/mtab中一份;-n選項用于變動時不更新此文件,df就看不到了!

  • -t FSTYPE: 被掛載的設備上的文件系統類型;可省略,此時mount會自動使用blkid命令來判斷之;

    示例:

       # mount -U dea669ee-e769-46d9-86a8-88925a10278b /data/mydata
  • -o options:(掛載文件系統的選項),多個選項使用逗號分隔

    • async:異步模式

    • sync:同步模式,內存更改時,同時寫磁盤(立刻同步,性能不佳)

    • atime/noatime:包含目錄和文件

    • diratime/nodiratime:目錄的訪問時間戳

    • auto/noauto:是否支持自動掛載,是否支持-a選項

    • exec/noexec:是否支持將文件系統上運行應用程序(可執行的程序都不能運行)

    • dev/nodev:是否支持在此文件系統上使用設備文件

    • suid/nosuid:不否支持suid和sgid權限

    • remount:重新掛載

    • acl: 支持使用facl;

       # mount -o acl
       # tune2fs -o acl /dev/DEVICE: 打開acl為默認掛載選項;ro:只讀
    • rw:讀寫

    • user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載

    • acl:啟用此文件系統上的acl功能
      Defaults:相當于rw, nosuid, dev, exec, auto, nouser, async
      如果要同時指明多個掛載選項,彼此之間以逗號分隔;
      defaults,acl,noatime,noexec

      查看所有已經掛載設備的方法:

               # mount
               # cat /etc/mtab
               # cat /proc/mounts

掛載光盤要用 mount -o loop 光盤鏡像!

umount命令:

umount DEVICE
umount MOUNT_POINT

注意:正在被某進程訪問的設備是不可以被卸載的;查看被什么進程所占用:
# lsof 設備
# fuser -v 掛載點查看掛載點被什么進程占用!

# fuser -km 設備或掛載點: 終止正訪問掛載點的進程;
此命令非常危險 如果不小心fuser -km / 會踢出所有的用戶??!

[root@localhost ~]# umount /dev/sdb1
umount: /mnt:目標忙。
        (有些情況下通過 lsof(8) 或 fuser(1) 可以
         找到有關使用該設備的進程的有用信息)

[root@localhost ~]# lsof /dev/sdb1  -----后面接設備
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
bash    3029 root  cwd    DIR   8,17     2048 131073 /mnt/tmps

[root@localhost ~]# fuser -v /mnt
                     用戶     進程號 權限   命令
/mnt:                root     kernel mount /mnt
[root@localhost ~]# fuser -km /dev/sdb1
/dev/sdb1:            3029c

交換分區:

創建交換分區文件系統:mkswap

free命令:查看內存使用狀況

  • -m

  • -g

啟動交換分區:

swapon [OPTION] [DEVICE]

  • -a: 啟用/etc/fstab文件中定義的所有交換分區

禁用交換分區:

swapoff DEVICE


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

掛載點和/etc/fstab

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

定義開機可自動掛載的文件系統,每行一個:

6個字段:
    (1) 掛載的設備:
        設備文件
        LABEL
        UUID
        偽文件系統:如sysfs, proc, tmpfs等
    (2) 掛載點
        swap的掛載點仍為swap
    (3) 文件系統類            
      (4) 掛載選項
        defaults表示使用默認掛載選項;
        多個掛載選項間使用逗號分隔;如defaults,acl,noatime
        pri=100 越大為主,首先啟用最大的!
        ro,表示只讀!rw讀寫
    (5) 轉儲頻率
        0:從不備份
        1: 每天備份
        2: 每隔一天備份
    (6) 自檢次序
        0:不自檢
        1:首先自檢,通常只有根文件系統可首先自檢
        2:次級自檢,
        ...
1:首先自檢;一般只有rootfs才用1

mount -a:可自動掛載自定義在此文件中的所支持制動掛載的設備(注意,已經掛載過的再加入fstab里面此命令是不會生效的,必須卸載再掛載或者-o remount才行?。?

掛載時如掛載的是目錄,那么第三字段 寫none,第四字段寫bind

Linux磁盤及文件系統管理
注意最后列如果不寫0的話,如果寫錯會出問題,開機啟動不了!

設備名出錯,自檢非零,開機無法啟動,修復方法

啟動不了 mount -o remount,rw /

這樣重掛一下根就好了!

Linux磁盤及文件系統管理
1、是以卷標名掛載
2、掛載光盤
3、掛載網絡文件系統

創建ISO文件

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

彈出光盤命令

彈出光驅:eject (彈出光驅) 
         eject -t 彈入光驅
可以在機房調試用

U盤的掛載也一樣,不過要注意,往U盤里寫入數據后多執行
sync  同步一下再用

實現loop 設備和文件關聯(用設備關聯文件名!)

losetup /dev/loop# 所要掛載的文件名

然后再用mount /dev/loop# 掛載點
掛載上就行了

swap分區的創建與掛載

交換分區是系統RAM的補充

基本設置包括:

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

查看誰提供當前swap功能!

cat /proc/swaps 
blkid -U  UUID 號
swapon -s

mount是看不到的

1、創建swap

mkswap /設備名
或者 -L 指明標簽 設備號

2、啟用:swapon

swapon [OPTION]… [DEVICE]

-a:激活所有的交換分區(這里指的是fstab中的文件內容);
-p PRIORITY:指定優先級

注意由于創建后的優先級比較低,要想優先級高就在/etc/fstab 的文件里    defaults后面追加,pri=value 值越大優先級越高
Linux磁盤及文件系統管理

3、禁用:swapoff [OPTION]… [DEVIC]

df命令和du:

df  顯示磁盤分區上的可使用的磁盤空間及文件系統掛載的相關信息,

  • -l: 僅顯示本地文件系統的相關系統;

  • -h: 單位換算;

  • -i: 顯示inode的使用情況而非磁盤塊的;

du命令:用于評估文件大小

  • -s: 統計整個目錄及內部所有文件總體大小(簡要信息);

  • -h: human-readable


dd命令:convert and copy a file

用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#:block size, 復制單元大小
count=#:復制多少個bs
  • of=file 寫到所命名的文件而不是到標準輸出

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

  • skip=blocks 從開頭忽略blocks個ibs(來源)大小的塊

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

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

  • count=n 只拷貝n個記錄

  • ibs=size 一次讀size個byte

  • obs=size  一次寫size個byte

  • cbs=size  一次轉化size個byte

      [root@localhost ~ ]# echo "12345678">f1
      [root@localhost ~ ]# echo "abcdefghi">f2
      [root@localhost ~ ]# dd if=f1 of=f2 bs=1 count=4 skip=3 seek=4 
      記錄了4+0 的讀入
      記錄了4+0 的寫出
      4字節(4 B)已復制,0.000276785 秒,14.5 kB/秒
      [root@localhost ~ ]# cat f2
      abcd4567    -------注意這里被截斷了
    
      abcd4567[root@localhost ~ ]# dd if=f1 of=f2 bs=1 count=4 skip=3 seek=4 conv=notrunc

工具dd

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

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

dd命令常用的幾項

磁盤拷貝(磁盤對拷b要大于a的容量):

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

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

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

備份:

方式1、 dd if=/dev/sdx of=/dev/sdy
將本地的/dev/sdx整盤備份到/dev/sdy

方式2、 dd if=/dev/sdx of=/path/to/image
將/dev/sdx全盤數據備份到指定路徑的image文件

方式3、 dd if=/dev/sdx | gzip >/path/to/image.gz
備份/dev/sdx全盤數據,并利用gzip工具進行壓縮,保存到指定路徑

恢復:

方式1、dd if=/path/to/image of=/dev/sdx
將備份文件恢復到指定盤

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

拷貝內存資料到硬盤

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

從光盤拷貝iso鏡像

dd if=/dev/cdrom of=/root/cd.iso
拷貝光盤數據到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=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錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。

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

(0)
qzxqzx
上一篇 2016-08-30
下一篇 2016-08-30

相關推薦

  • ansible

    運維自動化發展歷程,ansible 命令使用

    2018-01-13
  • shell位置變量解析

    什么是位置變量 在腳本代碼中調用通過命令行傳遞給腳本的參數。 有哪些位置變量 $1,$2,…: 對應第1、第2等參數,shift [n]換位置 $0:命令本身 $*:傳遞給腳本的所有參數,全部參數合為一個字符串 $@:傳遞給腳本的所有參數,每個參數為獨立字符串$#:傳遞給腳本的參數的個數    &nbsp…

    Linux干貨 2016-08-15
  • grub安裝

    創建兩塊磁盤分區 創建boot目錄和根本目錄rootfs mkdir /mnt/boot mkdir /mnt/rootfs mount /dev/sdb1 /mnt/boot mount /dev/sdb2 /mnt/rootfs 安裝gurb gurb-install –root-directory=/mnt /dev/sdb1 在/mnt/…

    Linux干貨 2017-11-14
  • 四.Linux博客-2016年7月26日ls、通配符、touch、cp、mv、rm、mkdir

    格式說明: 操作 概念 命令 說明及舉例 四.ls、通配符、touch、cp、mv、rm、mkdir du -sh /sys 查看文件、文件夾大小 /sys/class/scsi_host/host2/scan 在線掃盤(新加硬盤執行這個命令后才能發現) stat /etc/issue 更詳細的看數…

    Linux干貨 2016-08-23
  • date命令總結

    在linux中man手冊頁,對date -d 參數的的說明比較模糊,一下的舉例,進一步說明: #-d –date=STRING display time described by STRING not 'now' 命令: date -d nex-day +%Y%m%d    //明天日期 d…

    Linux干貨 2016-08-05
  • DNS服務器以及子域授權

    1、安裝bind      [root@www ~]# yum -y install bind 2、查看安裝生成的文件      [root@www ~]# rpm -ql bind | less 3、程序路徑     /var/named 4、配置…

    Linux干貨 2017-05-31

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-30 10:15

    文章對磁盤和文件系統管理知識總結的很全面,建議總結完后,可以從增加一塊硬盤到分區、格式化、掛載使用,連貫的操作一遍,多加熟悉各個命令的用法。

欧美性久久久久