Linux磁盤管理
磁盤管理:
本章內容
磁盤結構
分區類型
管理分區
管理文件系統
掛在設備
管理虛擬內存
硬盤接口類型:
并行:IDE、 SCSI
串口:SATA、SAS、USB
rpm:rotations per minute
設備文件:
磁盤設備的設備文件命名:/dev/DEV_FILE
IDE:/dev/hdX 其中“X”可以為a、b、c、d等字母;
SCSI、SATA、SAS、USB:/dev/sdX 其中“X”可以為a、b、c、d等字母;
分區:
表示分區時,以硬盤設備的文件名作為基礎,在后面添加該分區對應的數字序號即可;例如:第一個IDE硬盤中的第一個分區表示為“hda1”第二個表示為“hda2”,第二個SCSI硬盤中的第1個分區表示為“sdb1”第五個表示為“sdb5”。由于硬盤中的主分區數目只有4個,因此主分區和擴展分區的序號就限制在了“1~4”之間,而邏輯分區的序號將始終從5開始。
硬盤存儲術語:
head:磁頭;
track:磁道;
cylinder:柱面;
secotr:扇區,512bytes
使用分區空間:
設備識別
設備分區
重建文件系統
標記文件系統
在/etc/fstab文件中創建條目
掛在新的文件系統
磁盤分區:
為什么要分區?
優化I/O性能
實現磁盤空間配額限制
提高修復速度
隔離系統和程序
安裝多個OS
分區:
兩種分區方式:MBR GPT
MBR :使用32位表示扇區數,分區不超過2T;
MBR扇區,512個字節,其中446個字節為“boot loader”64個字節為“分區表”2個字節為“55AA”其中分區表中表示為16個字節為一個分區;
4個主分區:3個主分區+1個擴展分區(N個邏輯分區)
GPT:使用64位表示扇區數,支持128個分區,分區支持8Z(512byte/block)64Z(4096byte/block)
使用128位UUID表示磁盤和分區GPT分區表自動備份在頭和尾兩份,并有CRC校驗位;GPT分區必須使用UEFI硬件支持才可以;
管理分區:
blkid命令:
列出所有塊設備;使用此命令也可以查看設備的UUID號;
例:
[root@centos7 Desktop]# blkid /dev/sda1
/dev/sda1: UUID="fe32016e-a798-4b03-91a1-55adfd9a4355" TYPE="xfs"
[root@centos7 Desktop]#
創建分區使用:
fdisk創建MBR分區,也支持GPT,對于一塊硬盤,最多只能管理15個分區;
gdisk創建GPT分區,最多可以創建128個主分區;
parted高級分區工具(創建、復制、調整大小等)
partprobe命令:重新設置內存中的內核分區表,可以結合lsblk命令;
分區工具:
fdisk /dev/sdb
gdisk /dev/sdb
Command action
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)
查看當前系統分區表:
查看內核是否已經識別新的分區:
查看虛擬文件系統 /proc/partitions
lsblk命令
示例:
[root@centos7 Desktop]# cat /proc/partitions
[root@centos7 Desktop]# lsblk
同步分區表:
通知內核重新讀取硬盤分區表
contos6版本
新增分區:
partx -a -n M:N /dev/device
kpartx -a /dev/devcie -f:force
刪除分區:
partx -a -n M:N /dev/device
centos5、7版本
partprobe
文件系統的類型:
Linux文件系統:ext2、ext3、ext4、xfs、btrfs、jfs、swap
swap:交換分區
光盤:iso9660
Windows:fat32、ntfs
網絡文件系統:nfs,cifs
集群文件系統:gfs2,ocfs2
分布式文件系統:ceph moosefs mogilefs glusterfs lustre
raw:未經處理或者未經格式化產生的文件系統;
文件系統分類:
根據其是否支持“journal”功能:
日志型文件系統:ext3、ext4、xfs…….
非日志型文件系統:ext2,vfat
文件系統的組成部分:
內核中的模塊ext4、xfs、vfat
用戶空間的管理工具:mkfs
Linux的虛擬文件系統:vfs
查看當前系統支持的文件系統:
cat /proc/filesystems
創建文件系統:
mkfs命令:
mkfs -t 文件系統類型 分區設備
示例:
mkfs -t ext4 /dev/sdb1 = mkfs.ext4 /dev/sdb1
創建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的大?。?/span>
-N#:為數據空間創建多少個inode
-m#:默認5%,為管理員預留空間占總空間的百分比;
-O:啟用指定特性
-O:關閉指定特性
文件系統標簽
blkid命令:塊設備屬性信息查看
blkid [options] [device]
-U:根據指定的uuid來查看對應的設備名
-L:根據指定的LABEL來查看對應的設備名
e2label:管理ext系列文件系統的LABEL
e2label DEVICE [LABEL]
示例:
[root@centos7 Desktop]# e2label /dev/sdb1 /dev/sdb1
[root@centos7 Desktop]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: /dev/sdb1
findfs命令:查找分區
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>
示例:
[root@centos7 Desktop]# findfs LABEL=/dev/sdb1
/dev/sdb1
[root@centos7 Desktop]# findfs UUID=2bb4030e-68e8-4640-a3ac-62b98c029967
/dev/sda3
[root@centos7 Desktop]#
tune2fs命令:重新設定ext系列文件系統可調參數的值;
-l:查看指定文件系統超級塊信息;super block
-L:‘LABEL’:修改卷標;
-m#:修改預留給管理員的空間百分比;
-j:將ext2升級為ext3
-O:文件屬性啟用或禁用,-O ^has_joural(取消)
-o:調整文件系統的默認掛載選項,-o ^acl(取消)
-U:UUID:修改UUID號;
dumpe2fs命令:
-h:查看超級塊信息(分組信息),分區用分區管理;
文件系統檢測和修復:
常發生于死機或者非正常關機之后;
掛載為文件系統標記為“dirty”;
fsck:file system check 檢測修復文件系統
fsck.FS_TYPE
fsck -t FS_TYPE
-a:自動修復錯誤;
-r:交互式修復錯誤;
-f:強行檢測修復分區;
示例:
[root@centos7 testdir]#fsck.ext4 -f /dev/sdb1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 11/655360 files (0.0% non-contiguous), 83134/2621440 blocks
[root@centos7 testdir]#
e2fsck命令:ext系列文件專用的檢測修復工具
-y:自動回答yes
-f:強制修復
mount掛載:
掛載:將額外的文件系統與根文件系統某現存的目錄建立起關聯關系,進而使得此目錄作為其他文件訪問入口的行為;
卸載:為分區解除與目錄的掛載關系;
把設備關聯掛載點:
mount /DEVICE /DIR
卸載時,可以使用設備名或掛載點
umount /DEVICE
umount /DIR
注意:掛載點下原文件在掛載完成后被臨時隱藏
掛載點的目錄一般為空
mount:通過查看/etc/mtab文件顯示當前已掛載的所有設備;
mount常用命令選項:
mount [-fnrsvw] [-t vfstype] [-o options] device dir
-t:指明要掛載的設備上的文件系統類型;
-r:只讀掛載;
-w:讀寫掛載;
-n:不更新/etc/mtab
-a:自動掛載所有支持自動掛載的設備;
-L:LABEL以卷標名掛載設備;
-U:以uuid指定要掛載的設備;
-B:–bind綁定目錄到另一個目錄上;
-o options掛載文件系統的選項,多個選項使用逗號分隔
async:異步模式;
sync:同步模式;
atime/noatime:包含目錄和文件;
diratime/nodiratiome:目錄的訪問時間戳;
auot/noauto:是否支持自定掛載 ,是否支持-a選項;
exec/noexec:是否支持在此文件系統上使用設備文件;
dev/nodev:是否支持在此文件系統上使用設備文件;
suid/nosuid:是否支持suid和sgid權限;
remount:重新掛載;
ro:只讀;
rw:讀寫;
user/nouser:是否允許普通用戶掛載此設備,默認管理員才能掛載;
acl:啟用此文件系統上的acl功能;
mount的卸載命令:
查看掛載情況:
findmnt命令
查看正在訪問指定文件系統的進程:
lsof命令
fuser命令
終止所有正在訪問指定文件系統的進程:
fuser -km MOUNT_POINT
卸載:
umount
文件掛載配置文件:
/etc/fstab 配置文件中每行定義一個要掛載的文件系統;
要掛載的設備或偽文件系統
掛載點
文件系統類型
掛載選項
轉儲頻率
自檢次序
掛載選項:defaults
轉儲頻率:0:不做備份
1:每天轉儲
2:每個一天轉儲
自檢次序:0:不自檢
1:首先自檢,一般只有rootfs才用1
swap處理交換文件和分區
交換分區時系統RAM的補充
基本設置包括:
創建交換分區或者文件
使用mkswap命令在指定的分區上創建交換文件系統;
在/etc/fstab文件中添加適當的條目
使用swapon -a激活交換空間
掛載交換分區:
啟用:swapon
swapon [option] ……..[DEVICE]
-a:激活所有的交換分區
-p:指定優先級
/etc/fstab:pri=value
禁用:swapoff [DEVICE]
swap的優先級:
用戶可以給某個swap指定一個0到32767的優先級
如果用戶沒有指定,那么核心會自動給swap指定一個優先級,這個優先級從-1開始,每加入一個新的沒有用戶指定的優先級的swap,會給這個優先級減一。
先添加的swap的缺省優先級比較高,除非用戶自己指定一個優先級,而用戶指定的優先級是正整數永遠高于核心缺省指定的優先級。
示例:
[root@centos7 testdir]#mkswap /dev/sdb6
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=18794626-9bfd-4af8-8f46-bad8fc3067db
[root@centos7 testdir]#swapon /dev/sdb6
[root@centos7 testdir]#cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 1023996 0 -1
/dev/sdb2 partition 2097148 0 100
/dev/sdb6 partition 2097148 0 -2
[root@centos7 testdir]#swapoff /dev/sdb6
[root@centos7 testdir]#swapon -p 200 /dev/sdb6
[root@centos7 testdir]#cat /proc/swaps
Filename Type Size Used Priority
/dev/sda3 partition 1023996 0 -1
/dev/sdb2 partition 2097148 0 100
/dev/sdb6 partition 2097148 0 200
[root@centos7 testdir]#vim /etc/fstab
/dev/sdb6 swap swap defaults,pri=200 0 0
使用光盤:
eject命令卸載或彈出光盤;
創建ISO文件
cp /dev/cdrom /root/centos.iso
mkisofs -r -o /root/etc.iso /etc/
刻錄光盤:
wodim -v -eject centos.iso
常見工具:
內存空間使用狀態:
free [option]
-m:以MB為單位
-g:以GB為單位
文件系統空間占用等信息的查看工具:
df [option] ….[FILE]
-H:以M為單位顯示磁盤空間大?。?/span>
-T:文件系統的類型;
-h:human-readable 人類易讀格式顯示;
查看某目錄總體空間占用狀態:
du [option] [DIR]
-h:human-readable 人類易讀格式顯示;
-a:統計磁盤占用時包括文件,而不僅僅時只統計目錄;
-s:只統計目錄的總大?。?/span>
示例:
[root@centos7 testdir]#du -sh /etc
31M /etc
[root@centos7 testdir]#
dd命令:
dd命令:comvert and copy afile
用法:dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=# count=#
if=file 從所命名的文件讀取而不是從標準輸出
of=file 寫到所命名的文件而不是到標準輸出;
bs=size:指定塊大??;
count=n:只拷貝n個記錄;
skip=blocks :從開頭忽略block個ibs大小的塊;
seek=blocks :從開頭忽略block個ibs大小的塊;
磁盤拷貝:
dd if=/dev/sda of=/dev/sdb
備份MBR:
dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1
測試硬盤的讀寫速度:
dd if=/dev/zero of=/root/file1 bs=1024 count=1000000
通過上述命令輸出的執行時間,可以計算出測試硬盤的讀寫速度;
修復硬盤:
dd if=/dev/sda of=/dev/sda
當硬盤較長時間(比如1年2年)放置未使用,磁盤上會產生消磁,當磁頭讀到這些區域時會遇到困難,并可能導致I/O錯誤,當這種情況影響到硬盤的第一個扇區時,可能導致硬盤報廢,上面的命令有可能使這些數據起死回生,且這個過程是安全、高效的。
原創文章,作者:zhengyibo,如若轉載,請注明出處:http://www.www58058.com/42874