列出可用的磁盤設備
圖形化磁盤管理功能工具:點擊“應用程序”->“系統工具”->“磁盤”或執行命令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 / Solarisw保存退出
使用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錯誤。當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢。上邊的命令有可能使這些數據起死回生。且這個過程是安全,高效的。