以下操作均在Windows虚拟机下完成
实验前,先在 Windows虚拟机里添加一块5G的硬盘
在 Linux虚拟机里添加一块5G的硬盘
virt-manager
1. 设备识别
设备接入系统后都是以文件的形式存在
设备 | 文件名称 |
---|---|
SATA/SAS/USB | /dev/sda,/dev/sdb |
IDE | /dev/hd0,/dev/hd1 |
VIRTIO-BLOCK | /dev/vda,/dev/vdb |
M2(SSD) | /dev/nvme0,/dev/nvme1 |
SD/MMC/EMMC(卡) | /dev/mmcblk0,/dev/mmcblk1 |
光驱 | /dev/cdrom,/dev/sr0,/dev/sr1 |
- 查看设备
df //查看正在被系统挂载的设备的情况
df -h //2的n次方计算大小,带单位
df -H //10的n次方计算大小,带单位
lsblk //查看设备使用情况(被谁使用)
blkid //查看设备的id以及设备管理方式
cat /proc/partitions //查看系统识别设备
fdisk -l //最真实的系统硬盘信息
2. 设备的挂载
在系统中有设备id的设备是可以被系统使用的
- 卸载设备
当识别卸载后,/boot将无法读取/dev/vda1中的数据
umount /dev/sda1
ls /boot
卸载时,提示该设备忙碌busy,是因为它正在被程序使用
进入目录/mnt,占用设备
cd /mnt
umount /mnt
查看设备上运行的程序有哪些
fuser -vm /mnt/
解决程序的占用问题(相当于kill -9 xxx)
fuser -kvm /mnt/
umount /mnt
- 挂载设备
只读挂载
mount -o rw /dev/sda1 /mnt
mount //查看系统当中所有设备的挂载信息
重新挂载/mnt上的设备/dev/sda1,并激活只读参数:
转换挂载参数由读写到只读
(直接写挂载点,不要写设备)
mount -o remount,ro /mnt
mount | tail -n 1
3. 分区
分区方式 | 位数 | 分区表大小 | 分区个数 | 分区大小 |
---|---|---|---|---|
legacy(MBR) | 32 | 64byte | 主分区4个 所有分区16个 | 2.2TB |
UEFI(GPI) | 64 | 128byte | windows 128 | 8ZiB |
MBR分区方式
- 主分区:主分区表记录分区的信息并可以直接使用的分区
- 扩展分区:主分区表记录的分区,不可以直接使用,只是逻辑分区容器
- 逻辑分区:扩展分区之上划分的分区
GPT
- 没有主分区,逻辑分区,扩展分区
- 很多个分区记录在efi分区表
- efi可以数据备份
新的硬盘,没有任何分区方式
3.1 交互模式下分区
分区方法
fdisk /dev/sdb
命令 | 说明 |
---|---|
d | 删除 |
l | 列出所有分区类型 |
n | 新建 |
p | 显示分区表 |
t | 更改分区类型 |
w | 保存更改 |
q | 退出 |
g | 设定分区方式为GPT |
o | 设定分区方式为MBR |
MBR分区方式命令 | 说明 |
---|---|
p | 新建主分区 |
e | 新建扩展分区 |
MBR分区方式
fdisk /dev/sdb
注意!当4个主分区出现,必须要把一个主分区转换成扩展分区
划分扩展分区,一定要把剩余的所有容量划分给它
这样才可以划分很多个逻辑分区
q:没有将数据同步到硬盘
GPT分区方式
同步分区表到系统
udevadm settle
删除不要的分区
前提是确保设备在系统中未被使用,否则系统很有可能崩溃
虽然删除了分区,但是分区标识还存在
删除分区标识
dd if=/dev/zero of=/dev/sdb bs=1M count =1
fdisk -l
3.2 非交互式分区
1)设定分区方式
parted /dev/sdb mklabel msdos //MBR的方式
parted /dev/sdb mklabel gpt //GPT的方式
2)划分分区
parted /dev/sdb mkpart primary 1 100 //第一个分区,起始是1,划分到100
parted /dev/sdb mkpart primary 101 200 //第二个分区
parted /dev/sdb mkpart primary 201 300
3)删除分区
删除的时候,不可以先删1再删3
parted /dev/sdb rm 3 //删除第3个分区
4)划分扩展分区
parted /dev/sdb mkpart extended
4. 文件系统
文件系统 | 最大卷 | 最大单个文件 | 最大文件个数 | 代表系统 |
---|---|---|---|---|
FAT16 | 2GB | 4GB | 65536 | DOS Win95 |
FAT32 | 4GB | 8TB | 4177920 | Win98 |
NTFS | 256TB | 16TB | 4294967295 | Win2000之后 |
EXT3 | 32TB | 2TB | 32000个子目录 | RHEL5 |
EXT4 | 1EB | 16TB | 无限子目录 | RHEL6 |
1)格式化
mkfs.xfs /dev/sdb1 -f
2)临时挂载
mount /dev/sdb1 /mnt
df
3)永久挂载系统
编辑设备挂载策略文件
vim /etc/fstab
写入:
/dev/sdb1 /mnt xfs defaults 0 0 // 0 0 不备份,不检测
立即生效
mount -a
测试,开机后自动挂载
reboot
4)设备挂载策略文件写错时,系统会无法启动
测试:
reboot
系统无法启动
5. 磁盘配额
未进行磁盘配额时,用户yao会直接将磁盘全部用完
df -h
chmod 1777 /mnt
su - yao
dd if=/dev/zero of=/mnt/yaofile bs=1M count=100
logout
df
ll /mnt
临时设定磁盘配额
设定每个用户能往磁盘存放的大小数据
rm -fr * //清空磁盘
umount /mnt
mount -o usrquota /dev/sdb1 /mnt
mount | tail -n 1
edquota -u yao //默认单位是k,修改成5M
su - yao
dd if=/dev/zero of=/mnt/yaofile bs=1M count=40
dd if=/dev/zero of=/mnt/yaofile bs=1M count=45
dd if=/dev/zero of=/mnt/yaofile bs=1M count=50
dd if=/dev/zero of=/mnt/yaofile bs=1M count=51 //报错
永久设定磁盘配额
vim /etc/fstab
reboot
关闭磁盘配额
[root@westoslinux Desktop]# vim /etc/fstab //删除之前写入的自动挂载
[root@westoslinux Desktop]# quotaoff -uv /dev/vdb1 //关闭配额
Disabling user quota enforcement on /dev/vdb1
/dev/vdb1: user quotas turned off
6. swap分区
- 作用
程序在运行时,所有数据都在RAM中;
当RAM使用量超过了限额,
为了使系统更加稳定。
我们在硬盘上划分出了一部分空间来作为内存缓冲区swap;
当内存使用超过限额,内核会把内存中闲置的数据存放在swap中;
当程序需要swap分区中的数据时,内核会将swap分区中的数据再交还给内存进程处理
- swap分区大小建议
内存大小 | swap分区建议大小 | 当允许HIBERNATE |
---|---|---|
2GiB以下 | 内存2倍 | 内存3倍 |
2-8GiB | 等于物理内存 | 物理内存2倍 |
8-64GiB | 4GiB | 1.5倍物理内存 |
64GiB | 4GiB | HIBERNATE不开 |
- swap管理
swapon -s //查看swap分区信息
- 创建swap分区
fdisk /dev/vdb
udevadm settle //同步分区表到系统
mkswap /dev/vdb1 //格式化设备位swap格式
swapon -a //临时激活
vim /etc/fstab //永久激活
- 删除swap分区
vim /etc/fstab //删除之前写入的命令
swapon -s //查看
swapoff /dev/vdb1 //关闭swap分区
swapon -s
fdisk /dev/vdb //删除/dev/vdb1
7. find
文件查找很重要
find命令(默认递归)
准备工作
touch file{1..5}
chmod 000 file*
chown yao file1
chgrp westos file2
chown westos.yao file3
chmod ug+w file1
chmodugo+w file2
chmod uo+w file2
chmod 666 file4
chmod 755 file3
chmod 700 file5
watch -n 1 ls -l /mnt
- 以名字方式查找
find /mnt -name file1
find /mnt -name file*
- 以目录查找
find /mnt -type d(/mnt也被查找)
- 设定查找深度
find /mnt -mindepth 1 -type(最小深度,一层不找,最浅的深度是目录的里面)
- 以用户查找
find /mnt -user root
- 以组查找
find /mnt -group westos
用户是westos 组是yao a:and与关系
find /mnt -user westos -a -group yao
- 或者关系
find /mnt -user root -o -group yao
-not 用户不是root,组是yao(反向选择)
find /mnt -not -user root -o -group yao
-cmin
touch 改一下时间(+:超过1min,-:在1分钟内)
find /mnt -cmin -1(c:change表示在一分钟以内被改过的时间)
-size大小
dd(截取) if=/dev/zero of=/mnt/file1 bs=1M count=10
find /mnt -size 20M (等于20M)
-20 (小于20M)
+20M
权限
rw-------(只有2个权限)
rw-r–r--(4个权限)
644:4个权限
find /mnt -perm 222 (并且关系,精确关系,企业7之前是+)
find /mnt -perm /222(满足一个条件即可)
-222(ugo都要打开w权限,-与关系)
-exec(处理find命令查找出来的结果)
find /mnt -perm -002 -exec rm -fr {} ;({}表示find查找出来的结果,\是为了转译“;”)