Linux系統的磁盤管理

linux磁盤及文件系統管理

磁盤分區及文件系統管理

RAID設備

LVM: 磁盤的動態編輯管理

CPU, memory(RAM), I/O

I/O設備: Disks, Ethercard (網卡)

Disks: 實現持久存數數據

接口類型:

IDE(ata): 并口  理論速度: 133MB/s

SCSI: 并口 640MB/s

SATA: 串口 SATA3理論速度: 6gbps

SAS: 串口 6gbps

USB: 串口, 480MB/s

并口: 同一線纜可以接多塊設備

IDE: 兩個,主,從

SCSI:

寬帶: 16-1

窄帶: 8-1

串口:同一線纜只能接一臺設備

硬盤: 機械硬盤, 固態硬盤

機械硬盤: 

head: 磁頭

cylinder: 柱面

secotr: 扇區

track: 磁道

設備類型:

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

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

設備文件: FHS

/dev

設備文件: 用來關聯至設備的驅動程序;設備的訪問入口

設備號:

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

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

mknod 命令:

make block or character special files 

用來創建字符或塊設備的特殊文件

mknod [OPTION]… NAME TYPE [MAJOR MINOR]

[option]

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

使用系統調用中的的設備文件更改權限的系統調用來更改權限

設備文件名: ICANN,互聯網名稱地址分配機構制定命名規則

磁盤:

IDE: /dev/hd[a-z]

例如:hda,hdb…

SCSI, SATA, SAS, USB: /dev/sd[a-z]

分區:

/dev/sda#:

/dev/sda1, /dev/sda2, …

注意: CentOS 6和7 將硬盤設備文件標志位/dev/sd[a-z]#

CHS

引用設備的方式:

設備文件名

卷標LABEL

UUID

磁盤分區: 

一、為什么分區:

優化I/O性能

實現磁盤空間配額限制

提高修復速度

隔離系統和程序

安裝多個OS

采用不同文件系統

二、分區方式: MBR, GPT

MBR: 

使用32位表示扇區數, 分區不能超過2T

0編號扇區被當做mbr, Master Boot Record, 主引導記錄扇區

共512個字節分為三部分:

446 bytes: bootloader, 程序, 引導啟動操作系統的程序

64 bytes: FAT ,文件系統分區表, 每16字節標示一個分區, 一共只能有4個分區

2 bytes: MBR區域的有效性標識; 55AA為有效

MBR備份

新掛載的磁盤: lsscsi 查看首位的設備號

掃描磁盤: echo "- – -" > /sys/class/scsi_host/host2/scan(按照lsscsi查看到的首位設備號,選擇host)

備份: dd if=/dev/sda of=/root/mbr bs=1 count=512

查看mbr內容: hexdump -C mbr

顯示分區信息: fdisk -l

恢復分區信息: dd if=mbr of=/dev/sdb

fdisk -l /dev/sda

清零boot loader: dd if=/dev/zero of=/dev/sdb bs=1 count=446

fdisk -l /dev/sdb

hexdump -C -n 512 /dev/sdb

hexdump -C -v -n 512 /dev/sdb

清零分區表: dd if=/dev/zero of=/dev/sdb bs=1 count=64 skip=446 seek=446

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

邏輯分區: 只能從5開始

GPT: GUID partition table

lsblk 列出塊設備

查看分區信息: lsblk, fdisk -l /dev/sd*, cat /proc/partition

三、fdisk命令: manipulate disk partition table, 管理磁盤分區表

1、查看磁盤分區信息

fdisk -l [device]… 列出指定磁盤設備上的信息

start 和 end: centos 6 是柱面, centos 7是扇區

2、管理分區

fdisk device

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

常用命令:

n:創建新分區

d:刪除已有分區

t:修改分區類型

l:查看所有已知ID

w:保存并退出

q:不保存退出

m:查看幫助信息

p: 顯示現有分區信息

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

查看:cat /proc/partitions

通知內核強制重讀磁盤分區表,有時可能需要執行多次命令

centos 5, 7: partprobe [device]

centos 6, 7: partx,kpartx

partx -a [device]

kpartx -af [device]

分區創建工具: parted,sfdisk

四、創建文件系統:

1、格式化: 

低級格式化: 主要目的是在出廠時劃分磁道,形成簇;

高級格式化: 分區之后, 對分區進行, 主要是為了創建文件系統

2、文件的元數據中不包含文件名,文件名存放在目錄上

元數據區和數據區: inode(index node)

文件元數據: 大小, 權限, 屬主屬組, 時間戳, 數據塊指針  等

符號鏈接文件: 存儲數據指針的空間當中存儲的是真實文件的訪問路徑

設備文件: 存數數據的空間當中存儲的是設備號(major, minor)

3、VFS: Virtual File System(虛擬文件系統)(任何兩個文件系統不能直接鏈接時, 都能通過添加中間層解決, 這個中間層就是VFS)

linux的文件系統: ext2, ext3, ext4, xfs, reiserfs, btrfs

光盤: iso9660

網絡文件系統: nfs, cifs

集群文件系統: gfs2, ocfs2

內核級分布式文件系統: ceph

windows文件系統: vfat, ntfs

偽文件系統: proc, sysfs, tmpfs, hugepagefs

Unix文件系統: UFS, FFS, JFS

交換文件系統: swap

用戶控件的分布式文件系統: mogilefs, moosefs, giusterfs

cat /etc/issue   查看Linux的發行版本

uname -r  查看內核的版本

fdisk分區完成后,使用partx -a /dev/sda 刷新啟動分區

調整分區號之后,使用kpartx -af /dev/sda 刷新分區

1、文件系統管理工具

創建文件系統的工具

mkfs

mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat

檢測和修復文件系統的工具

fsck

fsck.ext2, fsck.ext3

查看其屬性的工具

dumpe2fs, tune2fs

調整文件系統特性

tune2fs

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

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

lsmod  查看系統已經加載的模塊

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

3、ext系統文件系統的管理工具:

mkfs.

使用mkfs命令格式化硬盤后,使用blkid /dev/sda3 查看對應設備的信息

UUID: 通用唯一標識符庫

mkfs -r ext2 <==> mkfs.ext2

ext系列文件系統專用管理工具: mke2fs

mke2fs [OPTION] device

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

-b{1024(1K)|2048(2K)|4096(4K)}: 指明文件系統

的塊大小

-L LABEL: 指明卷標

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

創建有日志功能的ext3文件系統的方法:

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

-i #: 每少個字節有一個inode

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

-O[^]FEATURE: 以指定的特性創建目標文件系統,加^關閉特性,不加啟用特性

-m #: 指定預留空間, 百分比數值,不需要加% 和換算

卷標管理: e2label命令

查看: e2label device

設定: e2label device LABEL

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

adjust tuneable filesystem parameters on ext2/ext3/ext4 filesystem 

注意: 塊大小創建后不可修改; 

tune2fs [OPTIONS] device

options

-l: 查看超級塊信息

修改指定文件系統的屬性

-j: ext2 –> ext3,無損升級,對數據沒有損害,添加日志選項

-L LABEL:修改卷標

-m #: 修改預留空間百分比

-O[^]FEATURE :開啟或關閉某種特性

-o[^]mount_options: 開啟或者關閉某種默認的掛載選項

acl: 訪問控制列表

uuidgen命令: 生成新的隨機UUID

dumpe2fs命令: 顯示ext系列文件系統的屬性信息

dumpe2fs [-l] device

[h]

用于實現文件系統檢測的工具

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

ext系列文件系統專用工具

e2fsck: check a Linux ext2/ext3/ext4/ file system

e2fsck [OPTIONS] device(分區)

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

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

fsck: 通用命令,check and repair a Linux file system

-t fstype: 指明文件系統類型 man fsck.

-a: 無須交互自動修復所有錯誤

-r: 交互式修復

CentOS 6如何使用xfs文件系統:

可以聯網

# yum install xfsprogs -y

內網:

事先:

cd /etc/yum.repo.d

wget http://xx.xx.xx.xx/centos6.8.repo

mv CentOS-BASE.repo  CentOS-base.repo.bak

創建:mkfs.xfs

檢測: fsck.xfs

blkid命令: 

blkid device : 查看對應設備的相關屬性信息

blkid -L LABEL:根據指定的LABEL定位設備

blkid -U UUID: 根據UUID定位設備

swap文件系統

Linux上的交換分區必須使用獨立的文件系統(獨立的分區)

且文件系統的System ID必須為82;

創建swap設備: mkswap命令

mkswap [options] device

-L label: 指明卷標

-f: 強制

修改/etc/fstab

使用 swapon -a 生效

swapon -s 查看swap信息

調整swap的優先級時

swap的優先級:

可以指定swap分區0-32767的優先級, 值越大優先級越高; 如果沒有用戶指定, 那么內核會自動給swap指定一個優先級, 這個優先級從-1開始, 每加入一個新的沒有用戶指定優先級的swap, 會給這個優先級減一; 同時, 先添加的swap的缺省優先級比較高, 除非用戶自己指定一個優先級, 而用戶指定的優先級用于高于內核缺省指定的優先級.

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

# mkfs.vfat device

分區,格式化,修改配置文件,掛載

文件系統的使用

首先要"掛載": mount命令和umount命令

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

掛載點: mount point,用于作為另一個文件系統的訪問入口

(1)事先存在

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

(3)掛載點下原有的文件將會被隱藏

mount命令:

mount [-fnrsvw] [-f vfstype] [-o options] device dir

mount[command options] [-f] [掛載選項]

命令選項:

-a: auto, 自動掛載

-r: read only, 只讀掛載

-w: read and write, 讀寫掛載(默認)

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

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

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

mount -L LABEL dir

-U UUID: 掛載是以UUID的方式指明設備

mount -U UUID dir

-o options: 掛載選項,掛載后啟用的特性

sync/async: 同步/異步操作; 

atime/noatime: 文件或目錄在被訪問時是否更新其訪問時間戳

diratime/nodiratime: 目錄在被訪問時是否更新其訪問時間戳

remount: 重新掛載

acl: 支持使用facl功能

示例: mount -o remount,acl /dev/sda3 /mnt

或者: tune2fs -o acl device

dev/nodev: 此設備上是否允許創建設備文件

exec/noexec: 是否允許運行此設備上的程序文件

auto/noauto: 

user/nouser: 是否允許普通用戶掛載此文件系統

suid/nosuid: 是否允許程序文件上的suid和sgid特殊權限生效

defaults: Use default options: rw, suid, dev, exec, auto, nouser, async, and relatime

fuser命令,查看誰在使用掛載點的設備

fuser -km /device  (一般在緊急情況使用)

一個使用技巧:

可以實現將目錄綁定至另一個目錄上,作為其臨時訪問入口

mount –bind 源目錄 目標目錄

例如: 本機目錄掛載目錄

修改/etc/fstab配置文件

/boot /mnt/boot  none bind 0 0

mount -a

 

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

# mount

# cat /etc/matb

# cat /proc/mounts

掛載光盤:

mount -r /dev/cdrom mount_point

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

掛載U盤:

事先識別U盤的設備文件

掛載本地的回環設備:

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

命令 losetup

umount命令:

卸載時只需要 umount device|dir

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

查看哪個或哪些進程所占用

# lsof MOUNT_POINT

# fuser -v MOUNT_POINT

終止所有正在訪問某掛載點的進程

# fuser -km MOUNT_POINT

交換分區的啟用和禁用:

創建交換分區的命令: mkswap

啟用: swapon

swapon [OPTION] [DEVICE]

-a: 定義在/etc/fstab文件中的所有的swap設備

-p PRIORITY: 指定優先級

/etc/fstab: pri=value

禁用: swapoff

swapoff device

設定除根文件系統以外的其它文件系統能夠開機時自動掛載: /etc/fstab文件

每行定義一個要掛載的文件系統及相關屬性:

6個字段:

(1)要掛載的設備

設備文件:

LABEL

UUID

偽文件系統: 例如sysfs, proc, tmpfs等

(2)掛載點

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

(3)文件系統類型:

(4)掛載選項

defaults: 使用默認掛載選項

如果要同時指明多個掛載選項,彼此間以逗號(,)分隔即可

defaults,acl,noatime,noexec

(5)轉儲頻率

0: 從不備份

1: 每天備份一次

2: 每隔一天備份

(6)自檢次序

0: 不自檢

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

2: 次級自檢

…到9

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

df 和du 命令

df命令: 查看磁盤狀態

df [option]… [file]…

-l: 只顯示本地文件系統的相關信息

-h: 人類易于讀懂的human-readable

-i: 顯示inode使用狀況,而非blocks

du命令: 

查看文件的大小

du [option]… [file]…

-s: sumary 和

-h: human-readable

dd命令: 復制和改變文件

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

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

of=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: 把小寫字符轉換為大寫字符

nocreat: 不創建輸出文件

noerror: 出錯時不停止

notrunc: 不截斷輸出文件

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

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

(0)
black_fishblack_fish
上一篇 2016-08-29 08:49
下一篇 2016-08-29 08:49

相關推薦

  • Linux磁盤分區創建及bash 簡單應用

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

    2017-09-11
  • linux常用命令實戰練習–第一周作業

    1、使用date命令,顯示前10天的年月日,顯示后20天的年月日。 [root@chen ~]# date  Fri Jul 22 20:26:02 CST 2016 [root@chen ~]# date -d -10day &…

    Linux干貨 2016-07-22
  • Linux 文件系統權限

    一、簡述權限  文件系統的權限管理機制的建立,約束了用戶對數據的操作。 1、對系統安全而言  管理員的操作權限非常大,足以破壞系統,權限機制將管理員與普通用戶之間區分開,防止系統被隨意破壞。 2、對用戶而言  Linux是一個多用戶的操作系統,不同用戶間為了防止其他人破壞數據或訪問數據,文件系統的權限管理是非常必要的。 二、文件…

    Linux干貨 2016-08-04
  • Centos7上安裝Ansible和基礎應用

    Ansible 簡介 ansible是個什么東西呢?官方的title是“Ansible is Simple IT Automation”——簡單的自動化IT工具。這個工具的目標有這么幾項:自動化部署APP;自動化管理配置項;自動化的持續交互;自動化的(AWS)云服務管理。所有的這幾個目標從本質上來說都是在一個臺或者幾臺服務器上,執行一系列的命令而已。通俗的說…

    Linux干貨 2016-04-15
  • 第十七周作業

    1、結合圖形來描敘LVS的工作原理; 工作原理 LVS分為兩個組件:ipvs和ipvsadm         ipvs:工作于內核空間,主要用于使用戶定義的策略生效;         ipvsadm : 工作于用戶空間,主要用于用戶定義和管理集群服務…

    2017-06-27
欧美性久久久久