2017 08-07 磁盘管理(2)

一.分区工具fdisk

(1)分区工具fdisk工具的使用:

fdisk -l -u :查看分区表,该命令是在磁盘上看分区的情况。在内存看的方法是"lsblk,ls /dev/sdb ,cat /proc/partition"(在centos6中,查看的分区是以柱面为单位,而centos7中是以扇区为单位)
image.png
image.png

'可以通过fdisk -l -u 进行单位的转换'
fdisk /dev/sdb:管理分区列表
子命令的学习

p 分区列表 
image.png

t 更改分区类型 
image.png
image.png

n 创建新分区 
image.png

d 删除分区——将不要的分区删除,在执行时,选择删除具体的分区号
image.png

v 校验分区 
u 转换单位 ——centos6与centos7中的以扇区为单位和柱面为单位进行转换
w 保存并退出 ——保存后,磁盘的内容会同步到内存中
image.png

q 不保存并退出

注意:在执行w和d命令的时候,会发生内存和磁盘之间不同步的情况,因此每次分区后,都要确认是否同步

image.png

在centos6中无法用上图中的方法同步磁盘与内存的内容,但是可以通过执行"partx -a /dev/sda(增加磁盘分区)实现同步或是partx -d --nr 6-8(删除磁盘分区第6到8行)"
(2)查看内核是否已经识别新的分区:
cat /proc/partations 或者是 lsblk
centos6通知内核重新读取硬盘分区表(partprobe无法再centos6中实现)
新增分区用
partx -a /dev/DEVICE
kpartx -a /dev/DEVICE
-f: force 删除分区用
partx -d --nr M-N /dev/DEVICE 
CentOS 5,7: 使用partprobe partprobe [/dev/DEVICE]

二.文件系统

(1)文件系统的概念
文件系统是操作系统用于明确存储设备或分区上的文件的方 法和数据结构;即在存储设备上组织文件的方法。操作系统 中负责管理和存储文件信息的软件结构称为文件管理系统, 简称文件系统
从系统角度来看,文件系统是对文件存储设备的空间进行组 织和分配,负责文件存储并对存入的文件进行保护和检索的 系统。具体地说,它负责为用户建立文件,存入、读出、修 改、转储文件,控制文件的存取,安全控制,日志,压缩, 加密等
(2)文件系统类型
Linux文件系统:ext2(Extended file system), ext3(相对于ext2,增加了日志功能)
日志的功能:在实际运行中磁盘会将数据输送到内存中,在内存中多次修改数据后,将数据统一写入到磁盘中,也就是延迟写入磁盘中,提高工作效率。但是缺陷是内存在服务器断电后无法存储数据,那么之前修改的内容就会全部消失。所以增加日志的功能来解决上述问题——日志位于磁盘中,内存修改的数据会写入日志中,日志将数据存储后,等到磁盘不繁忙的时候将数据(所有修改后的数据)写入到磁盘中,减少位寻址的时间,提高工作效率。
ext4——能够支持更大的文件
xfs(SGI)——应用在centos7上
btrf(Oracle)
reiserfs
jfs( AIX)——应用于IBM小型机上
swap——实现虚拟内存 ,属于特殊分区
光盘:iso9660 
Windows:FAT32, exFAT,NTFS 
Unix: FFS(fast), UFS(unix), JFS2 
网络文件系统:NFS, CIFS 
集群文件系统:GFS2, OCFS2(oracle) 
分布式文件系统: fastdfs,ceph, moosefs, mogilefs, glusterfs, Lustre 
RAW:未经处理或者未经格式化产生的文件系统
(3)文件系统分类
根据其是否支持"journal"功能:
日志型文件系统: ext3, ext4, xfs, ...
非日志型文件系统: ext2, vfat 
文件系统的组成部分:
内核中的模块:ext4, xfs, vfat
用户空间的管理工具:
mkfs.ext4, mkfs.xfs,mkfs.vfat


image.png

image.png

Linux的虚拟文件系统:
VFS 
查前支持的文件系统:cat /proc/filesystems
(4)创建文件系统
mkfs命令: 
mkfs.FS_TYPE /dev/DEVICE


image.png
image.png
image.png

ext4 xfs btrfs vfat 
mkfs -t FS_TYPE /dev/DEVICE
image.png
mke2fs /dev/sdc2
image.png
image.png

-L 'LABEL': 设定卷标
(5)创建ext文件系统
mke2fs:ext系列文件系统专用管理工具 ——不支持xfs
-t {ext2|ext3|ext4} ——指定文件系统类型
-b {1024|2048|4096} ——创建块的大小
image.png

-L 'LABEL'——卷标名
image.png

-j: 相当于 -t ext3
mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
"mkfs.ext4 -i 4096 -b 1024 /dev/sdc5:为一个inode创建4096字节的空间,而一个数据块为1024个字节,也就是说一个inode(文件)对应四个数据块。如果inode的字节空间小于或等于数据块,会使节点号空间大,而数据块变小,而导致节点号的浪费"
-N #:指定分区中创建多少个inode——mkfs.ext4 -N 25600 /dev/sdc5
-I 一个inode记录占用的磁盘空间大小,128---4096——最小为128个字节,最大为4096个字节,修改占用磁盘空间的数值为128的倍数
-m #: 默认5%,为管理人员预留空间占总空间的百分比 ——根据分区空间大小而定,如果一个分区很大,可以将默认值改为小于%5的值"tune2fs -m 1 /dev/sdc5"
image.png
image.png

-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性
(6)文件系统标签
指向设备的另一种方法 
与设备无关 
blkid:块设备属性信息查看 ——blkid /dev/sdc5
image.png

不支持用blkid查看文件,若果想看,可以通过手动修改的方式实现——

dd if=/dev/zero of=/app/partfile bs=1M count=500,然后通过blkid /app/partfile可以查看属性
image.png

blkid [OPTION]... [DEVICE]
-U UUID: 根据指定的UUID来查找对应的设备
image.png

小练习:查看/etc/fstab 下的 /app 的uuid对应的设备名
image.png

image.png

-L LABEL:根据指定的LABEL来查找对应的设备 
image.png

e2label:管理ext系列文件系统的LABEL e2label DEVICE [LABEL] ——通过该命令可以设置相同的卷标名,操作系统不会检查,因此更加明确配置文件的时候最好写uuid
例: e2lable /dev/sda2(设备名) /mnt/sdc5(卷标名)——给sda2设定了卷标名
查看卷标名: e2lable 设备名
findfs :查找分区
findfs [options] LABEL=<label>
image.png

findfs [options] UUID=<uuid>
image.png

(7)tune2fs
tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息;super block
image.png
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用——创建/dev/sdc2的文件系统类型为ext2(无日志),通过tune2fs -O has_ journal /dev/sdc2来增加日志功能
image.png

–O ^has_journal——通过该命令取消日志功能
-o: 调整文件系统的默认挂载选项——例如新增加的磁盘没有acl权限,通过tune2fs -o acl +设备名可以增添acl
–o ^acl——取消acl
-U UUID: 修改UUID号
image.png

dumpe2fs: 块分组管理,32768块——dumpe2fs /dev/sdc5
image.png

-h:查看超级块信息,不显示分组信息=tune2fs -l /dev/sdc5
(8)文件系统检测和修复
常发生于死机或者非正常关机之后  挂载为文件系统标记为“no clean” 
注意:一定不要在挂载状态下修复 
fsck: File System Check fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同
e2fsck:ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复

三.挂载mount

挂载:将额外文件系统与根文件系统某现存的目录建立起关联 关系,进而使得此目录做为其它文件访问入口的行为 
卸载:为解除此关联关系的过程 ——取消挂载时,可以写设备名,也可以写挂载点,取消挂载时,如果挂载在使用,也不能取消,只有离开挂载的时候才能取消
把设备关联挂载点:mount Point mount 

挂载点下原有文件在挂载完成后会被临时隐藏
image.png

挂载点目录一般为空
**注意:多个设备不能挂载在同一个挂载点上,但是一个设备可以挂载在多个挂载点上
挂载方法:mount DEVICE(设备名) MOUNT_POINT(挂载点) 

mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
image.png

mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要挂载的设备;
(1) 设备文件:例如/dev/sda5
(2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
(3) UUID, -U 'UUID':例如 -U '0c50523c-43f145e7-85c0-a126711d406e'
(4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
dir:挂载点
事先存在;建议使用空目录

进程正在使用中的设备无法被卸载

  • 一些常用的选项命令
    -t vsftype:指定要挂载的设备上的文件系统类型 ——一般不用t选项,应为mount本身就具备文件系统类型
    -r: readonly,只读挂载 
    -w: read and write, 读写挂载 
    -n: 不更新/etc/mtab,mount不可见——可以通过cat /proc/mounts的方式来查看 
    -a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab 文件中,且挂载选项中有auto功能) 
    -L 'LABEL': 以卷标指定挂载设备 
    -U 'UUID': 以UUID指定要挂载的设备 

    -B, --bind: 绑定目录到另一个目录上
    image.png

    查看内核追踪到的已挂载的所有设备 cat /proc/mounts
    -o options:(挂载文件系统的选项),多个选项使用逗号分隔
    async:异步模式
    sync:同步模式,内存更改时,同时写磁盘
    atime/noatime:包含目录和文件
    diratime/nodiratime:目录的访问时间戳
    auto/noauto:是否支持自动挂载,是否支持-a选项
    exec/noexec:是否支持将文件系统上运行应用程序

    dev/nodev:是否支持在此文件系统上使用设备文件
    suid/nosuid:是否支持suid和sgid权限——在挂载过程中,有时候如果加上suid权限,那么普通用户会继承权限,然后对文件进行修改甚至是破坏。因此必要时应该加上nosuid来保护文件
    remount:重新挂载——mount -o remount rw /mnt/sdc5重新挂载恢复读写功能
    ro:只读
    rw:读写
    user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
    acl:启用此文件系统上的acl功能——在centos6中,后分的分区没有acl功能。通过mount -o remount ,acl /dev/sdc2 给该分区增加acl权限。取消: mount -o remount,noacl /dev/scd2

    loop: 使用loop设备——正常情况下,无法将文件挂载在挂载点(目录)
    image.png
    因此使用loop功能来实现——
    image.png

    但是此方法会消耗loop设备,消耗完后,无法在使用该方法
    image.png

    当loop设备消耗完后,可以通过mknod的方式来创建新的loop设备
    image.png

    在centos7中自动生成loop设备,并且会根据用户的需求来创建loop设备
    在centos6中,以后可以事先就准备好多个loop设备来实现文件挂载到目录上——vim /boot/grub/gurb.conf
    image.png

    defaults:相当于rw, nosuid, dev, exec, auto, nouser, async——这些都是默认功能

四.卸载命令

(1)看挂载情况 findmnt MOUNT_POINT|device
findmnt /dev/sdc2 echo $?或是 findmnt /mnt echo $


image.png

查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT 
终止所有在正访问指定的文件系统的进程 fuser -km MOUNT_POINT 
卸载 umount DEVICE umount MOUNT_POINT
(2)挂载点和/etc/fstab
配置文件系统体系 
被mount、fsck和其它程序使用 
系统重启时保留文件系统体系 
可以在设备栏使用文件系统卷标 
使用mount -a 命令挂载/etc/fstab中的所有文件系统
(3)文件挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统 
要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs 
挂载点 
文件系统类型 
挂载选项:defaults 
转储频率:0:不做备份 1:每天转储 2:每隔一天转储 
自检次序: 0:不自检 1:首先自检;一般只有rootfs才用1


image.png

五.处理交换文件和分区

交换分区的概念:交换分区是系统RAM的补充——与内存交换数据,当内存空间不够的时候,可以代替内存来临时使用(相当于模拟内存,但不能持续使用,运行速度较慢)。用户不能直接在swap里存数据
基本设置包括:
1 创建交换分区或者文件 2 使用mkswap写入特殊签名 3 在/etc/fstab文件中添加适当的条目 4 使用swapon -a 激活交换空间

(1)挂载交换分区

启用:swapon swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区;
-p PRIORITY:指定优先级
/etc/fstab:pri=value 
禁用:swapoff [OPTION]... [DEVICE]

  • 当给虚拟机增加1G内存的时候,根据计算规则swap分区相应也也增加一倍,但是swap内存大小是无法改变的,因此只能通过增加swap的数量来到目的
    实现步骤:1.创建一个新的分区,fdisk /dev/sdb1, 分两个G的空间,文件类型为swap
    [root@centos7 ~]#mkswap /dev/sdb1——用swap的方式格式化
    Setting up swapspace version 1, size = 2097148 KiB
    no label, UUID=375d5eb3-eccc-40a6-bd10-ef608f5661c2
    [root@centos7 ~]#blkid——查看是否生效
    /dev/sda1: UUID="6557897d-1496-4f78-ae5e-752fc7144b88" TYPE="xfs"
    /dev/sda2: UUID="x33BZA-DiXm-yA9v-Yo76-cOya-0AQ3-ZqC1eX" TYPE="LVM2_member"
    /dev/sr0: UUID="2016-12-05-13-52-39-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
    /dev/mapper/cl-root: UUID="a90515e3-934d-44bc-9af5-7c944741e496" TYPE="xfs"
    /dev/mapper/cl-swap: UUID="90c6521e-424f-4135-a851-1ae0f65cd661" TYPE="swap"
    /dev/mapper/cl-app: UUID="a8322ecd-0d0a-4f80-9899-141c3873f4b8" TYPE="xfs"
    /dev/sdb1: UUID="375d5eb3-eccc-40a6-bd10-ef608f5661c2" TYPE="swap"


    image.png
    image.png

    2.写入/ect/fstab


    image.png

    3.保存后,通过swapon -a 来激活交换空间,此时swap的内存成功增加一倍
    image.png

    (2)SWAP的优先级
    可以指定swap分区0到32767的优先级,值越大优先级越高 
    如果用户没有指定,那么核心会自动给swap指定一个优先级 ,这个优先级从-1开始,每加入一个新的没有用户指定优先 级的swap,会给这个优先级减一 
    先添加的swap的缺省优先级比较高,除非用户自己指定一个 优先级,而用户指定的优先级(是正数)永远高于核心缺省指定 的优先级(是负数) 
    优化性能:分布存放,高性能磁盘存放
  • 例:对于上述刚刚增加的swap分区,我们就可以来看看其优先级大小
    image.png

    对此我们可以认为指定优先级的大小
    image.png
    image.png

六.移动介质

(1)初步介绍
挂载意味着使外来的文件系统看起来如同是主目录树的一部分 
注意事项:访问前、介质必须被挂载  摘除时,介质必须被卸载 
按照默认设置,非根用户只能挂载某些设备(光盘、DVD、软 盘、USB等等) 
挂载点通常在/media 或/mnt下
(2)使用光盘
在图形环境下自动启动挂载/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
例1:将光盘做成iso镜像文件
cp /dev/sr0 /app/centos6.iso ,确认复制成功后,将该镜像文件传到windows中(通过sz命令),然后在centos7中挂载该镜像文件,打开centos7,这样就安装系统了
例2:将目录打包成一个文件,两张光盘合成为一个光盘
步骤:
1.先创建一个目录,mkdir /centos6
cp -r /media/CentOS_6.9_Final/ /app/centos6
2.然后取消当前挂载,挂载另一个镜像光盘,再执行
cp -r /media/CentOS_6.9_Final/Packages/*.rpm /app/centos6/Packages/
mkisofs -r -o CentOS-6.9-x86_64-Everything.iso /app/centos6I(打包镜像为一个iso)
3.但是目前这个iso镜像只能当yum源,不能启动,所以要导入一个mkdvdiso.sh脚本,倒入脚本后,重新挂载会原来的的镜像光盘。此时安装yum install isomd5sum
给脚本加执行权限
4../mkdvdiso.sh /app/centos6/(源) /app/CentOS-6.9-x86_64-Everything.iso(目标)
此时该iso源具备启动的功能。
5.将该源文件通过xshell导出。

推荐阅读更多精彩内容