linux中分區工具的使用

列出可用的磁盤設備

  圖形化磁盤管理功能工具:點擊“應用程序”->“系統工具”->“磁盤”或執行命令gnome-disks

列出塊設備

  lsblk



創建分區使用:

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

  gdisk創建GPT分區

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

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

 

分區工具fdisk和gdisk

fdisk /dev/sdb

gfisk /dev/sdb 類fdisk 的GPT分區工具


fdisk 命令 :fdisk - manipulate disk partition table

1、查看磁盤的分區信息

  fdisk -l [-u] [device...] :列出指定磁盤設備上的分區

2、管理分區

fdisk device

[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

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

 子命令:

    m 獲取幫助

    p 分區列表

    t 更改分區類型

    n 創建新分區

    d 刪除分區

    w 保存並退出

    q 不保存並退出

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


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

# cat /proc/partations

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


新增分區用

 partx  -a -n M:N /dev/DEVICE

 kpartx -a /dev/DEVICE -f: force

刪除分區用

 partx-d -n M:N /dev/DEVICE

    centos6: –nrN-M


CentOS 5,7: 使用partprobe

    partprobe [/dev/DEVICE]



parted命令

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

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

    parted /dev/sdbmklabelgpt|msdos

    parted /dev/sdbprint

    parted /dev/sdbmkpartprimary 1 200 (默認M)

    parted /dev/sdbrm1

    parted -l



文件系統:

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

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


文件系統類型

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:未經處理或者未經格式化產生的文件系統


文件系統分類

根據其是否支持"journal"功能:

 日誌型文件系統: ext3, ext4, xfs, ...

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

文件系統的組成部分:

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

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

Linux的虛擬文件系統:VFS

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



創建文件系統

mkfs命令:

(1) # mkfs.FS_TYPE/dev/DEVICE

  ext4

  xfs

  btrfs

  vfat

[root@localhost ~]# mkfs.
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs

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

   -L 'LABEL': 設定卷標



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

    

文件系統標籤

   指向設備的另一種方法

   與設備無關

blkid:塊設備屬性信息查看

  blkid[OPTION]... [DEVICE]

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

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

blkid後不跟任何選項,即顯示系統中所有的塊設備屬性信息


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

  # e2label DEVICE [LABEL]


findfs:查找分區

  findfs [options] LABEL=<label>

  findfs [options] UUID=<uuid>


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

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

    -L 'LABEL':修改卷標

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

    -j: 將ext2升級爲ext3

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

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

    -U UUID: 修改UUID號

        隨機生成UUID命令:uuidgen 或 cat /proc/sys/kernel/random/uuid 

dumpe2fs:用於打印“ext2/ext3”文件系統的超級塊和快組信息

 dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device

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

  

文件系統檢測和修復

常發生於死機或者非正常關機之後

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

fsck: File System Check

 fsck -t FS_TYPE 

 fsck.FS_TYPE

[root@localhost ~]# fsck.
fsck.btrfs   fsck.ext2    fsck.ext4    fsck.minix   fsck.vfat    
fsck.cramfs  fsck.ext3    fsck.fat     fsck.msdos   fsck.xfs

  -a: 自動修復錯誤

  -r: 交互式修復錯誤

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


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

  -y:自動回答爲yes

  -f:強制修復

 


掛載mount

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

卸載:爲解除此關聯關係的過程

把設備關聯掛載點:mount Point

     mount

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

      umount

掛載點下原有文件在掛載完成後會被臨時隱藏

掛載點目錄一般爲空

 


用mount命令掛載文件系統

掛載方法:mount DEVICE MOUNT_POINT

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

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常用命令選項

-t vsftype:指定要掛載的設備上的文件系統類型

-r: readonly,只讀掛載

-w: read and write, 讀寫掛載

-n: 不更新/etc/mtab,相當於#mount

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

-L 'LABEL': 以卷標指定掛載設備

-U 'UUID': 以UUID指定要掛載的設備

-B, --bind: 綁定目錄到另一個目錄上


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

  cat /proc/mounts


-o options:(掛載文件系統的選項),多個選項使用逗號分隔

    async:異步模式

    sync:同步模式,內存更改時,同時寫磁盤

    atime/noatime:包含目錄和文件

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

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

    exec/noexec:是否支持將文件系統上運行應用程序

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

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

    remount:重新掛載

    ro:只讀

    rw:讀寫

    loop:用來把一個文件當成硬盤分區掛接上系統 

    iocharset:指定訪問文件系統所用字符集

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

    acl:啓用此文件系統上的acl功能

Defaults:相當於rw, suid, dev, exec, auto, nouser, async


卸載命令

查看掛載情況:

 #findmnt MOUNT_POINT

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

 #lsof MOUNT_POINT

 #fuser -v MOUNT_POINT

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

 # fuser -km  MOUNT_POINT

卸載:

 # umount DEVICE

 # umount MOUNT_POINT


掛載點和/etc/fstab

 配置文件系統體系

 被mount、fsck和其它程序使用

 系統重啓時保留文件系統體系

 可以在設備欄使用文件系統卷標

 使用mount -a 命令掛載/etc/fstab中的所有文件系統



文件掛載配置文件

/etc/fstab 每行定義一個要掛載的文件系統;

 每行包括:

    要掛載的設備或僞文件系統

    掛載點

    文件系統類型

    掛載選項

    轉儲頻率

     自檢次序

 要掛載的設備或僞文件系統:

    設備文件、LABEL(LABEL="")、UUID(UUID="")、僞文件系統名稱(proc, sysfs)

 掛載選項:defaults

 轉儲頻率:0:不做備份

      1:每天轉儲

      2:每隔一天轉儲

 自檢次序:0:不自檢

      1:首先自檢;一般只有rootfs才用1


處理交換文件和分區

交換分區是系統RAM的補充

基本設置包括:

  • 創建交換分區或者文件

      fdisk device 創建一個分區;t改變分區ID爲 82

    Device Boot     Start      End      Blocks   Id  System
    /dev/sdc1       2048     4196351     2097152   82  Linux swap / Solaris

        w保存退出

  • 使用mkswap寫入特殊簽名

       mkswap decive

  • 在/etc/fstab文件中添加適當的條目

  • 使用swapon -a 激活交換空間



掛載交換分區

啓用:swapon

  swapon [OPTION]... [DEVICE]

[root@localhost ~]# swapon
NAME      TYPE      SIZE USED PRIO
/dev/sda5 partition   2G   0B   -1
/dev/sdc1 partition   2G   0B   -2

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

    -p PRIORITY:指定優先級

    或在/etc/fstab文件中添加: pri=value(數值越大,優先級越高)

[root@localhost ~]# swapon -p 10 /dev/sdc1
[root@localhost ~]# swapon
NAME      TYPE      SIZE USED PRIO
/dev/sda5 partition   2G   0B   -1
/dev/sdc1 partition   2G   0B   10

禁用:swapoff [OPTION]... [DEVICE]


SWAP的優先級

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

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

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

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


移動介質

  • 掛載意味着使外來的文件系統看起來如同是主目錄樹的一部分

  • 訪問前、介質必須被掛載

  • 摘除時,介質必須被卸載

  • 按照默認設置,非根用戶只能掛載某些設備(光盤、DVD、軟盤、USB等等)

  • 掛載點通常在/media 或/mnt下


使用光盤

在圖形環境下自動啓動掛載/run/media/<user>/<label>

否則就必須被手工掛載

    mount /dev/cdrom/mnt/

eject命令卸載或彈出磁盤


創建ISO文件

    cp /dev/cdrom /root/centos7.iso

    mkisofs -r -o /root/etc.iso /etc

刻錄光盤

    wodim -v -eject centos.iso


掛載USB介質

被內核探測爲SCSI設備

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

在圖形環境中自動掛載

    圖標在[計算機]窗口中創建

    掛載在/run/media/<user>/<label>

手動掛載

    mount /dev/sdb1 /mnt


常見工具

內存空間使用狀態:

  free [OPTION]

    -m: 以MB爲單位

    -g: 以GB爲單位

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

  df[OPTION]... [FILE]...

    -H 以1000爲單位

    -T 文件系統類型

    -h: human-readable

    -i:inodesinstead of blocks

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

查看某目錄總體空間佔用狀態:

  du [OPTION]... DIR

    -h: human-readable

    -s: summary

  

工具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:指定塊大小(既是是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個記錄

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

    轉換參數:

    ascii 轉換EBCDIC 爲ASCII

    ebcdic 轉換ASCII 爲EBCDIC

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

    unblock 替代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/sdabs=64 count=1 seek=446

例:

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

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

備份:

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

恢復:

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

     將備份文件恢復到指定盤

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


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