交换分区wasp
swap文件系统:
linux上的交换分区必须使用独立的文件系统;
其文件系统的system ID必须为82
创建swap设备,文件系统,使用mkswap命令
创建步骤:
1.创建交换分区或者文件
2.使用mkswap写入特殊签名(可以理解为格式化创建swap文件系统,命令也是类似文件系统创建的命令)
3.在/etc/fstab文件文件中添加适当的条目
4.使用swapon -a 激活交换空间
设定除根文件系统以外的其他文件系统能够开机时自动挂载:/etc/fstab
每行定义一个要挂载的文件系统及其相关属性:
6个字段:
1.要挂载的设备:
设备文件,例如:/dev/sd*
LABEL
UUID
伪文件系统,如sysfs….
2.挂载点
swap类型的设备的挂载点为swap
3.文件系统类型
4.挂载选项
default:使用默认挂载选项
如果要同时指明多个挂载选项。彼此以逗号“,”分开
default,acl,noatime,noexec….
5.转储次序
0:从不备份
1:每天备份
2:隔一天备份(两天备份一次)
6自检次序
0:不自检
1:首先自检(优先),通常只能是根文件系统可以
2:次级自检
交换分区启用:swapon
-a:激活所有的交换分区
-p priority:指定优先级
/etc/fstab:pri=value
禁用:swapoff
swap的优先级
用户可以给某个swap 指定一个0 到32767 的优先级
如果用户没有指定,那么核心会自动给swap 指定一个优先级,这个优先级从-1 开始,每加入一个新的没有用户
指定优先级的swap ,会给这个优先级减一。
先添加的swap 的缺省优先级比较高,除非用户自己指定一个优先级,而用户指定的优先级( 是正数) 永远高于核心
缺省指定的优先级( 是负数)。
优化性能:分布存放,高性能磁盘存放
df命令:
-l:仅显示本地文件的相关信息
-h:humen-readable
-i:显示inode使用状态
-T:文件系统类型
-P:以posix兼容的格式输出
-H:以1000为单位
du命令:显示文件大小
-s:显示目录下所有文件大小之和
-h:humen-readable
移动介质
挂载意味着使外来的文件系统看起来如同是主目录树的一部分
访问前,介质必须被挂载
摘除时,介质必须被卸载
按照默认设备,费根用户只能挂载某些设备(光盘,DVD,软盘,USB等等)
挂载点通常在/media或者/mnt
光盘设备文件:
IDE:/dev/hdc
SATA:/dev/sr0
符号链接:
/dev/cdrom
/dev/cdrw
/dev/dvd
/dev/dvdrw
挂载和卸载命令
mount -r /dev/cdrom /media/cdrom
umount /dev/cdrom
eject命令卸载或者弹出磁盘
创建ISO文
cp /dev/cdrom /root/centos.iso
mkisofs -r -o /roo/etc.iso /etc
刻录光盘
wodim -v -eject centos.iso
dd命令:convert and copy a file
用法:dd if=/path/from/src of=/path/to/dest
bs=# block size ,复制单元大小
count=#,复制多少个bs
of=file 写到所命名的文件而不是到标准输出
if=file 从所命名文件读取而不是从标准输入
bs=size 指定块大小(既是是ibs 也是obs)
ibs=size 一次读size 个byte
obs=size 一次写size 个byte
cbs=size 一次转化size 个byte
skip=blocks 从开头忽略blocks 个ibs 大小的块
seek=blocks 从开头忽略blocks 个obs 大小的块
count=n 只拷贝n 个记录
conv=conversion[,conversion…] 用指定的参数转换文件。
转换参数:
ascii:换 转换 EBCDIC 为 为 ASCII
ebcdic:换 转换 ASCII 为 为 EBCDIC
block:转换为长度为 cbs 的记录,不足部分用空格填充。
unblock:替代cbs 长度的每一行尾的空格为新行
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:把每个输入块填充到ibs 个字节,不足部分用空(NUL)
磁盘拷贝:
dd if=/dev/sda of=/dev/sdb
备份MBR
dd if=/dev/sda of=/tem/mbr.bak bs=512 count=1
将/dev/sda的MBR拷贝到/dev/sdg中,因为扩展分区中的MBR独立,
所以结果是指将主分区的MBR的信息拷贝过去了,逻辑分区的没有
dd if=/dev/sda of=/dev/sdg bs=512 count=1
破坏MBR中的bootloader
dd if=/dev/zero of=/dev/sda bs=256 count=1
破坏MBR
dd if=/dev/zero of=/dev/sda bs=512 count=1
连个特殊设备:
/dev/null:数据黑洞
/dev/zero:吐零机
有一个大与2K 的二进制文件fileA。 。 现在想从第64 个字节位置
开始读取,需要读取的大小是128Byts 。又有fileB, 想把上
面读取到的128Bytes 写到第32 个字节开始的位置,替换
128Bytes ,请问如何实现?
dd if=/dev/zero of=file1 bs=2k count echo {1..100}|tr -d " ">>file2 dd if=file1 of=file2 bs=1 count=128 skip=63 seek=31 conv=notrunc
备份:
dd -if=/dev/sda of=/devsdb
将本地的/dev/sda整盘备份到/dev/sdy
dd if=/dev/sda if=/path/to/image
将/dev/sda全部数据备份到指定路径的image文件
dd if=/dev/sda|gzip >/path/to/image.gz
备份/dev/sda全盘数据,并利用gzip工具进行压缩,保存到指定路径
恢复:
dd if=/path/to/image of=/dev/sda
将备份文件恢复到指定盘
gzigzp -dc /path/to/image.gz |dd of=/dev/sda
将压缩的备份文件恢复到指定盘
拷贝内存资料到磁盘
dd if=/dev/mem of=/root/mem.bin bs=1024
将内存里的数据拷贝到root目录下的mem.bin文件
从光盘拷贝iso镜像
dd if=/dev/cdrom of=/root/cd.iso
拷贝光盘数据到root 文件夹下,并保存为cd.iso
销毁磁盘数据
dd if=/dev/urandom of=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,
/dev/sda1 将无法挂载,创建和拷贝操作无法执行。
测试系统最佳的block size
dd if=/dev/zero of=file1 bs=1024 count=1000000 dd if=/dev/zero of=file1 bs=2048 count=500000 dd if=/dev/zero of=file1 bs=4096 count=250000 dd if=/dev/zero of=file1 bs=8192 count=125000
以结果来block=4096上,读写数据速度最快,为最佳block size
测试磁盘的速写速度
dd if=file of=/dev/null dd if=file bs=64k |dd of=/dev/null dd if=/dev/zero of=file1 bs=1024 count=1000000
读入速度:85.3MB/s 左右 写入速度:70MB/s左右
修复硬盘
dd if=/dev/sda of=/dev/sda
当硬盘较长时间(比如1 ,2 年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可
能导致I/O 错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死
回生。且这个过程是安全,高效的
练习:
1 、创建一个2G 的文件系统,块大小为2048byte, , 预留1%可用空间, 文件系统ext4 ,卷标为TEST ,要求此分区开机后自
动挂载至/testdir 目录,且默认有acl 挂载选项
第一步:
创建一个2G的分区
fdisk /dev/sdb1
第二步:
格式化分区,创建文件系统,使用如下选项
[root@localhost ~]# tune2fs -l /dev/sdb1 tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: test ======>卷标test Last mounted on: <not available> Filesystem UUID: bd915a87-493a-415b-8d2f-8cedaab84792 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 131072 Block count: 1048576 Reserved block count: 10485 ==================>预留大小1% Free blocks: 994651 Free inodes: 131061 First block: 0 Block size: 2048 ================>块大小为2048k Fragment size: 2048 Group descriptor size: 64 Reserved GDT blocks: 512 Blocks per group: 16384 Fragments per group: 16384 Inodes per group: 2048 Inode blocks per group: 256 Flex block group size: 16 Filesystem created: Mon Aug 29 21:17:12 2016 Last mount time: n/a Last write time: Mon Aug 29 21:17:12 2016 Mount count: 0 Maximum mount count: -1 Last checked: Mon Aug 29 21:17:12 2016 Check interval: 0 (<none>) Lifetime writes: 65 MB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: 516971e6-940d-4dc4-b883-377fe5a4a811 Journal backup: inode blocks
第三步:
mkdir /testdir vim /etc/fstab
mount -a
完成!!
2 、写一个脚本,完成如下功能:
(1) 列出当前系统识别到的所有 磁盘设备
(2) 如磁盘数量为1 ,则显示其空间 使用信息,否则,则显示最后一个磁盘上的空间 使用信息
1 #!/bin/bash 2 #qiuwei 3 #写一个脚本,完成如下功能: 4 #1. 列出当前系统识别到的所有 磁盘设备 5 #2. 如磁盘数量为1 ,则显示其空间 使用信息,否则,则显示最后一个磁盘上的空间 使用信息 6 7 8 #:用grep找出lsblk中所有的磁盘设备,然后显示最后一行的磁盘的空间使用信息 9 #因为不管有多少块磁盘,只要显示最后一块就可以得出结果了 10 lsblk|grep "^sd[a-z]"|tail -n 1
高级文件系统管理
1.设定文件系统配额
在生产环境中,为了限制普通用户创建文件的大小和数量,我们一般会对普通用户的家目录设定文件系统配额
特点:
1.在内核中执行
2.以文件系统为单位启用
3.对不同组或者用户的策略不同
4.根据块或者节点进行限制
执行软件限制(soft limit)====>文件总大小或者总数量超过软限制,会出现警告
硬限制(hard limit)====>文件总大小或者总数量到达硬限制,就不能在增加文件大小或者创建新文件了,
我们现在来实际操作下
第一步:
一般用户的文件会保存至家目录,使用我们首先要将一个单独分区挂载至/home下,但是如果直接挂载到/home下的话,/home里面
的文件就没了,所有我们应该先创建分区,格式化创建文件系统,然后随便挂载在一个挂载点/mnt,然后将/home下的数据迁移至此挂载点,
然后在将此设备挂载到/home下,卸载挂载点/mnt,这样单独分区挂载到了/home,
a.创建文件系统
b.挂载到/mnt下,然后复制文件至/mnt下
c.将/dev/sdb2挂载之/home下,在/etc/fstab里面改,特性:usrquota,grpquota
将之前的挂载点/mnt卸载掉
第二步:
创建配额数据库
quotacheck -cug /home命令
如果创建失败,使用如下命令关闭selinux,在使用quotacheck -cug /home命令
setenforce 0
第三步:
启用数据库
quotaon -p /home 查看是否启用数据库
quotaon /home 启用数据库
第四步:
配置配额项
edquota pingxiong
edquota -p wang mage
setquota tom 100000 150000 0 0 /home
第五步:
测试
quota pingxiong
repquota /home
软配额是100M,超过报警,且无法超过200M
完成!!!!
RAID:Redundant Arrays of Inexpensive Disks 廉价冗余磁盘阵列
Redundant Arrays of Independent Disks 独立冗余磁盘阵列
多个磁盘合成一个“陈列”来提高更好的性能,冗余,或者两者都提供
提高IO能力:
磁盘并行读写
提高耐用性:
磁盘冗余来实现
RAID级别:多块磁盘组织在一起的工作方式有所不同
RAID实现方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
安装OS前在BIOS里配置
Software RAID:
级别:level
RAID-0:0,条带卷,strip
RAID-1:1,镜像卷,mirror;
RAID-2:2,
RAID-3:3,
RAID-4:4,
RAID-5:5,
RAID-6:6
RAID-10
RAID-01
RAID-0:文件平分之每个磁盘上
读写能力提升;将文件数据并行至各个磁盘中,多通道同时进行,IO能力必然增强
可用空间:N*min(s1,s2…)最小磁盘的大小*磁盘数
无容错能力:任何一块磁盘坏掉了,整个RAID数据都会坏掉
最少磁盘数:+2
RAID-1:完整文件都要存在每个硬盘上
读性能提升,写性能略有下降
可用空间:1*min(s1,s2…..)
有冗余能力
最少磁盘数: 2+
RAID-4:多块数据盘异或运算值,存于专用校验盘
1101 0110 1011
存1 存2 校验
假如磁盘1坏掉,可以通过磁盘2和校验盘取异或值,反响推导出磁盘的数据
此级别的RAID缺点是校验盘损坏评论太高
RAID-5:
读,写性能提升
可用空间:(N-1)*min(s1,s2…..)最小磁盘的大小*磁盘数(取最小)
有容错能力:最多只能坏一个磁盘
最少磁盘数:3+
在RAID-4的基础上提升,各个磁盘轮流充当校验盘,此级别RAID一般生产环境中最常用
RAID-6: 在RAID5的基础上,再增加一块校验盘
读、写性能提升
可用空间:(N-2)*min(S1,S2,…)
有容错能力:允许最多2 块磁盘损坏
最少磁盘数:4, 4+
…….
RAID10:
读写性能提升
可以空间:N*min(s1,s2…..)最小磁盘的大小*磁盘数(取最小)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4+
RAID01:和上面的RAID10组合相反
RAID-10在容错能力上比RAID-01要强,RAID-01每组镜像最多只能坏一块,但是如上只有两组
假如磁盘1坏了,raid4.5.6任何一个坏了,整个RAID01数据就都损坏了,因为上面两个RAID-0的总的数据虽然一样,
但是并不等于磁盘1和磁盘4数据一样,数据平分也不是都要分成一模一样的
同理,RAID-50就是先做RAID-5,在做RAID-0
RAID-7:可以理解为一个独立存储计算机,自身带有操作系统的管理工具,可以独立运行,理论上性能最高的RAID模式
JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用
可用空间:sum(S1,S2,…)
常用级别:RAID-0, RAID-1, RAID-5, RAID-10,RAID-50, JBOD
软RAID
mdadm :为软RAID 提供管理界面
为空余磁盘添加冗余
结合内核中的md(multi devices)
RAID 设备可命名为/dev/md0 、/dev/md1 、/dev/md2、/dev/md3 等等
实际创建一个软RAID-5
第一步:
在磁盘上创建五个分区,做四个磁盘和一个空闲盘,其system ID必须为fd
第二步:
创建RAID设备
mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/{sdc3,sdd1,sde1,sdf1,sdg1}
mdadm -D /dev/md0
cat /proc/mdstat
第三步
格式化磁盘阵列RAID-5,创建文件系统
第四步:
挂载
[root@localhost ~]# mkdir /mnt/raid [root@localhost ~]# vim /etc/fstab [root@localhost ~]# mount -a
第五步:
生成配置文件
mdadm -S /dev/md0 停止raid mdadm -A /dev/md0 启动raid
备注:停止和启动一定要在卸载的时候进行!!!!!!!!!!!!
第六部:测试
mdadm /dev/md0 -f /dev/sdf1 模拟损坏
mdadm /dev/md0 -r /dev/sdf1 删除成员
mdadm /dev/md0 -a /dev/sdf1 增加
mdadm -G /dev/md0 -n 6 -a /dev/sdd4 增加成员
[root@localhost ~]# mdadm /dev/md0 -f /dev/sdf1 mdadm: set /dev/sdf1 faulty in /dev/md0 [root@localhost ~]# mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Tue Aug 30 10:43:48 2016 Raid Level : raid5 Array Size : 9431040 (8.99 GiB 9.66 GB) Used Dev Size : 3143680 (3.00 GiB 3.22 GB) Raid Devices : 4 Total Devices : 5 Persistence : Superblock is persistent Update Time : Tue Aug 30 11:20:35 2016 State : clean, degraded, recovering Active Devices : 3 Working Devices : 4 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Rebuild Status : 77% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : 1127eda8:86f13176:195b31c4:19f44971 Events : 32 Number Major Minor RaidDevice State 0 8 35 0 active sync /dev/sdc3 1 8 49 1 active sync /dev/sdd1 2 8 65 2 active sync /dev/sde1 4 8 97 3 spare rebuilding /dev/sdg1 5 8 81 - faulty /dev/sdf1 =====> /dev/sdf1损坏,之前的空闲盘补上去了
其他选项不详细做了
第七步:当不使用RAID时,删除RAID
umount /mnt/raid ====>卸载
mdadm -S /dev/md0 停止raid ===>停止RAID
rm -f /etc/mdadm.conf ===>删除配置文件
vi /etc/fstab ===>删除开机启动的挂载设置
fdisk /dev/sda =====>删除分区
mdadm –zero-superblock /dev/sdd1 ===>
[root@localhost ~]# umount /dev/md0 [root@localhost ~]# mdadm -S /dev/md0 mdadm: stopped /dev/md0 [root@localhost ~]# rm -rf /etc/mdadm.conf [root@localhost ~]# vim /etc/fstab
完成!!
工具:mdadm 模式化的工具
命令语法格式:mdadm [mode ] <raiddevice>[options]<component-decixes>
支持的RAID级别:LINEAR,RAID0,RAID1,RAID4,RAID5,RAID6,RAID10
模式:
创建 :-C
装配 :-A
监控 :-F
管理:-f,-r,-a
<raiddevice> :/dev/md#
<component-decixes>:任意块设备
-C:创建模式
-n #:使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a{yes|no}:自动创建目标RAID设备的设备文件
-c chunk_size:指明块大小
-x #:指明空闲盘的个数 ============》此项对不支持冗余能力的RAID无效,因为空闲盘的作用是在别的磁盘坏掉时,临时顶上去的,
-D:显示RAID的详细信息
mdadm -D /dev/dm#
管理模式:
-f:标记指定磁盘为损坏
-a:添加磁盘
-r:移除磁盘
观察md的状态
cat /proc/mdstat
停止md设备
mdadm -S /dev/md#
watch 命令:
-n# :刷新间隔,单位是秒
watch -n# 'command'
练习
1.创建一个可用空间为1G 的RAID1 设备,要求其chunk 大小为128k ,文件系统为ext4 ,有一个空闲
盘,开机可自动挂载至/backup 目录
第一步:创建两个1G的分区,
第二步:创建RAID1
mdadm -C /dev/md1 -a yes -c 128 -l 1 -n 2 /dev/sd{f1,g1}
第三步:
格式化,创建文件系统,挂载
[root@localhost ~]# mke2fs -t ext4 /dev/md1 [root@localhost ~]# vim /etc/fstab [root@localhost ~]# mount -a [root@localhost ~]# mdadm -D /dev/md1
2.创建由三块硬盘组成的可用空间为2G 的RAID5设备,要求其chunk 大小为256k ,文件系统为ext4
,开机可自动挂载至/mydata
备注:此题上卖弄的实例已经做过了,限于篇幅,这里就不在做了,参考上面案例
逻辑卷管理器(LVM)
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
将设备指定为物理卷
用一个或者多个物理卷来创建一个卷组
物理卷是用固定大小的物理区域(Physical Extent,PE )来定义的
在物理卷上创建的逻辑卷是由物理区域(PE )组成
可以在逻辑卷上创建文件系统
lVM: Logical Volume Manager; Version2
dm:device mapper ;将一个或多个底层块设备组织成一个逻辑设备的模块
设备名: /dev/dm-#
软链接:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vo10-root
/dev/VG_NAME/LV_NAME
/dev/vo10/root
pv管理工具:
pvs:简要pv信息显示
pvdispaly:显示pv的详细信息
pvcreate /dev/device:创建pv
pvremove:删除pv
备注:分区的system ID必须为fd,才能创建成pv
vg管理工具
vgdisplay:显示vg的详细信息
vgcreate:创建
-s :指明块大小(默认4M)
vgextend:增加pv
vgreduce :移除pv
要先pvremove,在vgreduce
vgremove:删除卷组
lv管理工具
lvmconf:设置逻辑卷配置文件
lvs:查看
lvdisplay
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
扩展逻辑卷:
lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
有+表示增加了#大小
没有表示增加到#大小
1.扩展物理边界
lvextend -L 15G /dev/vg0/lv0
2.修改逻辑边界
resize2fs /dev/mapper/vg0-lv0 ==》不需要重新挂载,直接就把空间加上去了
缩减逻辑卷
-
umount /dev/mapper/vg0-lv0 先卸载文件系统
2.e2fick -f /dev/mapper/vg0-lv0 文件系统强制检测和修复
3.resize2fs /dev/mapper/vg0-lv0 #[mMgGtT] 给定大小,指明缩减至多大 ==>逻辑边界
4.lvreduce -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME ===>物理边界
有-表示缩减了#大小
没有表示缩减到#大小
5.mount /dev/mapper/vg0-lv0 重新挂载
如果不想使用了,删除步骤如下:
从逻辑卷lv,到卷组vg,再到pv,全部删除过程
umount /dev/vg0/lv0 卸载
lvremove /dev/vg0/lv0 删除lv
vgremove /dev/vg0 删除vg
pvremove /dev/sdd5 删除pv
以上为上次上课的全部内容,如有错误,请帮忙留言指出,谢谢!!
原创文章,作者:qiuwei,如若转载,请注明出处:http://www.178linux.com/41735
评论列表(1条)
文章对当天所学内容进行了详细的总结,同时通过自己的练习,对所学命令进行了联系,但是如果能思维上进行优化会使人印象更为深刻哦。