Linux 磁盘管理
Linux 磁盘管理
1. 磁盘接口类型
Disks, Ehtercard
Disks: 持久存储数据
接口类型:
- IDE(ata):并口,133MB/s
- SCSI:并口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S
- SATA:串口,6gbps
- SAS:串口,6gbps
- USB:串口,480MB/s
并口介绍:同一线缆可以接多块设备;
IDE:两个,主,从
SCSI:
宽带:16-1
窄带:8-1
串口介绍:同一线缆只可以接一个设备;
iops是指:io per second
2. 设备类型
2.1 设备类型:
- 块(block):随机访问,数据交换单位是“块”;
- 字符(character):线性访问,数据交换单位是“字符”;
2.2 设备文件:关联至设备的驱动程序;设备的访问入口;
设备号:
- major:主设备号,区分设备类型;用于标明设备所需要的驱动程序;
- minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口;
mknod命令:
make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE:创建后的设备文件的访问权限;
设备文件名:ICANN
2.3 磁盘分类:
- IDE: /dev/hd[a-z]
例如:/dev/hda, /dev/hdb - SCSI, SATA, USB, SAS: /dev/sd[a-z]
/dev/sda#:/dev/sda1, ...
注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#
引用设备的方式:设备文件名,卷标,UUID
磁盘分区:MBR, GPT
MBR:0 sector(dd if=/dev/sda of=/tmp/sda.mbr bs=512 count=1)
Master Boot Record
分为三部分:
446bytes:bootloader, 程序,引导启动操作系统的程序;
64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区;
4主分区
3主1扩展:
n逻辑分区
2bytes:MBR区域的有效性标识;55AA为有效;
主分区和扩展分区的标识:1-4 逻辑分区:5+
3. 磁盘管理对应的命令
3.1 fdisk
fdisk提供了一个交互式接口来管理分区,它有许多子命令,分别用于不同的管理功能;所有的操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘上;
常用子命令:
n:创建新分区
d:删除已有分区
t:修改分区类型
l:查看所有已经ID
w:保存并退出
q:不保存并退出
m:查看帮助信息
p:显示现有分区信息
注意:在已经分区并且已经挂载其中某个分区的磁盘设备上创建的新分区,内核可能在创建完成后无法直接识别;
查看:cat /proc/partitions
通知内核强制重读磁盘分区表:
CentOS 5:partprobe [device]
CentOS 6,7:partx, kpartx
partx -a [device]
kpartx -af [device]
3.2 创建文件系统
格式化:低级格式化(分区之前进行,划分磁道)、高级格式化(分区之后对分区进行,创建文件系统)。
格式化后分为元数据区,数据区
元数据区:文件元数据:inode (index node)分为:大小、权限、属主属组、时间戳、数据块指针
符号链接文件:存储数据指针的空间当中存储的是真实文件的访问路径;
设备文件:存储数据指针的空间当中存储的是设备号(major, minor);
bitmap index:位图索引
3.2.1 文件系统类型
- VFS: Virtual File System
- 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, glusterfs
3.2.2 文件系统管理工具
- 创建文件系统的工具
mkfs
mkfs.ext2, mkfs.ext3, mkfs.ext4, mkfs.xfs, mkfs.vfat,
mkfs : make file system
-t FSTYPE [DEVICE]
mkfs -t FSTYPE = mkfs.FSTYPE
mkfs -t ext4 = mkfs.ext4
注意U盘格式化为fat32,windows不能识别Linux的文件系统
# mkfs -t vfat
- 检测及修复文件系统的工具
fsck
fsck.ext2, fsck.ext3, ...
- 查看其属性的工具
dumpe2fs, tune2fs
- 调整文件系统特性:
tune2fs
- Linux内核是模块化的,这些模块支持动态装载和卸载;
文件系统可能会被直接打包进内核,也可以被编译成内核模块;
# lsmod
- 文件系统的日志功能:Journal
ext2: 无日志功能
ext3, ext4, xfs: 日志文件系统
- mke2fs工具的使用
-t {ext2|ext3|ext4}:指定文件系统
-b {1024|2048|4096}:指定块大小
-L LABEL: 打标
-j: 相当于 -t ext3
-i #: 每多少字节给创建一个inode,此字节数不应该少小块大小
-N #: 直接指定可用的inode数;
-m #: 指定预留空间占整个分区空间的百分比;默认为5;
-O:指定分区特性
- blkid: 查看指定块设备的信息
[root@backup ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="TEST" UUID="73809466-9b96-4926-a4b5-0b3fa5a4156f" TYPE="ext4"
- e2label:查看或设定卷标
e2label DEVICE [LABEL]直接跟卷就是显示,直接跟卷以及卷名就是重新设置卷标
[root@backup ~]# e2label /dev/sdb1
TEST
[root@backup ~]#
[root@backup ~]# e2label /dev/sdb1 test
[root@backup ~]# e2label /dev/sdb1
test
[root@backup ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="test" UUID="73809466-9b96-4926-a4b5-0b3fa5a4156f" TYPE="ext4"
- 查看超级块信息:
# tune2fs -l DEVICE
# dumpe2fs -h DEVICE
[root@backup ~]# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: test
Last mounted on: <not available>
- 修改分区属性:tune2fs
块大小无法调整;
-j: ext2 --> ext3
-L LABEL:修改卷标
-m #: 修改预留空间百分比;
-O [^]FEATURE: 启用指定特性,特性前加^,表示关闭此种特性
-o [^]mount-options: 开启或关闭指定的挂载选项
[root@backup ~]# tune2fs -j -L'new' /dev/sdb1
tune2fs 1.42.9 (28-Dec-2013)
The filesystem already has a journal.
- fsck与e2fsck
因进程意外中止或系统崩溃等情况导入写入操作非正常中止时,可能会导致文件损坏;此时,应该修复文件系统:注意:离线修复,可能会丢数据
fsck:
-t fstype
-a: 自动修复错误
-r: 交互式修复错误
e2fsck: 专用于修改ext系列文件系统
-y: 对问题自动回答为yes
-f: 强制进行检测
[root@backup ~]# fsck -t ext4 -a /dev/sdb1
fsck from util-linux 2.23.2
new: clean, 11/327680 files, 79756/2621440 blocks
[root@backup ~]#
[root@backup ~]# e2fsck -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
new: 11/327680 files (0.0% non-contiguous), 79756/2621440 blocks
- 交换分区:swap
缓解物理内存资源不够用的情况;
创建交换分区:
mkswap [-L LABEL] DEVICE
[root@backup ~]# mkswap -L'swap1' /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 5242876 KiB
LABEL=swap1, UUID=3b83fccf-1a56-4809-8a76-6bfcb8c27b66
[root@backup ~]# blkid /dev/sdb1
/dev/sdb1: LABEL="swap1" UUID="3b83fccf-1a56-4809-8a76-6bfcb8c27b66" TYPE="swap"
[root@backup ~]# swapon -L swap1
[root@backup ~]# free
total used free shared buff/cache available
Mem: 237008 60608 5820 4968 170580 136408
Swap: 6085624 0 6085624
3.2.3 文件系统挂载
默认只有管理员才有权限,将额外的分区与根文件系统上的某目录建立关联关系的过程;目录中的原有文件会被隐藏
挂载点:另一个文件系统的访问入口
挂载格式与选项为:
mount [option]... [-t fstype] [-o option] 设备 挂载点
挂载点:
1、事先存在;
2、使用空闲目录;
常用的挂载选项:
-t fstype:指定文件系统类型
-r: readonly, 只读挂载
-w: read and write, 读写挂载
-L LABEL:以卷标方式指定设备, mount -L MYDATA 挂载点
-U UUID: 以UUID的方式指定设备,mount UUID='uuid' 挂载点, mount -U uuid 挂载点
-a: 自动挂载所有(/etc/fstab文件中定义的)的支持自动挂载设备
-n: 挂载时,不更新/etc/mtab文件
-o option:
async:异步I/O,数据写操作先于内存完成,而后再根据某种策略同步至持久设备中
sync: 同步I/O,
atime/noatime: 文件和目录被访问时是更新最近一次的访问时间戳
auto/noauto:设备是否支持mount的-a选项自动挂载
diratime/nodiratime: 目录被访问时是更新最近一次的访问时间戳
dev/nodev: 是否支持在此设备上使用设备;
exec/noexec: 是否允许执行此设备上的二进制程序文件
suid/nosuid: 是否支持在此设备的文件上使用suid
remount: 重新挂载,通常用于不卸载的情况下重新指定挂载选项
ro: 只读
rw: 读写
user/nouser: 是否允许普通挂载此文件设备
acl: 在此设备是支持使用facl,默认不支持;
例如:以指定挂载后支持acl为例:
方法1:
[root@backup ~]# mke2fs -L'data' -b 1024 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Warning: specified blocksize 1024 is less than device
[root@backup ~]# mount -o acl /dev/sdb2 /mnt
方法2:
为设备设定默认挂载选项
[root@backup ~]# tune2fs -o acl /dev/sdb2
[root@backup ~]# mount /dev/sdb2 /mnt
3.2.4 管理与卸载文件系统
- 查看所有已经挂载的设备:
# mount
# cat /proc/mounts
# cat /etc/mtab
- 卸载文件系统
umount MOUNT_POINT
如果发现有进程再访问挂载点的时候必须先清除访问进程然后再卸载
查看哪些进程正在访问挂载的设备:
fuser -v 挂载点
终止这些进程:
fuser -km 挂载点
强制卸载挂载点
umount -lf 挂载点
3.2.5 交换分区
- 创建交换分区
[root@backup ~]# mkswap -L'swap1' /dev/sdb1
- free: 查看内存及交换分区的使用信息
- 启用某交换分区设备,-v是详细信息,-a 是所有
[root@backup ~]# swapon -L swap1
- 禁用某交换分区设备,-v是详细信息,-a 是所有
[root@backup ~]# swapoff -v -L swap1
swapoff /dev/sdb1
3.2.6 自动挂载的设备的配置文件:/etc/fstab
/etc/fstab 6个字段说明
- 挂载的设备,可以是设备文件,LABEL,UUID
- 挂载点:
- 文件系统类型
- 挂载选项,挂载选项可以有多个,彼此间使用逗号分隔;
- 转储频率:0:从不转储,1: 每天转储,2: 每隔一天
- 自检次序:
0:不自检,额外创建的文件系统都无须自动自检
1:首先自检,通常只有根文件系统需要首先自检
2:次级自检,不同的设备可以使用同一个自检次序