第三四周就业班作业

linux安全模型

3A:

  • authentication 认证,验证用户身份
  • authorization 鉴权,不同用户设置不同权限
  • accouting|audit 审计

文件权限

文件属性:
文件所有者属性:文件所属组属性:其他组属性

文件所有者修改

chown owner:group FILE
常用选项-R,用于递归修改指定路径下的所有文件或目录的所属组和所有者

修改文件所属组

chgrp GROUP file
常用选项-R,用于递归修改指定路径下的所有文件或目录的所属组

修改文件权限

chmod MODE FILE

格式 who opt permission
who:u,g,o,a
opt:+,-,=
permission:r,w,x

文件特殊权限

  • SUID:作用在所属者上,无论谁执行设置了SUID的程序,该程序的所属者始终为文件创建者
使用普通账号运行passwd命令,passwd进程的所有者为root,因为passwd程序文件设置了SUID位

[root@rocky87 ~]# ll `which passwd`
-rwsr-xr-x. 1 root root 33424 Apr 20  2022 /usr/bin/passwd

设置SUID的方法
chmod u+s FILE
  • SGID:作用在group上,如果设置在文件上,该文件执行为进程后,该进程的所属组为该文件的所属组;如果设置在目录上,那么该在该目录下创建的文件所属组与该目录一致
[root@rocky87 ~]# ll
total 20
-rwx--x--x. 1 root    root    1094 Mar 16 16:54 anaconda-ks.cfg
-rw-r--r--  1 root    root    7787 Apr 12 23:38 hellodb_innodb.sql
-rwxr-xr-x  1 root    root     266 Apr 17 13:53 mysql_backup.sh
drwxr-sr-x  2 shichao shichao    6 Apr 17 20:12 test
-rw-r--r--  1 root    root     965 Apr 11 07:13 tq
[root@rocky87 ~]# cd test/
[root@rocky87 test]# touch file
[root@rocky87 test]# ll
total 0
-rw-r--r-- 1 root shichao 0 Apr 17 20:12 file
[root@rocky87 test]# whoami
root
[root@rocky87 test]#

  • Sticky:作用在文件上,作用在other部分,设置了sticky位的文件只有文件所属有这或root才能删除

访问控制列表ACL

ACL实现比属主/属组/other更精细的文件权限控制
ACL生效顺序:所有者,自定义用户,所属组|自定义组,其他人
setfacl 设置ACL权限

#设置ACL权限
setfacl -m u:USER:PERM[,u:USER:PERM] file
#USER 针对账号设置文件访问属性
#PERM	使用r|w|x|-对文件属性设置,如r-x

[root@rocky87 ~]# ll
total 20
-rwx--x--x. 1 root    root    1094 Mar 16 16:54 anaconda-ks.cfg
-rw-r--r--  1 root    root    7787 Apr 12 23:38 hellodb_innodb.sql
-rwxr-xr-x  1 root    root     266 Apr 17 13:53 mysql_backup.sh
drwxrwxrwx  2 shichao shichao    6 Apr 17 20:28 test
-rw-r--r--  1 root    root     965 Apr 11 07:13 tq
[root@rocky87 ~]# setfacl -m u:yu:--- test
[root@rocky87 ~]#
[root@rocky87 ~]# ll
total 20
-rwx--x--x. 1 root    root    1094 Mar 16 16:54 anaconda-ks.cfg
-rw-r--r--  1 root    root    7787 Apr 12 23:38 hellodb_innodb.sql
-rwxr-xr-x  1 root    root     266 Apr 17 13:53 mysql_backup.sh
drwxrwxrwx+ 2 shichao shichao    6 Apr 17 20:28 test
-rw-r--r--  1 root    root     965 Apr 11 07:13 tq
[root@rocky87 ~]# su yu
[yu@rocky87 root]$ ll test
ls: cannot open directory 'test': Permission denied

[yu@rocky87 root]$ getfacl test
# file: test
# owner: shichao
# group: shichao
user::rwx
user:yu:---
group::rwx
mask::rwx
other::rwx



#取消ACL权限
setfacl -x u:USER:PERM file

getfacl 查看ACL权限
setfacl -b file 删除所有ACL权限

文本处理工具,文件查找工具,文本处理三剑客

cat

#显示隐藏字符
[root@localhost ~]# cat -A linux2
q$
a$
z$
[root@localhost ~]# cat -A windows.txt
q^M$
a^M$

[root@localhost ~]# file linux2 windows.txt
linux2:      ASCII text
windows.txt: ASCII text, with CRLF line terminators
[root@localhost ~]#

paste

用法:paste [选项]… [文件]…
-d, --delimiters=列表 改用指定列表里的字符替代制表分隔符
-s, --serial 不使用平行的行目输出模式,而是每个文件占用一行

[root@localhost ~]# cat alpha.log
a
b
c
d
e
f
g
h
[root@localhost ~]# paste -s alpha.log
a       b       c       d       e       f       g       h

sort

用法:sort [选项]… [文件]…
排序选项:
-n, --numeric-sort 根据字符串数值比较
-R, --random-sort 根据随机hash 排序
-r, --reverse 逆序输出排序结果
-t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换
-k, --key=KEYDEF sort via a key; KEYDEF gives location and type
-f, --ignore-case 忽略字母大小写
-g, --general-numeric-sort compare according to general numerical value
-M, --month-sort compare (unknown) < ‘JAN’ < … < ‘DEC’
-h, --human-numeric-sort 使用易读性数字(例如: 2K 1G)
-u, --unique 合并重复项(不相邻的也合并)

[root@localhost ~]# df -h | awk '{ print $2}'| tail -n +2| sort -h
182M
182M
893M
910M
910M
910M
1014M
17G

find

find [OPTION]… [查找路径] [查找条件] [处理动作]

查找路径:指定具体目标路径,默认为当前路径
查找条件:指定的查找标准,可以是文件名、大小、类型、权限等;默认找出指定路径下
的所有文件
处理动作:对符合条件的文件进行操作,默认输出至屏幕

find在使用通配符找文件的时候需要把字符串用引号包起来,否则会出现如下问题


[root@localhost ~]# find /etc/ -name *.conf  | head -n 4
/etc/resolv.conf
/etc/fonts/conf.d/62-google-crosextra-caladea-fontconfig.conf
/etc/fonts/conf.d/61-urw-fallback-backwards.conf
/etc/fonts/conf.d/69-gnu-free-serif.conf
[root@localhost ~]# touch a.conf
[root@localhost ~]# find /etc/ -name *.conf  | head -n 4
[root@localhost ~]#

#当前目录下的文件名匹配上了通配符会影响搜索


查找空文件或目录
-empty

[root@localhost home]# find /home/yu -type d -empty
/home/yu/.mozilla/extensions
/home/yu/.mozilla/plugins
/home/yu/.config/abrt
[root@localhost home]#


根据所属主和所属组查找
-user USERNAME		#查找属主为指定用户的文件
-group GROUPNAME	#查找属组为指定用户组的文件
-uid
-gid
-nouser						#查找无主文件
-nogroup					#查找无组文件

组合条件
-a			#与,默认多个条件是与的关系
-o			#或	
-not,!	#非

find /home/yu -type d -o -type f
find /home/yu \( -type d -o -type f \) #括号与相邻字符间要有空格

根据文件大小查找
-size [+|-] n UNIT #常用的单位:k,M,G,c(byte)
nUNIT:	#表示(n-1,n],如:6k 表示(5k,6k]
-nUNIT: #表示[0,n-1],如:-6k 表示[0k,5k]
+nUNIT:	#表示(n,∞),如:+6k 表示(6k,∞)


find -size 1024k
find -size 1M
两者是不一样的

根据时间戳查找
#以天为单位
-atime [+|-]n
-mtime
-ctime
n		#表示[n,n+1)
+n	#表示[n+1,∞)
-n	#表示[0,n)

#以分钟为单位
-amin
-mmin
-cmin


根据权限查找
-perm [/|-]MODE

MODE 	精确权限匹配
/MODE 任何一类u,g,o对应的权限中主要有一位匹配即可,是或的关系
-MODE 每一类必须都匹配,是与的关系
0 表示不关注

#严格匹配755权限的文件
find -perm 755 

#只要u,g,o之一有w权限则匹配
find -perm /222

#只有u,g,o都是w权限时才匹配
find -perm -222

#只要o有w权限就匹配
find -perm -002


处理动作
-print	默认动作,打印
-ls			等价对匹配的文件执行ls -dlsi命名
-delete	删除匹配的文件,慎用
-ok COMMAND {} \;	对匹配文件执行COMMAND命令,每次命令执行前都需用户交互式确认
-exec COMMAND {} \;	对匹配文件执行COMMAND命令

tar

用法: tar [选项…] [FILE]…

主操作模式:

-A, --catenate, --concatenate 追加 tar 文件至归档
-c, --create 创建一个新归档
-d, --diff, --compare 找出归档和文件系统的差异
–delete 从归档(非磁带!)中删除
-r, --append 追加文件至归档结尾
-t, --list 列出归档内容
–test-label 测试归档卷标并退出
-u, --update 仅追加比归档中副本更新的文件
-x, --extract, --get 从归档中解出文件

操作修饰符:

  --check-device         当创建增量归档时检查设备号(默认)

-g, --listed-incremental=FILE 处理新式的 GNU 格式的增量备份
-G, --incremental 处理老式的 GNU 格式的增量备份
–ignore-failed-read
当遇上不可读文件时不要以非零值退出
–level=NUMBER 所创建的增量列表归档的输出级别
-n, --seek 归档可检索
–no-check-device 当创建增量归档时不要检查设备号
–no-seek 归档不可检索
–occurrence[=NUMBER] 仅处理归档中每个文件的第 NUMBER
个事件;仅当与以下子命令 --delete,
–diff, --extract 或是 --list
中的一个联合使用时,此选项才有效。而且不管文件列表是以命令行形式给出或是通过
-T 选项指定的;NUMBER 值默认为 1
–sparse-version=MAJOR[.MINOR]
设置所用的离散格式版本(隐含
–sparse)
-S, --sparse 高效处理离散文件

重写控制:

-k, --keep-old-files don’t replace existing files when extracting,
treat them as errors
–keep-directory-symlink preserve existing symlinks to directories when
extracting
–keep-newer-files
不要替换比归档中副本更新的已存在的文件
–no-overwrite-dir 保留已存在目录的元数据
–overwrite 解压时重写存在的文件
–overwrite-dir 解压时重写已存在目录的元数据(默认)

  --recursive-unlink     解压目录之前先清除目录层次
  --remove-files         在添加文件至归档后删除它们
  --skip-old-files       don't replace existing files when extracting,
                         silently skip over them

-U, --unlink-first 在解压要重写的文件之前先删除它们
-W, --verify 在写入以后尝试校验归档

选择输出流:

  --ignore-command-error 忽略子进程的退出代码
  --no-ignore-command-error
                         将子进程的非零退出代码认为发生错误

-O, --to-stdout 解压文件至标准输出
–to-command=COMMAND
将解压的文件通过管道传送至另一个程序

操作文件属性:

  --atime-preserve[=METHOD]
                         在输出的文件上保留访问时间,要么通过在读取(默认
                         METHOD=‘replace’)后还原时间,要不就不要在第一次(METHOD=‘system’)设置时间
  --delay-directory-restore
                         直到解压结束才设置修改时间和所解目录的权限
  --group=名称         强制将 NAME
                         作为所添加的文件的组所有者
  --mode=CHANGES         强制将所添加的文件(符号)更改为权限
                         CHANGES
  --mtime=DATE-OR-FILE   从 DATE-OR-FILE 中为添加的文件设置
                         mtime

-m, --touch 不要解压文件的修改时间
–no-delay-directory-restore
取消 --delay-directory-restore 选项的效果
–no-same-owner
将文件解压为您所有(普通用户默认此项)
–no-same-permissions
从归档中解压权限时使用用户的掩码位(默认为普通用户服务)
–numeric-owner 总是以数字代表用户/组的名称
–owner=名称 强制将 NAME
作为所添加的文件的所有者
-p, --preserve-permissions, --same-permissions
解压文件权限信息(默认只为超级用户服务)
–preserve 与 -p 和 -s 一样
–same-owner
尝试解压时保持所有者关系一致(超级用户默认此项)
-s, --preserve-order, --same-order
member arguments are listed in the same order as
the files in the archive

Handling of extended file attributes:

  --acls                 Enable the POSIX ACLs support
  --no-acls              Disable the POSIX ACLs support
  --no-selinux           Disable the SELinux context support
  --no-xattrs            Disable extended attributes support
  --selinux              Enable the SELinux context support
  --xattrs               Enable extended attributes support
  --xattrs-exclude=MASK  specify the exclude pattern for xattr keys
  --xattrs-include=MASK  specify the include pattern for xattr keys

设备选择和切换:

-f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备
–force-local
即使归档文件存在副本还是把它认为是本地归档
-F, --info-script=名称, --new-volume-script=名称
在每卷磁带最后运行脚本(隐含 -M)
-L, --tape-length=NUMBER 写入 NUMBER × 1024 字节后更换磁带
-M, --multi-volume 创建/列出/解压多卷归档文件
–rmt-command=COMMAND 使用指定的 rmt COMMAND 代替 rmt
–rsh-command=COMMAND 使用远程 COMMAND 代替 rsh
–volno-file=FILE 使用/更新 FILE 中的卷数

设备分块:

-b, --blocking-factor=BLOCKS 每个记录 BLOCKS x 512 字节
-B, --read-full-records 读取时重新分块(只对 4.2BSD 管道有效)
-i, --ignore-zeros 忽略归档中的零字节块(即文件结尾)
–record-size=NUMBER 每个记录的字节数 NUMBER,乘以 512

选择归档格式:

-H, --format=FORMAT 创建指定格式的归档
压缩选项:

-a, --auto-compress 使用归档后缀名来决定压缩程序
-I, --use-compress-program=PROG
通过 PROG 过滤(必须是能接受 -d
选项的程序)
-j, --bzip2 通过 bzip2 过滤归档
-J, --xz 通过 xz 过滤归档
–lzip 通过 lzip 过滤归档
–lzma 通过 lzma 过滤归档
–lzop
–no-auto-compress 不使用归档后缀名来决定压缩程序
-z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档
-Z, --compress, --uncompress 通过 compress 过滤归档
本地文件选择:

  --add-file=FILE        添加指定的 FILE 至归档(如果名字以 -
                         开始会很有用的)
  --backup[=CONTROL]     在删除前备份,选择 CONTROL 版本

-C, --directory=DIR 改变至目录 DIR
–exclude=PATTERN 排除以 PATTERN 指定的文件
–exclude-backups 排除备份和锁文件
–exclude-caches 除标识文件本身外,排除包含
CACHEDIR.TAG 的目录中的内容
–exclude-caches-all 排除包含 CACHEDIR.TAG 的目录
–exclude-caches-under 排除包含 CACHEDIR.TAG 的目录中所有内容

  --exclude-tag=FILE     除 FILE 自身外,排除包含 FILE
                         的目录中的内容
  --exclude-tag-all=FILE 排除包含 FILE 的目录
  --exclude-tag-under=FILE   排除包含 FILE 的目录中的所有内容
  --exclude-vcs          排除版本控制系统目录

-h, --dereference
跟踪符号链接;将它们所指向的文件归档并输出
–hard-dereference
跟踪硬链接;将它们所指向的文件归档并输出
-K, --starting-file=MEMBER-NAME
begin at member MEMBER-NAME when reading the
archive
–newer-mtime=DATE 当只有数据改变时比较数据和时间
–no-null 禁用上一次的效果 --null 选项
–no-recursion 避免目录中的自动降级
–no-unquote 不以 -T 读取的文件名作为引用结束
–null -T 读取以空终止的名字,-C 禁用
-N, --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE
只保存比 DATE-OR-FILE 更新的文件
–one-file-system 创建归档时保存在本地文件系统中
-P, --absolute-names 不要从文件名中清除引导符‘/’
–recursion 目录递归(默认)
–suffix=STRING 在删除前备份,除非被环境变量
SIMPLE_BACKUP_SUFFIX
覆盖,否则覆盖常用后缀(‘’)
-T, --files-from=FILE 从 FILE
中获取文件名来解压或创建文件
–unquote 以 -T
读取的文件名作为引用结束(默认)
-X, --exclude-from=FILE 排除 FILE 中列出的模式串

tar -cvf test.tar test/

#只打包目录内的文件,不包括目录本身
(1)
[root@localhost ~]# ll -dl test
drwxr-xr-x. 2 root root 20 3月   7 20:32 test
[root@localhost ~]# tar -zcvf test.tar.gz -C ./test ./    #-C指定要压缩的文件路径
[root@localhost ~]# tar -tvf test.tar.gz
drwxr-xr-x root/root         0 2023-03-07 20:32 ./
-rw-r--r-- root/root         0 2023-03-07 20:32 ./a.conf
(2)
[root@localhost ~]# cd test/
[root@localhost test]# tar -zcvf test.tar.gz ./
./
./a.conf
[root@localhost test]# ls
a.conf  test.tar.gz

追加文件至归档,不支持对压缩归档追加
[root@localhost ~]# tar -tvf test.tar
drwxr-xr-x root/root         0 2023-03-07 20:32 test/
-rw-r--r-- root/root         0 2023-03-07 20:32 test/a.conf
[root@localhost ~]# tar -rf test.tar file
[root@localhost ~]# tar -tvf test.tar
drwxr-xr-x root/root         0 2023-03-07 20:32 test/
-rw-r--r-- root/root         0 2023-03-07 20:32 test/a.conf
-rw-r--r-- root/root        28 2023-03-07 09:25 file

查看归档文件中的文件列表
[root@localhost ~]# tar -tvf test.tar
drwxr-xr-x root/root         0 2023-03-07 20:32 test/
-rw-r--r-- root/root         0 2023-03-07 20:32 test/a.conf
-rw-r--r-- root/root        28 2023-03-07 09:25 file

split

用法:split [选项]… [输入 [前缀]]

-a, --suffix-length=N generate suffixes of length N (default 2)
–additional-suffix=SUFFIX append an additional SUFFIX to file names
-b, --bytes=SIZE put SIZE bytes per output file
-C, --line-bytes=SIZE put at most SIZE bytes of lines per output file
-d, --numeric-suffixes[=FROM] use numeric suffixes instead of alphabetic;
FROM changes the start value (default 0)
-e, --elide-empty-files do not generate empty output files with ‘-n’
–filter=COMMAND write to shell COMMAND; file name is $FILE
-l, --lines=NUMBER put NUMBER lines per output file
-n, --number=CHUNKS generate CHUNKS output files; see explanation below

#分割大的tar文件为多个小文件
[root@localhost test]# split -l 1 -d -a 3 test.tar.gz out
[root@localhost test]# ll
-rw-r--r--. 1 root root  14 3月   8 15:03 out000
-rw-r--r--. 1 root root 124 3月   8 15:03 out001

#合并split文件
[root@localhost test]# cat out00* > out.tar.gz
[root@localhost test]# tar -tvf out.tar.gz
drwxr-xr-x root/root         0 2023-03-07 20:32 ./
-rw-r--r-- root/root         0 2023-03-07 20:32 ./a.conf

sed

用法: sed [选项]… ‘script;script’ [输入文件]…

-n, --quiet, --silent
取消自动打印模式空间
-e 脚本, --expression=脚本
添加“脚本”到程序的运行列表
-f 脚本文件, --file=脚本文件
添加“脚本文件”到程序的运行列表
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
-r, --regexp-extended
在脚本中使用扩展正则表达式
-s, --separate
将输入文件视为各个独立的文件而不是一个长的连续输入

#使用-i选项时要注意,i要放在最后:
-ir 不支持
-ri 支持
-i -r 支持
-ni 危险选项,会将文件清空

‘地址 命令’
地址格式:
1.不给地址,对全文搜索

2.单地址:
	n						指定行数,$表示最后一行
	/pattern/		被此处模式所能否匹配到的每一行

3.地址范围:
m,n						从m行到n行之间的内容,3,6
m,+n					从m行到开始往后再数n行的内容,3,+6表示第3到第9行
/pat1/,/pat2/	第一次匹配到的pat1到最后一次匹配到pat2之间的内容
m,/pat/				第m行到第一次匹配到pat的行的内容
/pat/,m			匹配到pat的行到第m行

4.步进: ~
1~2	奇数行
2~2	偶数行

命令:
p 打印当前模式空间内容,追加到默认输出之后
Ip 忽略大小写输出
d 删除模式空间匹配的行,并立即启用下一轮循环
a text 在指定行后面追加文本,支持使用\n追加多行
i text 在指定行前面插入文本
c text 替换为单行或多行文本
w file 保存模式匹配到的内容到指定文件
r file 读取指定文本的内容至匹配到的行后
= 为模式空间匹配的行加上行号
! 模式空间匹配行取反
q 结束或退出sed

[root@localhost ~]# seq 5 |sed -e '1d' -e '3d'
2
4
5
[root@localhost ~]# seq 5 |sed '1d;3d'
2
4
5
[root@localhost ~]#

#修改文件前备份
[root@localhost ~]# cat file
1
2
3
4
5
[root@localhost ~]# sed -i.bk '3d' file
[root@localhost ~]# cat file.bk
1
2
3
4
5
[root@localhost ~]# cat file
1
2
4
5

#取反操作
[root@localhost ~]# seq 5 | sed -n '1,3!p'
4
5
[root@localhost ~]#

#使用后向引用替换
[root@localhost ~]# sed -nr 's/^(r..t)/\1[abc]/gp' /etc/passwd
root[abc]:x:0:0:root:/root:/bin/bash
[root@localhost ~]#

#将“#”开头的行删除
 cat /etc/profile | sed '/^#/s/^#//g'

#引用变量
[root@localhost ~]# a=3;echo |sed 's/^/$a/'
$a
[root@localhost ~]# a=3;echo |sed "s/^/$a/"
3
[root@localhost ~]#

awk

awk工作原理和基本用法
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file…
-F 也支持正则表达式’

awk变量
FS:输入字段分隔符,默认为空白字符,功能相当于-F ,支持正则表达式
OFS:输出字段分隔符,默认为空白字符
RS:输入记录record分割符,指定输入时的换行符
ORS:输出记录分隔符,输出时用指定符合代替换行符
NF:字段数量
NR:记录编号
FNR:记录编号,当同时处理多个文件时对每个文件分别编号

[root@centos79 ~]# cat <<EOF| awk -v RS=";" '{ print $1}'
> a b c;e d e;1 2 3
> EOF
a
e
1
[root@centos79 ~]#
[root@centos79 ~]# cat <<EOF| awk -v RS=";" -v ORS="|" '{ print $1}'
a b c;e d e;1 2 3
EOF
a|e|1|[root@centos79 ~]#

printf

printf “指定的格式” “文本1” “文本2”…

常用的格式替换符
替换符 功能
%s 字符串
%d,%i 十进制整数
%f 浮点数
%c ASCII
%b 对应的参数中包含转义符时,可以使用此替换符进行替换,对应的转义符会被转义
%o 八进制
%x 十六进制(a-f)
%X 十六进制(A-F)

%ns,n代表占位宽度,-表示左对齐,不带-为右对齐
%03d,表示3位宽度,不足则用0在补齐,超过则原样输出
%.2f,保留2位小数

通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?

#!/bin/bash
rabbit=$(echo "(80-30*2)/2"| bc) ;let chicken=30-$rabbit;printf "rabbchen:%s\n" $rabbit $chicken

结合编程的for循环,条件测试,条件组合,完成批量创建100个用户

for i in {1..100};do id user$i &> /dev/null && echo user$i exist already || useradd user$i;echo user$i added successfully;done

磁盘术语

CHS
● head:磁头,磁头数=盘面数
● track:磁道,磁道数=柱面数
● sector:扇区,512bytes
● cylinder:柱面

MBR和GPT

使用磁盘空间过程

  1. 设备分区
  2. 创建文件系统
  3. 挂载新的文件系统

磁盘分区方式有两种:MBR和GPT

MBR

MBR:master boot record,1982年,使用32位表示扇区数,因此分区不超过2T
0磁道0分区:512bytes
● 446bytes:boot loader启动相关
● 64bytes:分区表,其中每16bytes标识一个分区
● 2bytes:55AA,标识位

MBR分区中一块硬盘最多有4个主分区,也可以3个主分区+1个扩展分区(N个逻辑分区)
MBR分区主和扩展分区对应的1-4,逻辑分区从5开始,/dec/sda5

GPT

GPT分区结构分为4个区域:
● GPT头
● 分区表
● GPT分区
● 备份区域

文件系统

创建文件系统

root@ubuntu1804:~# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=12800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=51200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=855, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

查看和管理分区信息

root@ubuntu1804:~# blkid
/dev/fd0: SEC_TYPE="msdos" UUID="565C-617A" TYPE="vfat"
/dev/sr0: UUID="2023-02-28-12-11-26-00" LABEL="CDROM" TYPE="iso9660"
/dev/sr1: UUID="2021-09-15-20-41-58-00" LABEL="Ubuntu-Server 18.04.6 LTS amd64" TYPE="iso9660" PTUUID="7a857666" PTTYPE="dos"
/dev/sda2: UUID="747de01f-0aef-4389-8340-819b8b606fc9" TYPE="ext4" PARTUUID="659d3b1e-3aa6-4722-aaba-710f9c33ee47"
/dev/sda3: UUID="rm6KnU-nqMM-e32K-njMB-2Zvj-xSSF-dgQpyZ" TYPE="LVM2_member" PARTUUID="6ca0daf5-608d-4f18-896f-2eeb452fb21e"
/dev/mapper/ubuntu--vg-ubuntu--lv: UUID="adf02e58-74d6-4f1c-acf9-08b7024ab050" TYPE="ext4"
/dev/sda1: PARTUUID="aa6d75b1-d222-4b44-b12d-92f8ab20bc15"

挂载
mount [-fnrsvw] [-t fstype] [-o options] device dir
device:指令要挂载的设备

-f fstype 指定要挂载的设备上的文件系统类型,如ext4 xfs
-r readonly,只读挂载
-w read and write
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载项中有auto 功能)
-L ‘LABEL’ 以卷标指定挂载设备

-o options:(挂载文件系统的选项),多个选项使用逗号分隔
async 异步模式,内存更改时,写入buffer,过一段时间再写到磁盘
sync 同步模式,内存更改时,同时写入磁盘
auto/noauto 是否支持开机自动挂载
ro/rw 只读,读写
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
defaults 相当于rw,suid,dev,exec,auto,nouser,async

查看挂载情况

#通过查看/etc/mtab文件显示当前已挂载的所有设备
root@ubuntu1804:~# cat /etc/mtab
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=1972648k,nr_inodes=493162,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=401324k,mode=755 0 0
/dev/mapper/ubuntu--vg-ubuntu--lv / ext4 rw,relatime,data=ordered 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
.....

root@ubuntu1804:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1972648k,nr_inodes=493162,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=401324k,mode=755)
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime,data=ordered)
....

#查看内核追踪到的已挂载的所有设备
root@ubuntu1804:~# cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=1972648k,nr_inodes=493162,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=401324k,mode=755 0 0
/dev/mapper/ubuntu--vg-ubuntu--lv / ext4 rw,relatime,data=ordered 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
....

持久挂载

挂载保存到/etc/fstab中可以在下次开机时自动启动挂载
/etc/fstab的帮助通过man 5 fstab查询
每行定义一个要挂载的文件系统,其中包括6项:

  1. 要挂载的设备或伪文件系统
    设备文件:LABEL/UUID/伪文件系统名称(proc,sysfs)
  2. 挂载点:必须是事先存在的目录
  3. 文件系统类型:ext4,xfs,none
  4. 挂载选项:defaults,acl,bind
  5. 转储频率:0 不做备份;1 每天备份;2 每隔一天备份
  6. fsck检查的文件系统的顺序:0 不自检;1 首先自检,一般只有rootfs才用;2 非rootfs使用

交换分区实现过程

  1. 创建交换分区或文件‘
  2. 使用mkswap写入特殊签名
  3. 在/etc/ftab文件中添加条目
  4. 使用swapon -a激活交换空间
root@ubuntu1804:~# mkswap /dev/sdb3
Setting up swapspace version 1, size = 100 MiB (104853504 bytes)
no label, UUID=66f3da70-f7fc-4eac-8c16-e22b0edcc9e7
root@ubuntu1804:~# blkid /dev/sdb
/dev/sdb: PTUUID="fc128077" PTTYPE="dos"
root@ubuntu1804:~# blkid /dev/sdb3
/dev/sdb3: UUID="66f3da70-f7fc-4eac-8c16-e22b0edcc9e7" TYPE="swap" PARTUUID="fc128077-03"
root@ubuntu1804:~# vi /etc/fstab
UUID=66f3da70-f7fc-4eac-8c16-e22b0edcc9e7  swap swap   defaults 0 0
root@ubuntu1804:~# swapon -a
root@ubuntu1804:~#
root@ubuntu1804:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.8G        187M        2.9G        1.2M        781M        3.4G
Swap:           99M          0B         99M

禁用swap分区

root@ubuntu1804:~# sed  -i.bk '/swap/d' /etc/fstab
root@ubuntu1804:~# swapoff -a
root@ubuntu1804:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.8G        187M        2.9G        1.2M        782M        3.4G
Swap:            0B          0B          0B

RAID

RAID-0
以chunk为单位读写数据,将数据分别存放在两块硬盘上。因为读写时都可以并行处理

在这里插入图片描述
RAID-1
两块硬盘存储相同数据,实现冗余。读写数据略下降
在这里插入图片描述
RAID-5
数据分别放在多块磁盘,并将校验数据分布在不同磁盘,至少需要3块硬盘
在这里插入图片描述
RAID-10
先做RAID1,再做RAID0
在这里插入图片描述

RAID-01
现做RAID0,再做RAID1
在这里插入图片描述

比较各种RAID方案通过以下几个纬度考虑:
● 磁盘利用率
● 最少通过几块硬盘实现
● 容错性,能容忍几块硬盘实现
● 性能,读写效率

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值