Linux磁盘和文件系统管理
基本磁盘管理
检测并确认新硬盘 fdisk
查看或管理磁盘分区
# fdisk /dev/sdb d delete a partition ***** 删除分区 g create a new empty GPT partition table 创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区) l list known partition types 列出可以分区的类型??? m print this menu 输出帮助菜单 n add a new partition ***** 新建增加一个分区 p print the partition table ***** 输出分区的结果信息 q quit without saving changes 不保存退出 t change a partition s system id 改变分区的系统id==改变分区类型(LVM 增加swap分区大小) u change display/entry units 改变分区的方式 是否按照扇区进行划分 w write table to disk and exit ***** 将分区的信息写入分区表并退出==保存分区信息并退出
创建文件系统 mkfs
创建文件系统(格式化)
mkfs -t 文件系统类型 分区设备
[root@localhost ~]# ls /sbin/mkfs* /sbin/mkfs /sbin/mkfs.cramfs /sbin/mkfs.ext3 /sbin/mkfs.minix /sbin/mkfs.btrfs /sbin/mkfs.ext2 /sbin/mkfs.ext4 /sbin/mkfs.xfs [root@localhost ~]# mkfs -t xfs /dev/sdb1
创建文件系统 mkswap
创建交换文件系统
格式:mkswap 分区设备
[root@localhost ~]# mkswap /dev/sdb5 Setting up swapspace version 1, size = 2097148 KiB no label, UUID=9673550e-9dfd-4fa8-8683-255680230f10 [root@localhost ~]# cat /proc/meminfo | grep SwapTotal SwapTotal: 8257532 kB [root@localhost ~]# swapon /dev/sdb5 [root@localhost ~]# cat /proc/meminfo | grep SwapTotal SwapTotal: 10354680 kB [root@localhost ~]# swapoff /dev/sdb5
挂载文件系统 mount
挂载文件系统、ISO镜像到指定文件夹
格式:
-
mount [ -t 类型 ] 存储设备 挂载点目录
(类型为文件系统类型)
-
mount -o loop ISO镜像文件 挂载点目录
卸载文件系统 umount
卸载已挂载的文件系统
格式:
-
umount 存储设备位置 (umont /dev/sda1)
-
umount 挂载点目录 (umont /tmp)
具体案例
让系统可以加载识别分区文件 # partprobe /dev/sdb 强制重新格式化 # mkfs -t xfs -f /dev/sdb1 将主分区和2G的逻辑分区转换为xfs文件系统并挂载 # mkfs -t xfs /dev/sdb1 # mkfs -t xfs /dev/sdb6 # mkdir /data /file # mount /dev/sdb1 /data # mount /dev/sdb6 /file 将1G的逻辑分区格式化为swap分区并使用 # mkswap /sdb5 # swapon /sdb5 //启用该swap分区 # swapoff /sdb5 //关闭该swap分区 # cat /proc/meminfo //查询虚拟内存变化
设置文件系统的自动挂载
/etc/fstab 配置文件
包含需要开机后自动挂载的文件系统记录
设置开机自动挂载这 三个分区: vim /etc/fstab /dev/sdb1 /data xfs defaults 0 0 /dev/sdb5 swap swap defaults 0 0 /dev/sdb6 /file xfs defaults 0 0 挂载的设备、挂载点、挂载方式/类型、挂载参数、dump备份功能是否启用,0表示不启用,1表示启用、系统启动检查优先级(0/1/2),0表示不进行检查;1表示高优先,一般为根目录;2表示低优先级,为其他目录。 # mount -a //刷新自动挂载配置文件 # mount //查看挂载情况
查看磁盘使用情况 df
格式:df [选项] [文件]
[root@localhost ~]# df –hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/VolGroup-Lv_root ext4 6.7G 4.1G 2.3G 65% / /dev/sda1 ext4 99M 11M 83M 12% /boot tmpfs tmpfs 252M 0 252M 0% /dev/sdb1 ext4 19G 173M 18G 1%
动态磁盘管理
Logical Volume Manager,逻辑卷管理
动态调整磁盘容量,从而提高磁盘管理的灵活性
需要注意:/boot 分区用于存放引导文件,不能基于 LVM 创建
LVM 机制的基本概念
-
PV(物理卷):可以由一个物理磁盘划分出多个物理卷。
-
VG(卷组):由多个物理卷组成,新增的物理卷可以直接加入已合并好的卷组。
-
LV(逻辑卷):有一个卷组进行划分。
主要命令
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan 扫描 | pvscan | vgscan | lvscan |
Create 建立 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | vgextend | lvextend | |
Reduce 减少 | vgreduce | lvreduce |
具体说明:
划分磁盘顺序: PV(物理卷)------VG(卷组)-------LV(逻辑卷)-----格式化为xfs/swap文件系统,---挂载使用 PV使用命令: #pvscan [磁盘路径] //查看物理卷,跟路径查看单个磁盘,不跟路径查看所有 #pvcreate /dev/sdb1 /dev/sdc1 //将磁盘转换为物理卷 #pvdisplay [磁盘路径] //查看物理卷详细信息,跟路径查看单个磁盘,不跟路径查看所有 #pvremove /dev/sdb1 //删除此物理卷,还原至普通分区 VG使用命令: #vgscan //查看已建立的卷组 #vgcreate GP1 /dev/sdb1 /dev/sdc1 //将物理卷sdb1、sdc1合成为卷组GP1 #vgdisplay GP1 //查看卷组GP1详细信息 #vgremove GP1 //删除卷组GP1 #vgextend GP1 /dev/sdc1 //将sdc1扩展到GP1卷组中 LV使用命令: (-l指定逻辑卷大小,-n指定逻辑卷名字) #lvscan //查看已建立的逻辑卷 #lvcreate -L 10G -n data1 GP1 //将GP1卷组中拿出10G用于创建data1逻辑卷 # lvcreate -l 100%VG -n data GP1 //将VG所有容量都用于data逻辑卷 #lvextend -L +10G /dev/GP1/data1 //将data1逻辑卷容量加10G # lvextend -r -l 100%VG /dev/GP/data //将VG剩余容量全部加给data逻辑卷,且不需要再执行"xfs_growfs"命令 #lvreduce -L -5G /dev/GP1/data1 //将data1逻辑卷减去5G容量 #lvdisplay /dev/GP1/data1 //查看逻辑卷详细信息 #lvremove /dev/GP/data1 //将逻辑卷data进行删除 # xfs_growfs /dev/GP/data //将扩展的容量加载到目前使用的分区中,与"lvextend -r"作用一样
磁盘配额
实现磁盘限额的条件
-
需要 Linux 内核支持
-
安装 xfsprogs 与quota 软件包
Linux 磁盘限额的特点
-
作用范围:针对指定的文件系统(分区)
-
限制对象:用户帐号、组帐号
-
限制类型:磁盘容量(默认单位为 KB),文件数量
限制方法
-
软限制
-
硬限制
磁盘配额管理步骤:
-
以支持配额功能的方式挂载文件系统
-
编辑用户和组账号的配额设置
-
验证磁盘配额功能
-
查看磁盘配额使用情况
启用磁盘配额支持:添加 usrquota、grpquota 挂载参数
CentOS 7操作系统磁盘配额: # rpm -q xfsprogs //确认配额工具已安装 xfsprogs-4.5.0-8.el7.x86_64 # umount /abc //卸载之前的挂载 # mount -o usrquota,grpquota /dev/GP/data /abc //用户、组以支持磁盘配额方式挂载。 # mount //可以查看到挂载点已支持磁盘配额, /dev/mapper/GP-data on /abc type xfs (rw,relatime,attr2,inode64,usrquota,grpquota) 若要实现开机自动挂载并实现支持磁盘配额功能: # vim /etc/fstab /dev/GP/data /abc xfs defaults,usrquota,grpquota 0 0 针对张三用户配置磁盘配额限制: # useradd zhangsan # xfs_quota -x -c 'limit -u bsoft=10M bhard=20M isoft=5 ihard=10 zhangsan' /abc xfs_quota //磁盘配额关键命令 -x //专家模式,表示可以使用所有管理命令 -c //直接调用相关命令进行配置,而不进入交互式界面 limit //单引号内的命令为设置具体的磁盘配额参数 -u //表示为用户设置配额,-g为组 bsoft //磁盘容量软限制 bhard //磁盘容量硬限制 isoft //文件数量软限制 ihard //文件数量硬限制 0表示无限制 查看刚刚定义的磁盘容量配额: # xfs_quota -c 'quota -uv zhangsan' /abc Disk quotas for User zhangsan (1000) Filesystem Blocks Quota Limit Warn/Time Mounted on /dev/mapper/GP-data 0 10240 20480 00 [--------] /abc 查看文件数量配额的方法为: # xfs_quota -c 'quota -i -uv zhangsan' /abc Disk quotas for User zhangsan (1000) Filesystem Files Quota Limit Warn/Time Mounted on /dev/mapper/GP-data 0 5 10 00 [--------] /abc 验证磁盘配额限制效果: # chmod 777 /abc //给文件夹授权,方便zhangsan用户写入数据 # su zhangsan //切换为zhangsan用户验证 $ cd /abc $ touch 1 2 3 4 5 6 7 8 9 10 11 //连续创建11个文件,第11个失败 touch: 无法创建"11": 超出磁盘限额 $ ls 1 10 2 3 4 5 6 7 8 9 //只有10个 $ rm -rf /abc/* 验证磁盘容量限制: $ dd if=/dev/zero of=/abc/a.txt bs=1M count=15 //先创建15M,由于限制20M,所以不会报错 $ dd if=/dev/zero of=/abc/b.txt bs=1M count=10 //再创建10M,由于之前已有15M,因此会报错,且只能再写入5M数据 dd: 写入"/abc/b.txt" 出错: 超出磁盘限额 记录了6+0 的读入 记录了5+0 的写出 5242880字节(5.2 MB)已复制,0.00458746 秒,1.1 GB/秒 $ ll //查看文件容量时,也只有20M,并不是25M 总用量 20480 -rw-rw-r-- 1 zhangsan zhangsan 15728640 7月 13 20:56 a.txt -rw-rw-r-- 1 zhangsan zhangsan 5242880 7月 13 20:57 b.txt # xfs_quota -x -c 'report -abi' //查询系统中所有分区的磁盘配额情况,b为容量,i为文件数量