zoukankan      html  css  js  c++  java
  • 定时任务、用户管理、磁盘介绍

    一、阶段知识回顾

    服务器硬件,提升用户的体验(大型网站门户网站数据放在内存,中小型企业放在磁盘)尽量把请求往前推:memcached,redis

    Buffer与Cache区别:

    buffer:观看视频的时候 转圈,数据放在你的内存,存放这些数据的空间buffer区域 缓冲区,buffering

    cache:提高观看速度 ,主要是用来给用户读取在内存中的区域cache,缓存区。

    写buffer 读cache

    写缓冲 读缓存

    radis卡:

    查看端口是否开启:telnet,netstat -lntp ,ss -lntup

    ps -ef :正在运行的进程。

    安装常见软件:

    [root@oldboy-01 ~]# yum install tree telnet nc nmap lrzsz dos2unix -y

    nc与telnet用法基本相同。

    nmap -p22 10.0.0.201 查看端口是否开启

    lrzssz :rz:上传

    sz:下载,sz /etc/hosts

    永久修改主机名:/etc/sysconfig/network,修改配置文件。

    修改主机名解析:/etc/hosts

    帮助命令:

    man ls,ls --help

    vim 相关知识:

    光标移动:

    左下右上:hjkl

    gg:第一行

    G:最后一行,100G

    光标移动到行尾:$

    光标移动到行首:0或者^

    vim编译模式:

    当前行下一行插入一行并进入编辑:o

    光标位置至行尾删除并进入编辑:C

    光标位置至行尾位置删除,不进入编辑:D,$d

    光标移动至行尾,并进入编辑模式:A

    复制光标所在行:yy

    黏贴:p,多次黏贴3p,4p

    删除/剪切:dd

    删除当前行至文件尾部:dG

    vim常见故障:

    编辑模式查找:/

    继续向下查找:n

    继续向上查找:N

    撤销当前的操作:u

    撤销刚才的操作:ctrl+r

    二、定时任务

    (一)定时任务介绍

    crond

    atd:一次性

    ana:不是7x24小时服务器

    crond:

    [root@oldboy-01 ~]# rpm -qa | grep cronie
    cronie-1.4.4-16.el6_8.2.x86_64
    cronie-anacron-1.4.4-16.el6_8.2.x86_64
    [root@oldboy-01 ~]# rpm -ql cronie
    /etc/cron.d
    /etc/cron.d/0hourly
    /etc/cron.deny
    /etc/pam.d/crond
    /etc/rc.d/init.d/crond
    /etc/sysconfig/crond
    /usr/bin/crontab
    /usr/sbin/crond
    /usr/share/doc/cronie-1.4.4
    /usr/share/doc/cronie-1.4.4/AUTHORS
    /usr/share/doc/cronie-1.4.4/COPYING
    /usr/share/doc/cronie-1.4.4/ChangeLog
    /usr/share/doc/cronie-1.4.4/INSTALL
    /usr/share/doc/cronie-1.4.4/README
    /usr/share/man/man1/crontab.1.gz
    /usr/share/man/man5/crontab.5.gz
    /usr/share/man/man8/cron.8.gz
    /usr/share/man/man8/crond.8.gz
    /var/spool/cron
    [root@oldboy-01 ~]# 
    

    系统的定时任务:系统会自动运行里面的内容,系统中毒的时候。

    /etc/cron.hourly

    /etc/cron.daily

    /etc/cron.weekly

    /etc/cron.monthly

    系统定时任务+logrotate命令完成对日志的日志切割/日志轮询。

    /etc/crontat #系统定时任务的配置文件之一。

    用户定时任务:

    [root@oldboy-01 ~]# crontab -l

    编辑模式:

    [root@oldboy-01 ~]# crontab -e

    定时任务存放的位置:

    [root@oldboy-01 ~]# cat /var/spool/cron/root #root用户名

    确认crond正在运行:

    方法1:

    [root@oldboy-01 ~]# /etc/init.d/crond status

    方法2:

    [root@oldboy-01 ~]# ps -ef | grep crond

    查看是否开机自启动:

    [root@oldboy-01 ~]# chkconfig | grep cron

    crontab -r #删除所有定时任务,没有提示确认。

    crontab 命令:有语法检查功能。

    crontab -e :==vim /var/spool/cron/root

    crontab -l :==cat /var/spool/cron/root

    定时任务的日志文件:

    /var/log/cron

    定时任务黑名单,哪些用户禁止使用定时任务:

    /etc/cron.deny#用户的名字写进去

    (二)定时任务格式

    什么时间做什么事?

    格式:时间 命令

    时间:分、时、日、月、星期(0-6)

    避免日和星期同时写入。

    定时任务中特殊符号:

    星号(*):表示每的意思。

    斜线(/n):每隔n

    crontab中命令使用绝对路径

    [root@oldboy-01 ~]# crontab -e
    #print name to file by cyc
    */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com
    

    查看日志:

    [root@oldboy-01 ~]# tail -f /var/log/cron

    减号(-):表示范围 :

    00 09-11 * * * cmd,整时运行;* 09-11 * * cmd,每分钟运行

    逗号(,):不连续的范围,如:7,9,11等。

    例子:* * * * * echo oldboy >> /oldboy.txt #每分钟将名字追加到oldboy.txt中。

    定时任务注意事项:

    ①测试号命令

    ②命令放入脚本中

    ③测试脚本

    ④检查结果

    (三)定时任务九局箴言

    ①定时任务之前加注释

    ②使用脚本替代命令定时任务。脚本一般放在,/server/scripts。使用sh命令进行执行。

    ③定时任务date中的%百分号。默认表示换行,所以需要在%号前加撬棍。date +%F

    ④运行脚本使用,/bin/sh

    ⑤定时任务中命令或者脚本结果(正确错误)定向到黑洞(>/dev/null 2>&1),或者定向到文件:>/oldboy.txt 2>&1。

    如果不定向:

    邮件的软件没有开启:大量小文件放在:[root@oldboy-01 ~]# ll /var/spool/postfix/maildrop/

    邮件的软件开启:会有 you have new mail in /var/spool/mail/root

    快捷键:A,光标移动到行尾,并进入编辑模式。DG:删除当前行至文件尾部。

    ⑥避免不必要的程序及命令输出。如:tar zcf,tar zcvf

    ⑦打包压缩使用相对路径(切换到目标目录的上一级打包目录)

    cd /进入到被打包目录的上一级目录

    cd /

    tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services

    cd / && tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services

    ⑧定时任务脚本中程序文件,尽量使用绝对路径

    ⑨系统与命令位置有关的环境变量问题

    定时任务运行脚本的时候可以识别的path只有/usr/bin 和/bin

    定时任务脚本中的ifconfig ip ntpdate 提示command not found

    解决方法:

    使用绝对路径,/sbin/ifconfig 使用绝对路径。

    在脚本开头重新定义一个PATH。export PATH=/usr/local/sbin ...//

    /bin /sbin

    /usr/bin /usr/sbin

    /usr/local/bin /usr/local/sbin

    JAVA tomcat 里面一般需要重新定义path环境变量

    ifconfig eth0 | awk -F '[ :]+' 'NR==2{print $4}'

    java环境变量:在脚本开头添加export的环境变量。

    rm -f #删除大量文件会报错。

    需要:ls | xargs rm -f

    (三)用户管理

    (1)开机自启动

    ①/etc/rc.local

    ②通过chkconfig

    如何让脚本放在chkconfig

    ①脚本放在/etc/init.d/oldboyd

    vim /etc/init.d/oldboyd

    添加头:#chkconfig: 2345 99 99

    echo oldboy

    ②增加脚本执行权限

    chmod +x /etc/init.d/oldboyd

    ③chkconfig --add oldboyd

    ④查看:chkconfig | grep oldboyd

    chkconfig 背后的故事

    s--stop

    k--kill

    [root@oldboy-01 maildrop]# chkconfig iptables on
    [root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt
    lrwxrwxrwx. 1 root root 18 Dec 18 00:36 S08iptables -> ../init.d/iptables
    [root@oldboy-01 maildrop]# chkconfig iptables off
    [root@oldboy-01 maildrop]# ll /etc/rc3.d/ | grep ipt
    lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables
    [root@oldboy-01 maildrop]# 
    

    验证:

    [root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt
    lrwxrwxrwx. 1 root root 18 Dec 18 00:37 K92iptables -> ../init.d/iptables
    lrwxrwxrwx. 1 root root 20 Dec 18 00:43 S08iptables -> /etc/init.d/iptables
    [root@oldboy-01 maildrop]# chkconfig | grep ipt
    iptables       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
    [root@oldboy-01 maildrop]# mv /etc/rc3.d/K92iptables /tmp/
    [root@oldboy-01 maildrop]# mv /etc/rc3.d/S08iptables /tmp/
    [root@oldboy-01 maildrop]# chkconfig | grep ipt
    iptables       	0:off	1:off	2:off	3:off	4:off	5:off	6:off
    [root@oldboy-01 maildrop]# ls -l /etc/rc3.d/ | grep ipt
    [root@oldboy-01 maildrop]# 
    [root@oldboy-01 maildrop]# 
    [root@oldboy-01 maildrop]# ln -s /etc/init.d/iptables /etc/rc3.d/S08iptables
    [root@oldboy-01 maildrop]# chkconfig | grep ipt
    iptables       	0:off	1:off	2:off	3:on	4:off	5:off	6:off
    [root@oldboy-01 maildrop]# 
    

    cat /etc/init.d/iptables

    08开机顺序

    92关机顺序

    (2)用户管理

    用户分类:

    root:uid,0

    虚拟用户:uid,1-499

    用户的命令解释器:/sbin/nologin

    普通用户:uid>500

    用户相关文件:

    /etc/passwd 用户信息

    /etc/shadown 用户密码信息

    /etc/group 用户的用户信息

    /etc/gshadow 用户组密码信息

    [root@oldboy-01 maildrop]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    [root@oldboy-01 maildrop]# tail -2 /etc/passwd
    qemu:x:107:107:qemu user:/:/sbin/nologin
    lisi:x:1011:1011::/home/lisi:/bin/bash
    [root@oldboy-01 maildrop]# 
    

    第一列:用户

    第二列:密码,x

    第三列:uid,1011

    第四列:gid,1011

    第五列:用户说明信息(手工添加默认空,系统添加用户有),添加的用户空的,root是root

    第六列:家目录,:/home/lisi

    第七列:用户使用的命令解释器,shell,/bin/bash,/sbin/nologin(虚拟用户)

    [root@oldboy-01 maildrop]# cat /etc/shells 
    /bin/sh
    /bin/bash      默认
    /sbin/nologin  虚拟机用户
    /bin/dash      ubuntu
    /bin/tcsh      unix
    /bin/csh       unix 升级版
    

    /etc/default/useradd:添加用户的时候默认信息

    [root@oldboy-01 ~]# ls -la /etc/skel/

    drwxr-xr-x. 2 root root 4096 Nov 2 2018 .

    drwxr-xr-x. 84 root root 12288 Dec 15 16:29 ..

    -rw-r--r--. 1 root root 18 Mar 23 2017 .bash_logout #用户退出会运行这里的命令

    -rw-r--r--. 1 root root 176 Mar 23 2017 .bash_profile #/etc/profile

    -rw-r--r--. 1 root root 124 Mar 23 2017 .bashrc #/etc/bashrc

    /etc/skel:

    新用户的老家的模板(新用户家目录的样子)

    请问如下登录环境故障的原理及解决办法?

    -bash-4.1$

    解决办法:

    ①cp /home/oldboy/.bash* ~

    ②cp /etc/skel/.bash* ~

    用户管理之添加和删除用户:

    点(当前目录),星号(*)所有

    useradd :

    -u:指定uid

    -s:指定使用的shell,默认/bin/bash,可以手工设置/sbin/nologin

    -M:表示不创建家目录,一般创建虚拟用户使用

    -g:指定用户属于组(组名字)添加用户的时候,默认创建一个用户名一样的组

    -c:创建用户指定用户信息

    添加一个用户oldboy666指定uid为888禁止用户登录系统,不创建家目录。

    [root@oldboy-01 ~]# useradd -s /sbin/noloin -u 888 oldboy666 -M 
    [root@oldboy-01 ~]# id oldboy666
    uid=888(oldboy666) gid=1013(oldboy666) groups=1013(oldboy666)
    [root@oldboy-01 ~]# 
    

    [root@oldboy-01 ~]# userdel oldboy666

    后者在/etc/passwd 相应的用户名加注释

    userdel -r :删除用户所有信息

    usermod:修改用户信息

    -s:修改用户使用的shell

    -g:修改用户组

    -G:修改用户属于多个组

    [root@oldboy-01 ~]# usermod -c 'xuniyonghu' zhangsan666
    [root@oldboy-01 ~]# grep zhangsan666 /etc/passwd
    zhangsan666:x:1012:1012:xuniyonghu:/home/zhangsan666:/bin/bash
    [root@oldboy-01 ~]# 
    [root@oldboy-01 ~]# usermod -g oldboy zhangsan666
    [root@oldboy-01 ~]# id zhangsan666
    uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy)
    [root@oldboy-01 ~]#
    [root@oldboy-01 ~]# usermod -G root,alex888,alex666 zhangsan666
    [root@oldboy-01 ~]# id zhangsan666
    uid=1012(zhangsan666) gid=500(oldboy) groups=500(oldboy),0(root),1013(alex666),1014(alex888)
    [root@oldboy-01 ~]#
    

    设置用户密码:

    方法1:
    passwd oldboy
    方法2
    [root@oldboy-01 ~]# echo '123' | passwd --stdin oldboy
    Changing password for user oldboy.
    passwd: all authentication tokens updated successfully.
    [root@oldboy-01 ~]# history -c
    

    密码保存工具:keepass,

    用户管理之如何增强系统安全性和指纹验证

    ①最小化安装

    ②保护好root,进制root远程登录

    修改远程连接端口22

    /var/log/secure 登录日志分析

    ③文件权限:

    给系统常用命令+i

    系统配置文件+a

    ④给文件或者命令做一个指纹

    [root@oldboy-01 oldboy]# md5sum oldboy.txt
    9cd0ec3f04d4b8ed2d752663b91bdc80  oldboy.txt
    [root@oldboy-01 oldboy]# echo 'zhangsan' >> oldboy.txt
    [root@oldboy-01 oldboy]# md5sum oldboy.txt
    890e6d1a7a855c028d1186c3f0e3aa6e  oldboy.txt
    [root@oldboy-01 oldboy]# md5sum oldboy.txt > polic.log
    [root@oldboy-01 oldboy]# cat polic.log 
    890e6d1a7a855c028d1186c3f0e3aa6e  oldboy.txt
    [root@oldboy-01 oldboy]# md5sum -c polic.log
    oldboy.txt: OK
    [root@oldboy-01 oldboy]# echo 'zhangsa1n' >> oldboy.txt
    [root@oldboy-01 oldboy]# md5sum -c polic.log
    oldboy.txt: FAILED
    md5sum: WARNING: 1 of 1 computed checksum did NOT match
    [root@oldboy-01 oldboy]# 
    放入定时任务+md5sum定时检测
    

    面试题:

    chown:修改文件或者目录所有者和属于的用户组

    -R:递归修改文件和目录的所有者和用户组

    chown oldboy oldboy.txt#只修改文件的所有者

    chown oldboy.oldboy oldboy.txt #修改用户的所有者和所属主

    用户组相关:

    groupadd

    创建用户组

    -g指定用户组的gid数字

    添加一个虚拟用户mysql,指定用户uid gid 都是999

    方法1
    [root@oldboy-01 /]# useradd -s /sbin/nologin -u 997 -M mysql
    [root@oldboy-01 /]# id mysql
    uid=997(mysql) gid=997(mysql) groups=997(mysql)
    方法2
    [root@oldboy-01 /]# groupadd -g 996 mysql1
    [root@oldboy-01 /]# useradd -s /sbin/nologin -M -u 996 -g mysql mysql1
    [root@oldboy-01 /]# id mysql1
    uid=996(mysql1) gid=997(mysql) groups=997(mysql)
    [root@oldboy-01 /]# 
    

    查询用户信息:

    id 用户

    /etc/group :查看用户里的用户

    w:

    [root@oldboy-01 /]# w
     02:33:33 up 1 day, 12:42,  1 user,  load average: 0.08, 0.08, 0.01
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    10.0.0.1         Wed01    0.00s  0.27s  0.01s w
    [root@oldboy-01 /]# 
    

    第一行:

    第一列:当前系统时间

    第二列:系统运行时间

    第三列:远程连接用户数量

    第四列:系统负载信息

    第二行:

    第一列:远程登录用户名字

    第二列:tty

    第三列:从哪里登录的

    最后一列:用户在做什么。

    查询系统性能命令:

    w

    uptime

    top:uptime,free h,ps -ef,M,P

    htop

    iotop:显示系统中每个进程使用的磁盘io

    iftop:查看网络流量

    last:查看用户登录信息

    lastlog:系统中所有用户最近登录信息

    Linux尚方宝剑(sudo)

    ll /var/log/secure

    su与su - :表示切换用户的时候更新环境变量

    如何使用:

    [oldboy@oldboy-01 ~]$ sudo -l
    We trust you have received the usual lecture from the local System
    Administrator. It usually boils down to these three things:
    
        #1) Respect the privacy of others.
        #2) Think before you type.
        #3) With great power comes great responsibility.
    [sudo] password for oldboy: 
    

    配置sudu:

    [root@oldboy-01 ~]# visudo
      93 oldboy  ALL=(ALL)    /bin/ls,/bin/touch
     [root@oldboy-01 ~]#visudo -c
    

    使用步骤:

    [root@oldboy-01 ~]# su - oldboy
    [oldboy@oldboy-01 ~]$ sudo -l
    [sudo] password for oldboy: 
    Matching Defaults entries for oldboy on this host:
        !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME
        HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME
        LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
        LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
        LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS
        _XKB_CHARSET XAUTHORITY", secure_path=/sbin:/bin:/usr/sbin:/usr/bin
    
    User oldboy may run the following commands on this host:
        (ALL) /bin/ls, (ALL) /bin/touch
    [oldboy@oldboy-01 ~]$ sudo ls /root/
    access.log	 etc.bak.gz	     luffy.city		oldboy.txt-hard
    anaconda-ks.cfg  ifcfg-eth0	     oldboy-2017-10-20	oldboy.txt.hard
    data		 install.log	     oldboy.txt		oldboy.txt-soft
    etc.bak2.gz	 install.log.syslog  oldboy.txt.bak
    [oldboy@oldboy-01 ~]$ sudo touch /root/alex.txt
    [oldboy@oldboy-01 ~]$ sudo ls /root/alex.txt
    /root/alex.txt
    [oldboy@oldboy-01 ~]$ 
    

    visudo ==vim /etc/sudoers

    授权命令:oldboy ALL=(ALL) /bin/ls, /bin/touch

    C:删除光标位置至行尾,并进入编辑模式。

    A:进入行尾,并进入编辑模式。

    如果授权所有:

    oldboy ALL=(ALL) /bin/,并且排除su

    94 oldboy ALL=(ALL)     /bin/*, !/bin/su
    #根据ls -/bin  查看可以使用的命令。
    

    正常sudo需要密码,在权限前增加:(NOPASSWD:),可以不用使用输入密码。

    (四)记录用户的操作记录

    ①齐治的堡垒机:商业

    ②gateone web跳板机

    ③py开发的开源跳板机

    Jumpserver部署

    crazyEYC

    ④shell跳板机

    三、磁盘

    (一)磁盘结构

    (1)磁盘基础

    分类:机械硬盘,固态硬盘

    磁盘外部结构:盘片,主轴,磁头

    磁盘接口:

    SAS:服务器标配。生成环境。15k转数。

    SATA:家庭电脑多用,容量大,价格便宜。性能要求不高,容量不大,线下服务。

    SCSI:速度较快,造价较高。

    PCI-E:一般为固态硬盘,较快。较贵。大规模读写。高并发。

    5400:rpm,每分钟转数。

    磁盘内部组成:磁头,磁道,扇区

    盘面数量==磁头数量,主要用来读写速度。

    磁道:主要存放数据,以主轴为圆心的的区域。

    扇区:一个磁盘上最小存储数据单位。默认512字节。

    柱面:相同的盘面组成圆柱体。柱面的数量和磁道的数量相等。

    磁头读取数据是按照柱面进行读写。磁头的切换从0磁盘切换为1磁头。磁道的变化(寻道)

    单元块:表示一个柱面的大小。

    (2)机械磁盘和固态硬盘区别

    机械硬盘:容量大的价格低,抗打击能力弱,读写速度慢,数据恢复容易,无限寿命。

    固态机械硬盘:容量小价格贵,抗打击能力强,读写速度快,数据恢复难,读写次数1-2万次左右。

    注意:重要数据放在机械硬盘。

    (3)磁盘大小计算

    [root@oldboy-01 ~]# fdisk -l
    Disk /dev/sda: 10.7 GB, 10737418240 bytes
    255 heads, 63 sectors/track, 1305 cylinders
    255磁头,63扇区/磁道         1305柱面
    Units = cylinders of 16065 * 512 = 8225280 bytes
    单元块大小==柱面大小
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x00015468
    

    磁盘大小:柱面大小*柱面数量,柱面由磁道大小组成。

    每个柱面的大小=磁盘的大小*磁头的数量

    磁道的大小=扇区的大小*每个磁道扇区大小

    总结:512x63x255x1305字节byte

    bit位,1Byte=8bits

    单位换算:1KB=1024Byte

    公式计算:

    [root@oldboy-01 ~]# awk 'BEGIN{print 8225280*1305/1024/1024/1024}'
    9.99681
    [root@oldboy-01 ~]#
    

    (二)raid卡

    (1)raid卡基础知识

    磁盘冗余阵列:

    获得更大的容量

    获得更高的性能

    获得更强的安全性

    阵列卡:

    基础raid卡

    高级raid卡

    (2)raid级别:

      级别	最少硬盘   	安全冗余  	可用容量       	性能        	使用场景       	举例      
    

    Raid0 1 最低 所有之和 读写最快 不要求安全只要求速度 数据库从库
    Raid1 只能2块 100% 一半 写入慢,读取正常 只追求安全,不追求速度 系统盘
    Raid5 至少3(校验) 最多损坏一块 损失一块盘的容量 写入速度慢,读取正常 要求安全,不要求速度 普通数据库
    Raid10 4 可以损坏一半 损失所有硬盘一半的容量 读写速度很快 对于安全和速度都要的 数据库主库,存储

    raid5+spare:raid5+热备盘,平时不用,损坏时候立即顶上。

    raid10:两个raid1,将两个raid1做raid0。

    (3)磁盘分区:

    磁盘分区表:

    位置:0磁头0磁道1扇区:前446字节mbr主引导记录

    64字节的分区表

    55AA表示的是结束标记

    64字节分区表:主分区-扩展分区-逻辑分区

    3个主分区,1个扩展分区(如果想使用,需要在扩展分区下创建逻辑分区)

    存储数据只有两个分区:主分区和逻辑分区。

    主分区:存放数据分区,最多有4个。

    扩展分区:无法直接使用,最多只能有一个,必须要在扩展分区中创建逻辑分区才可使用。

    逻辑分区:存放数据分区。

    (4)磁盘命名:

    sas/sata/scsi接口:以sd开头

    第一块sas硬盘:sda

    第三块sas硬盘:sdc

    分区命名:主分区,逻辑分区:1-4

    逻辑分区:从5开始

    磁盘格式化工具:fdisk(小于2个t),parted(大于2个t)

    ctrl+u:删除光标位置至行首。

    创建磁盘分区过程:

    [root@oldboy-01 ~]# fdisk -l | grep '/dev/sd[a-c]'
    Disk /dev/sda: 10.7 GB, 10737418240 bytes
    /dev/sda1   *           1          26      204800   83  Linux
    /dev/sda2              26         124      786432   82  Linux swap / Solaris
    /dev/sda3             124        1306     9493504   83  Linux
    Disk /dev/sdb: 106 MB, 106954752 bytes
    Disk /dev/sdc: 106 MB, 106954752 bytes
    [root@oldboy-01 ~]# fdisk -cu /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0x5e6202b7.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    
    Command (m for help): m
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First sector (2048-208895, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): +30M
    
    Command (m for help): m
    Command action
       a   toggle a bootable flag
       b   edit bsd disklabel
       c   toggle the dos compatibility flag
       d   delete a partition
       l   list known partition types
       m   print this menu
       n   add a new partition
       o   create a new empty DOS partition table
       p   print the partition table
       q   quit without saving changes
       s   create a new empty Sun disklabel
       t   change a partition's system id
       u   change display/entry units
       v   verify the partition table
       w   write table to disk and exit
       x   extra functionality (experts only)
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    e
    Partition number (1-4): 2
    First sector (63488-208895, default 63488): 
    Using default value 63488
    Last sector, +sectors or +size{K,M,G} (63488-208895, default 208895): 
    Using default value 208895
    
    Command (m for help): n  
    Command action
       l   logical (5 or over)
       p   primary partition (1-4)
    l
    First sector (65536-208895, default 65536): 
    Using default value 65536
    Last sector, +sectors or +size{K,M,G} (65536-208895, default 208895): +30M
    
    Command (m for help): p
    
    Disk /dev/sdb: 106 MB, 106954752 bytes
    64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x5e6202b7
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048       63487       30720   83  Linux
    /dev/sdb2           63488      208895       72704    5  Extended
    /dev/sdb5           65536      126975       30720   83  Linux
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@oldboy-01 ~]# ls -l /dev/sdb*
    brw-rw---- 1 root disk 8, 16 Dec 24 01:05 /dev/sdb
    brw-rw---- 1 root disk 8, 17 Dec 24 01:05 /dev/sdb1
    brw-rw---- 1 root disk 8, 18 Dec 24 01:05 /dev/sdb2
    brw-rw---- 1 root disk 8, 21 Dec 24 01:05 /dev/sdb5
    [root@oldboy-01 ~]# 
    

    (5)磁盘分区:

    [root@oldboy-01 ~]# fdisk -cu /dev/sdb
    
    Command (m for help): p
    
    Disk /dev/sdb: 106 MB, 106954752 bytes
    64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x5e6202b7
    
       Device Boot      Start         End      Blocks   Id  System
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First sector (2048-208895, default 2048): 
    Using default value 2048
    Last sector, +sectors or +size{K,M,G} (2048-208895, default 208895): 
    Using default value 208895
    
    Command (m for help): p
    
    Disk /dev/sdb: 106 MB, 106954752 bytes
    64 heads, 32 sectors/track, 102 cylinders, total 208896 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x5e6202b7
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1            2048      208895      103424   83  Linux
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    [root@oldboy-01 ~]# ls -l /dev/sdb*
    brw-rw---- 1 root disk 8, 16 Dec 24 01:09 /dev/sdb
    brw-rw---- 1 root disk 8, 17 Dec 24 01:09 /dev/sdb1
    

    通知系统磁盘分区:

    [root@oldboy-01 ~]# partprobe /dev/sdb
    

    创建文件系统:

    [root@oldboy-01 ~]# mkfs.ext4 /dev/sdb1
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    25896 inodes, 103424 blocks
    5171 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=67371008
    13 block groups
    8192 blocks per group, 8192 fragments per group
    1992 inodes per group
    Superblock backups stored on blocks: 
    	8193, 24577, 40961, 57345, 73729
    
    Writing inode tables: done                            
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 39 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    

    关闭磁盘自动检查功能:

    [root@oldboy-01 ~]# tune2fs -c 0 -i 0 /dev/sdb1
    tune2fs 1.41.12 (17-May-2010)
    Setting maximal mount count to -1
    Setting interval between checks to 0 seconds
    [root@oldboy-01 ~]# 
    

    -c:关闭每挂载多少次进行磁盘检查功能

    -i:关闭每个180天就进行磁盘检查功能

    磁盘分区挂载:

    [root@oldboy-01 ~]# mount /dev/sdb1 /mnt/
    [root@oldboy-01 ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3       8.8G  1.9G  6.5G  23% /
    tmpfs           491M     0  491M   0% /dev/shm
    /dev/sda1       190M   40M  141M  22% /boot
    /dev/sdb1        94M  1.6M   88M   2% /mnt
    [root@oldboy-01 ~]# 
    

    (6)永久开机自动挂载:

    方法1:

    将命令(mount /dev/sdb1 /mnt/)放入:/etc/rc.local

    方法2:

    /etc/fstab

    vim /etc/fstab
    /dev/sdb1               /mnt                    ext4    defaults        0 0
    

    (8)磁盘分区小结:

    第一步:创建分区并通知系统分区表变化:fdisk,partprobe

    第二步:格式化创建文件系统并关闭磁盘检查

    mkfs.ext4 /dev/sdb1

    tune2fs -c 0 -i 0 /dev/sdb1

    第三步:挂载和自动挂载

    mount /dev/sdb1 /mnt

    开机自动挂载:

    /etc/rc.local

    /etc/fstab

    注意:卸载,umount /mnt

    磁盘分区实战

    fdisk:

    磁盘大小小于2TB

    fdisk支持MBR

    parted:

    主要用于给磁盘大于2TB的进行分区

    基于GPT分区表

    print:显示磁盘分区表信息

    mklabel:创建磁盘分区表

    gpt

    msdos(mbr)

    mkpart:创建分区

    rm:删除分区

    q:退出不保存

    创建分区:

    [root@oldboy-01 ~]# parted /dev/sdc 
    GNU Parted 2.1
    Using /dev/sdc
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) p                                                                
    Error: /dev/sdc: unrecognised disk label                                  
    (parted) mklabel gpt
    (parted) p                                                                
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdc: 107MB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    
    Number  Start  End  Size  File system  Name  Flags
    

    创建磁盘:

    [root@oldboy-01 ~]# parted /dev/sdc 
    GNU Parted 2.1
    Using /dev/sdc
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) p                                                                
    Error: /dev/sdc: unrecognised disk label                                  
    (parted) mklabel gpt
    (parted) p                                                                
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdc: 107MB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    
    Number  Start  End  Size  File system  Name  Flags
    
    (parted) mkpart primary 0 30
    Warning: The resulting partition is not properly aligned for best performance.
    Ignore/Cancel? I                                                          
    (parted) p                                                                
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdc: 107MB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    
    Number  Start   End     Size    File system  Name     Flags
     1      17.4kB  30.0MB  30.0MB               primary
    
    (parted) mkpart primary 30 60
    (parted) p                                                                
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdc: 107MB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    
    Number  Start   End     Size    File system  Name     Flags
     1      17.4kB  30.0MB  30.0MB               primary
     2      30.4MB  59.8MB  29.4MB               primary
    
    (parted) q                                                                
    Information: You may need to update /etc/fstab.                           
    
    [root@oldboy-01 ~]# parted /dev/sdc
    GNU Parted 2.1
    Using /dev/sdc
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) q                                                                
    [root@oldboy-01 ~]# parted /dev/sdc p
    Model: VMware, VMware Virtual S (scsi)
    Disk /dev/sdc: 107MB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    
    Number  Start   End     Size    File system  Name     Flags
     1      17.4kB  30.0MB  30.0MB               primary
     2      30.4MB  59.8MB  29.4MB               primary
    
    [root@oldboy-01 ~]# 
    

    (9)案例:java环境内存不足

    创建控件文件块:
    [root@oldboy-01 ~]# dd if=/dev/zero of=/tmp/100m bs=1M count=10
    10+0 records in
    10+0 records out
    10485760 bytes (10 MB) copied, 0.0815905 s, 129 MB/s
    查看文件类型:
    [root@oldboy-01 ~]# file /tmp/100m 
    /tmp/100m: data
    将文件类型变成swap:
    [root@oldboy-01 ~]# mkswap /tmp/100m
    mkswap: /tmp/100m: warning: don't erase bootbits sectors
            on whole disk. Use -f to force.
    Setting up swapspace version 1, size = 10236 KiB
    no label, UUID=dc24e68c-5375-42ed-9199-5d8c0ca2968d
    查看文件类型:
    [root@oldboy-01 ~]# file /tmp/100m
    /tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 2559 pages
    [root@oldboy-01 ~]# free -h
                 total       used       free     shared    buffers     cached
    Mem:          980M       344M       636M       248K        51M       109M
    -/+ buffers/cache:       183M       797M
    Swap:         767M         0B       767M
    增加系统的swap生效:
    [root@oldboy-01 ~]# swapon /tmp/100m
    [root@oldboy-01 ~]# free -h
                 total       used       free     shared    buffers     cached
    Mem:          980M       346M       634M       248K        51M       109M
    -/+ buffers/cache:       185M       795M
    Swap:         777M         0B       777M
    查看swapon
    [root@oldboy-01 ~]# swapon -s
    Filename				Type		Size	Used	Priority
    /dev/sda2                               partition	786428	0	-1
    /tmp/100m                               file		10236	0	-2
    [root@oldboy-01 ~]# 
    

    永久生效:

    方法1:/etc/rc.local

    swapon /tmp/100m

    方法2:/etc/fstab

    /tmp/100m swap swap defaults 0 0

    linux特点:会把使用过的命令和数据临时存放在内存中,cache和buffer

    linux文件系统:inode,blok,superblock

    查看文件的superblock:

    [root@oldboy-01 ~]# dumpe2fs /dev/sda3
    

    常见的文件系统:

    openSUSElinux默认的文件系统:ReiserFS文件系统

    大量小文件。

    IBM的AIX使用的jfs日志文件系统。

    centos7采用XFS文件系统。

    mysql业务会选择xfs。

    centos6采用ext4文件系统。

    视频下载,流媒体,数据库,小文件业务。

    centos5采用ext3文件系统。

    ext2:没有日志,蓝汛的cache业务,CDN网站加速服务。

    一个分区只能一种文件系统。

  • 相关阅读:
    bat学习
    Eclipse调试方法及快捷键
    JDK中的设计模式
    开源-自由-乔布斯
    AOP
    编程语言
    [LeetCode] 160. Intersection of Two Linked Lists(两个单链表的交集)
    [LeetCode] 198. House Robber(小偷)
    [LeetCode] 155. Min Stack(最小栈)
    [LeetCode] 1. Two Sum(两数之和)
  • 原文地址:https://www.cnblogs.com/cuiyongchao007/p/12105282.html
Copyright © 2011-2022 走看看