Linux--磁盘管理
Posted 0715mmmm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux--磁盘管理相关的知识,希望对你有一定的参考价值。
现在学习到了磁盘管理,在这个小模块里学习到磁盘分区的相关命令,以及磁盘分区后的操作也就是格式化。
在详细介绍相关内容之前,还需要了解一些简单的知识,比如在Linux里面,设备分为块设备和字符设备,网络设备。
我们已经简单了解过字符设备,常见的便是鼠标、键盘、显示屏等,此处不做讨论。
而网络设备后期再介绍,此处不做讨论。
块设备以块为单位,是存储设备。
那么今天我们就先介绍块设备的磁盘管理。
一.设备识别
在虚拟机里,我们先添加新的虚拟硬盘。图形化界面不多解释。
在添加过后,使用 lsblk 命令进行查看,但是终端上并没有显示新加入的硬盘。
这是因为 lsblk 命令是查看列出所有可用块设备的信息,查看内核分区的,需要进行更新,才能识别新的硬盘。
可通过 echo ‘- - -‘ > /sys/class/scsi_host/host2/scan 给予一个更新的信号,但是需要注意的是,此处 host2 不一定对,
有些时候根据虚拟机会变化,但是如果centos 7 为 host2, 那么 centos 6 便是 host0。
然后再 lsblk 查看 设备即可。以上为磁盘识别。
[[email protected](mei) ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 34G 0 part
├─centos-root 253:0 0 10G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-app 253:2 0 20G 0 lvm /app
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
[[email protected](mei) ~]# echo ‘- - -‘ > /sys/class/scsi_host/host2/scan
[[email protected](mei) ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 34G 0 part
├─centos-root 253:0 0 10G 0 lvm /
├─centos-swap 253:1 0 4G 0 lvm [SWAP]
└─centos-app 253:2 0 20G 0 lvm /app
sdb 8:16 0 1G 0 disk
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
二.设备分区
1.分区方式
这里我们需要先介绍关于磁盘分区的两种方式——MBR、GPT
MBR: 使用32位表示扇区数,分区不超过2T ,按柱面进行分区,4个主分区;3主分区+1扩展(N个逻辑分区)。
GPT:支持128个分区,使用64位,使用128位UUID(Universally Unique Identifier) 表示磁盘和分区 GPT分区表自动备份在头和尾 两份,
并有CRC校验位 ,UEFI (统一扩展固件接口)硬件支持GPT,使操作系统启动。
2.分区命令
1.fdisk 创建MBR分区
fdisk -l [device...] :查看分区
fdisk /dev/sdb :管理分区
子命令: – p 分区列表
– t 更改分区类型
– n 创建新分区
– d 删除分区
– v 校验分区
– u 转换单位
– w 保存并退出
– q 不保存并退出
2. gdisk 创建GPT分区
gdisk /dev/sdb :创建类fdisk 的GPT分区
由于一般而言多是MBR分区方式,且gdisk命令类似于fdisk ,这里不多于介绍,重点在于fdisk。
3. parted 高级分区操作
用法:parted [选项]... [设备 [命令 [参数]...]...]
parted /dev/sdb mklabel gpt|msdos
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200 (默认M)
parted /dev/sdb rm 1 parted –l
但是需要注意的是,parted的操作都是实时生效的,小心使用。
4.查看分区
当我们已经进行完分区的步骤后,我们需要查看内核是否已经识别新的分区,来确定命令使用正确。
cat /proc/partations
但是由于centos版本不同,查看方法也不尽然一样:
如果非操作系统所在硬盘,在 fdisk 命令中选项 w 后,直接同步内核分区;
如果是操作系统所在硬盘,则选项 w 后,自动同步不成功,需要手动同步,方法如下:
centos5及之前,centos7及之后 :partprobe [/dev/DEVICE]
centos6 : partx -a /dev/sdX 增加时的同步
partx -d --nr N /dev/sdX 删除时同步
三.创建文件系统
首先我们先简要介绍在Linux中需要进行相关学习的文件系统:ext2(Extended file system), ext3, ext4, xfs(SGI), swap 。
其实Linux中文件不止这些,但是这里仅介绍目前学习的文件系统。
至于网络文件系统、集群文件系统、 分布式文件系统等以后学习中再介绍。
1.文件系统简介
文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文 件的方法。
而在操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统
根据其是否支持"journal"功能,分为日志型文件系统,如ext3, ext4, xfs, ... 以及日志型文件系统: ext2, vfat
文件系统的组成部分:内核中的模块:ext4, xfs, vfat
用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat
Linux的虚拟文件系统:VFS
可以通过命令来查看当前支持的文件系统:cat /proc/filesystems
2.文件系统管理工具
(1).创建文件系统:
mkfs命令: mkfs.FS_TYPE /dev/DEVICE:FS_TYPE为 ext4、 xfs、 btrfs、 vfat
mkfs -t FS_TYPE /dev/DEVICE -L ‘LABEL‘:-L表示设定卷标
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[,...]:启用指定特性 相对地 ^FEATURE :关闭指定特性
四.标记文件系统
(1) blkid:blkid [OPTION]... [DEVICE] 块设备属性信息查看 ,
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
[[email protected](mei) ~]# blkid
/dev/sda1: UUID="15b524ba-28e9-48d0-a8ab-0f61aa304fb2" TYPE="xfs"
/dev/sda2: UUID="TxVyb4-EBoy-iifx-pBH0-3jCm-MYon-xHaA39" TYPE="LVM2_member"
/dev/sr0: UUID="2018-05-07-12-53-47-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/mapper/centos-root: UUID="68ab2b89-f8e3-4bf0-9939-edc7a07aea03" TYPE="xfs"
/dev/mapper/centos-swap: UUID="74298968-491e-46cd-864c-f7e88034f14e" TYPE="swap"
/dev/mapper/centos-app: UUID="2fdcc7ea-7ceb-44d0-acca-fe091f68897d" TYPE="xfs"
(2)e2label: e2label DEVICE [LABEL] 管理ext系列文件系统的LABEL
当mkfs.ext4 -L 设置卷标后
[[email protected](mei) ~]# e2label /dev/sdb2 查看卷标
zhangsan
[[email protected](mei) ~]# e2label /dev/sdb2 lisi 修改卷标
(3) findfs : findfs [options] LABEL=<label> findfs [options] UUID=<uuid> 查找分区
[[email protected](mei) ~]# findfs LABEL=hello
/dev/sdb2
[[email protected](mei) ~]# findfs UUID=362d3fd5-0984-46ba-aaf4-b3f91989f88a
/dev/sdb1
(4) tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息,信息来源于超级块(superblock)
-L ‘LABEL‘:修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
–O ^has_journal :文件系统属性启用或禁用,
-o:调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
(5)dumpe2fs: 块分组管理,导出文件系统信息
-h:查看超级块信息,不显示分组信息
五.文件系统检测和修复
有些时候,电脑·会发生一些意外情况,比如外界的断电或者电脑死机,此时会导致文件系统异常关闭。
为了保护数据不丢失,我们需要进行检测和修复。
那么我们如何得知文件系统异常关闭了呢?
当重新打开系统时,使用 tune2fs -l /dev/sda1 查看信息,当挂载为文件系统标记为“no clean” ,说明上次异常关闭。
这时可以选择修复系统,但是要注意,一定不要在挂载状态下修复
所使用的命令如下:fsck: File System Check fsck.FS_TYPE fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误 FS_TYPE一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复
六. 挂载新的文件系统
使用新文件系统需要将额外文件系统与根文件系统某现存的目录建立起关联关系,进而使得此目录做为其它文件访问入口
挂载点下原有文件在挂载完成后会被临时隐藏,而挂载点目录一般为空目录。
接下来介绍相关命令:
mount
-r 只读
-w 读写 默认
-n 挂载后不更新/etc/mtab,导致mount和df命令无法查询到挂载信息,但可查看/proc/mounts
-a 读取/etc/fstab 挂载当前尚未挂载的文件系统,已经挂载的文件系统不会重新挂载,也不会更新挂载选项。
-L ‘LABEL‘: 以卷标指定挂载设备
-U ‘UUID‘: 以UUID指定要挂载的设备
-B 目录挂载目录
文件挂载文件 df 不可见 可以用df -a查看
-o 指定挂载选项
async (default) 异步模式 sync 同步模式,立即同步
atime (default) 文件被访问时,更新atime noatime 文件被访问时,不更新atime
diratime (default) 目录被访问时,更新atime nodiratime 目录被访问时,不更新atime
auto (default) 写入/etc/fstab后,被mount -a自动挂载
noauto 写入/etc/fstab后,不被mount -a自动挂载
exec (default) 该目录下有rx权限的文件可以被执行
noexec 该目录下所有文件对所有用户包括root,都不可以被执行
dev (default) 该目录下设备文件可以被使用
nodev 该目录下的设备文件不可被使用
suid (default) 表示该目录下的suid,sgid权限生效
nosuid 表示该目录下的suid,sgid权限不生效
remount,xxx 不卸载的情况下,可直接更新挂载选项
rw (default)
ro
nouser(default) 写入/etc/fstab的项目不能让普通用户挂载/卸载
user 写入/etc/fstab的项目可以让普通用户挂载/卸载
acl (centos7 default) 该目录下的文件可以设置acl权限
noacl (centos6及之前 default) 该目录下的文件不可以设置acl权限
loop 挂载loop设备,如iso时,要指定
defaults rw, suid, dev, exec, auto, nouser, async,atime,diratime,acl(centos7)
如何查找挂载点下都有哪些设备或者 查找设备在哪个挂载点下:
findmnt MOUNT_POINT|device
lsof 挂载点,查看在指定挂载点上运行的程序,显示其进程号
kill 进程号 杀死指定进程
扩展swap
通过分区扩展 fdisk/parted/gdisk; partprobe
通过文件扩展 dd if=/dev/zero of=/app/swap.img bs=1M count=512
mkswap /dev/sdb5 创建swap(格式化为swap)
swapon /dev/sdb5 手工激活
-p 0-32767 指定优先级,数字越大,越优先
swapoff /dev/sdb5 手工关闭
swapon -a 激活所有在/etc/fstab中的swap
swapoff -a 关闭所有swap
/etc/fstab
UUID=44582fb3-67e4-4b28-b4d3-41fce6fb00d4 swap swap defaults,pri=1 0 0
UUID=6820fd47-271d-44ed-beed-6b3e628469cf swap swap defaults,pri=10 0 0
/app/swap.img swap swap defaults,pri=0 0 0
以上是关于Linux--磁盘管理的主要内容,如果未能解决你的问题,请参考以下文章