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的大小;
-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为单位显示磁盘空间大小;
-T:文件系统的类型;
-h:human-readable 人类易读格式显示;
查看某目录总体空间占用状态:
du [option] [DIR]
-h:human-readable 人类易读格式显示;
-a:统计磁盘占用时包括文件,而不仅仅时只统计目录;
-s:只统计目录的总大小;
示例:
[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.178linux.com/42874