Day 28 磁盘管理下部

1.1 如何让系统更安全

[root@oldboyedu50-lnb ~]# md5sum oldboy.txt       检查文件是否变化

890b185727556f1be31d7fe5ee5ce4dc  oldboy.txt

[root@oldboyedu50-lnb ~]# sha512sum oldboy.txt     加密更好

c9a326ffb217c4dc7f72ccf02aba9abf9ec94ca40aa47d848f57741e313a7df52b80f8cca9130acc5930815a1728d93bd781b29d4598eb5cbcaf55ef6e2a7d98  oldboy.txt

1.2 如何查看内存使用情况

[root@oldboyedu50-lnb ~]# free -h

             total       used       free     shared    buffers     cached

Mem:          1.8G       1.6G       195M       236K       106M       1.3G

                         -buffer    +buffer

                         -cache     +cache

-/+ buffers/cache:       189M       1.6G   

                               真正的

                        使用的内存  剩余

Swap:         767M         0B       767M

 

1.3 Linux的特点

1.      用过的查看的数据,文件,临时存放的内存中方便以后使用

2.      提高下次使用速度

3.      Linux 一些数据放在buffercache

Buffer 内存中的一个区域 写入到内存中的数据写缓冲区

Cache内存中的一个区域 给别人读取的数据 读缓存区

1.4 磁盘分区

1.4.1 Linux启动流程:

1. 开机自检     BIOS(Basic Input/Output System)

2. MBR引导 

3. GRUB菜单

4. 加载内核

5. 运行init进程 1个进程

6. 读取运行级别 /etc/inittab

7. /etc/rc.sysinit 系统初始化

8. /etc/rc3.d  根据运行级别 启动对应服务(开机自启动)

9. mingetty    登录页面

 

磁盘的引导扇区  0磁头 0磁道 1扇区

MBR引导         001扇区前446字节

MBR Master Boot Record    主引导记录 引导系统启动

DPT  (Disk   Partition Table) 磁盘分区表 记录着磁盘分区从哪里开始到哪里结束

Day 28 磁盘管理下部_第1张图片

Day 28 磁盘管理下部_第2张图片

 

主分区(primary) 每个分区占用16个字节的分区表

扩展分区(extended) 无法直接使用的

逻辑分区(logical 存放数据

 

主分区 primary

       一般一定要有

       存放数据

扩展分区 extend

       最多1

       无法直接使用

逻辑分区 logical

       存放数据

   

1.5 磁盘分区的命名规则:

Day 28 磁盘管理下部_第3张图片

1.5.1 磁盘分区

[root@oldboyedu50-lnb ~]# fdisk -l |grep sd[a-c]:    查看我们需要的磁盘信息

Disk /dev/sda: 21.5 GB, 21474836480 bytes

Disk /dev/sdc: 213 MB, 213909504 bytes

Disk /dev/sdb: 213 MB, 213909504 bytes

 

 

1.6 fdisk  创建分区

-u    磁盘分区的时候以扇区为单位默认是按照柱面

-c     关闭dos兼容模式

fdisk  -cu  /dev/sdb    给磁盘分区

   

1.7 fdisk内部命令   

显示帮助

n  new 创建分区

显示所有分区信息

删除分区

保存并退出

退出不保存

 

1.7.1 创建一个10MB主分区

fdisk -cu  /dev/sdb

Command (m for help): n

Command action  #分区类型

   e   extended                  #扩展分区

   p   primary partition (1-4)   #主分区

p                                        

Partition number (1-4):

分区号码

First sector (2048-417791, default 2048):

从哪里开始(回车 使用默认)

Last sector, +sectors or +size{K,M,G} (2048-417791, default 417791): +10M

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x8dde1fa5

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

 

1.7.2 创建10MB的主分区 创建一个使用所有容量的扩展分区  创建两个50MB逻辑分区

[root@oldboyedu50-lnb ~]# fdisk -cu  /dev/sdb

Command (m for help): p

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x8dde1fa5

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

 

Command (m for help): n    #

Command action

   e   extended

   p   primary partition (1-4)

e                               #创建扩展分区

Partition number (1-4): 2

First sector (22528-417791, default 22528):       默认

Using default value 22528

Last sector, +sectors or +size{K,M,G} (22528-417791, default 417791):        默认

Using default value 417791

 

Command (m for help): p                打印信息

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x8dde1fa5

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

/dev/sdb2           22528      417791      197632    5  Extended

 

Command (m for help): n    

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l                                   #创建逻辑分区

First sector (24576-417791, default 24576):

Using default value 24576

Last sector, +sectors or +size{K,M,G} (24576-417791, default 417791): +50M  #大小50MB

 

Command (m for help): p

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x8dde1fa5

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

/dev/sdb2           22528      417791      197632    5  Extended

/dev/sdb5           24576      126975       51200   83  Linux

 

Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l                                            #创建逻辑分区

First sector (129024-417791, default 129024):

Using default value 129024

Last sector, +sectors or +size{K,M,G} (129024-417791, default 417791): +50M  #大小50MB

 

Command (m for help): p

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x8dde1fa5

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1            2048       22527       10240   83  Linux

/dev/sdb2           22528      417791      197632    5  Extended

/dev/sdb5           24576      126975       51200   83  Linux

/dev/sdb6          129024      231423       51200   83  Linux

 

1.7.3 增加硬盘200MB,硬盘创建一个分区挂载到/data目录

第1个里程碑-创建分区

Command (m for help): p              打印出磁盘信息

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x8dde1fa5

 

   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 cylinder (1-204, default 1):       默认

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-204, default 204):      默认

Using default value 204

 

Command (m for help): p               打印磁盘信息

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x8dde1fa5

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         204      208880   83  Linux

 

Command (m for help): w                         保存退出

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

 

[root@oldboyedu50-lnb ~]# fdisk -l /dev/sdb           显示磁盘信息

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders

Units = cylinders of 2048 * 512 = 1048576 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x8dde1fa5

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         204      208880   83  Linux

 

第2个里程碑-通知系统sdb磁盘分区表变化

Command (m for help): partprode /dev/sdb

 

Disk /dev/sdb: 213 MB, 213909504 bytes

64 heads, 32 sectors/track, 204 cylinders, total 417792 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: 0x2ce82151

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1              32      417791      208880   83  Linux

第3个里程碑-创建文件系统(格式化)

            make filesystem

            mkfs

            #对每个房间装修(磁盘分区)

[root@CJY ~]# 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

52416 inodes, 208880 blocks

10444 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67371008

26 block groups

8192 blocks per group, 8192 fragments per group

2016 inodes per group

Superblock backups stored on blocks:

    8193, 24577, 40961, 57345, 73729, 204801

 

Writing inode tables: done                           

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 32 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

 

第4个里程碑-关闭磁盘自动检查

This filesystem will be automatically checked every 38 mounts or

这个磁盘分区会被自动检查(没挂载38次或每隔180天)

180 days, whichever comes first.  Use tune2fs -c or -i to override.

自己创建的磁盘分区关闭磁盘检查.

 

[root@oldboyedu50-lnb ~]# 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

 

-c  0  关闭 每挂载多少次进行一次磁盘检查

-i  0  关闭 每隔180天进行一次磁盘检查

 

第5个里程碑-挂载

[root@oldboyedu50-lnb ~]# mkdir -p /data

[root@oldboyedu50-lnb ~]# mount  /dev/sdb1  /data/

[root@oldboyedu50-lnb ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.5G   17G   9% /

tmpfs           931M     0  931M   0% /dev/shm

/dev/sda1       190M   40M  141M  22% /boot

/dev/sdb1       194M  1.8M  182M   1% /data

 

第6个里程碑-永久挂载

#方法1

/etc/rc.local 开机自启动

vim编辑模式

/etc/fstab

/dev/sdb1               /data                   ext4    defaults        0  0

Day 28 磁盘管理下部_第4张图片

#方法2

/etc/fstab  开机自动挂载

 

UUID=cf634253-6c41-4771-87b7-e86afb9284a7   /                 ext4          defaults        1                 1

UUID=8519938a-dccb-4eb5-bbbc-4fd22f9f99fe   /boot             ext4          defaults        1                 2

UUID=f70549a5-ec74-4cd1-99ba-49eb175e712d   swap              swap          defaults        0                 0

tmpfs                                       /dev/shm          tmpfs         defaults        0                 0

devpts                                      /dev/pts          devpts        gid=5,mode=620  0                 0

sysfs                                       /sys              sysfs         defaults        0                 0

proc                                        /proc             proc          defaults        0                 0

设备名称(分区)                              挂载点(目录)    文件系统类型  挂载参数       是否进行备份    是否开机磁盘检查

#/dev/cdrom                                  /mnt              iso9660       defaults        0                 0

/dev/sdb1                                   /data             ext4          defaults        0                 0 

 

1.7.4 磁盘使用小结:

1.分区

2.格式化

3.挂载

第一个里程碑-创建分区并通知系统磁盘的分区表变化

第二个里程碑-创建文件系统-关闭分区的自动检查功能

第三个里程碑-挂载及永久挂载

1.7.5 故障案例: java程序占用大量内存,开始使用swapswap不足

增加swap

创建一个文件成为swap

[root@oldboyedu50-lnb ~]# free -h

             total       used       free     shared    buffers     cached

Mem:          1.8G       158M       1.7G       240K        11M        51M

-/+ buffers/cache:        95M       1.7G

Swap:         767M         0B       767M

1.创建一个100M的文件

[root@oldboyedu50-lnb ~]# dd   if=/dev/zero           of=/tmp/100m    bs=1M              count=100

                               input                  output          block

                               file                   file            size

                               从哪里获取数据         输出到哪里      每次复制多少文件   复制多少次

/dev/zero  不断输出 零

/dev/null  黑洞

[root@oldboyedu50-lnb ~]# file /tmp/100m   显示信息

/tmp/100m: data

2.创建swap 让这个文件成为swap(格式化)

[root@oldboyedu50-lnb ~]# 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 = 102396 KiB

no label, UUID=531f48e2-be07-4f24-86e5-dfe9ed549b16

 

[root@oldboyedu50-lnb ~]# file /tmp/100m

/tmp/100m: Linux/i386 swap file (new style) 1 (4K pages) size 25599 pages

 

3.激活swap分区

swapon /tmp/100m

[root@oldboyedu50-lnb ~]# swapon /tmp/100m

[root@oldboyedu50-lnb ~]# free  -h

             total       used       free     shared    buffers     cached

Mem:          1.8G       264M       1.6G       240K        11M       153M

-/+ buffers/cache:        98M       1.7G

Swap:         867M         0B       867M

swapon -s  显示swap的组成情况(磁盘分区 和文件)  #fdisk -l 

4.永久增加

/etc/rc.local

/etc/fstab

 

#/tmp/100m               swap                    swap    defaults        0 0

 

1.7.6 增加swap小结:

1.创建一个文件

2.文件--->swap

3.激活 和永久生效

fdisk   vs   parted

fdisk   支持2TB以内的磁盘       只支持MBR磁盘分区表

parted  支持2TB以上的磁盘       MBR(主分区最多4)  GPT(无限 接近100) 主分区  扩展分区 逻辑分区

 

1.8 parted  /dev/sdc   分区工具

1.9 内置命令

print    显示分区信息

mktable mklabel  创建磁盘分区表 

                 gpt      新的分区表

                 msdos(mbr)   mbr分区表 最大支持2TB

mkpart           创建分区

rm               删除分区

q                退出不保存

 

1.9.1 #创建分区表

(parted) mktable  gpt

(parted) p                                                                

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 214MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

1.9.2 #创建分区

(parted) mkpart  primary  0  10

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: 214MB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

 

Number  Start   End     Size    File system  Name     Flags

 1      17.4kB  10.0MB  9983kB               primary

 

1.10 非交互式创建分区

 parted  /dev/sdc  p   显示分区表信息

 parted  /dev/sdc  mktable gpt   创建分区表格式为gpt

 parted  /dev/sdc  mkpart primary 0 10 ignore   创建分区 分区大小为10M且忽略提示

 parted  /dev/sdc  mkpart primary 10 20     创建分区 分区大小为10M

 parted  /dev/sdc  p    显示分区表信息

 

1.11 总结:

1.11.1   磁盘分区表 主分区  扩展分区 逻辑分区

1.11.2   磁盘分区命名规则

1.11.3   磁盘分区过程

1.11.4   分区格式化挂载

         增加swap

1.11.5   如何查看内存使用情况