Linux磁盘管理

1、相关知识

磁盘,是计算机硬件中不可或缺的部分磁盘,是计算机的外部存储器中类似磁带的装置,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。磁盘有软磁盘,硬磁盘。硬磁盘就是机械硬盘。

  硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械硬盘诞生出来的新硬盘)。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。

    与硬盘相关的物理名词有:扇区(sector)、磁道(track)、磁头(head)、柱面(Cylinder柱面=盘面数*磁道数)、

 

2、利用命令fdisk –l查看硬盘相关信息

[root@localhost ~]# fdisk -l

 

Disk /dev/sda: 21.5 GB, 21474836480 bytes        #硬盘大小

255 heads, 63 sectors/track, 2610 cylinders        #硬盘的磁头数、扇区数、柱面数

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: 0x000df0a3

 

Device Boot Start End Blocks Id System

/dev/sda1 1 262 2097152 82 Linux swap / Solaris

Partition 1 does not end on cylinder boundary.

/dev/sda2 * 262 2611 18873344 83 Linux

 

3、RAID磁盘阵列

    RAID磁盘阵列(Redundant Arrays of Independent Disks)有"独立磁盘构成的具有冗余能力的阵列"之意。

磁盘阵列是由很多价格较便宜的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。

以4块1T的硬盘为例,常用raid

raid 0    条带卷 至少1块盘    

优点:成倍提高写入和读取速度,提高4倍,总容量4T

缺点:数据安全性较低

raid 1    镜像卷 只能两块盘    读写速度没有提升,总容量1T    

优点:安全性高    

缺点:性价比低

raid 5    至少三块盘    总容量3T,写入速度提高大概两倍,读取速度提高三倍,下图中HD4用来做校验盘

优点:比较折中,允许坏一块盘,数据安全性比raid0好

raid 1+0=10    至少需要4块盘,偶数    总容量2T,读写速度提升总盘数读取速度的一半,常用于数据库服务器

优点:同时满足速度和安全性

缺点:性价比低

 

4、LVM逻辑卷管理

LVM逻辑卷管理(Logical Volume Manager)是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。

优点:可灵活调整在线分区大小

缺点:磁盘读写性能会降低

 

5、在Linux下加SCSI硬盘

SCSI硬盘被系统识别的名称为sd,IDE硬盘被系统识别的名称为hd

虚拟机添加硬盘,重新开机,执行fdisk –l查看

[root@localhost ~]# fdisk -l

 

Disk /dev/sda: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

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: 0x00098b99

 

Device Boot Start End Blocks Id System

/dev/sda1 1 262 2097152 82 Linux swap / Solaris

Partition 1 does not end on cylinder boundary.

/dev/sda2 * 262 2611 18873344 83 Linux

 

Disk /dev/sdb: 1073 MB, 1073741824 bytes        #新加的硬盘

255 heads, 63 sectors/track, 130 cylinders

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: 0x00000000

 

6、fdisk对硬盘进行分区

fdisk /dev/sdb

常用参数

m print this menu            #打印帮助信息

n add a new partition            #增加一个分区

p print the partition table        #打印分区表

d delete a partition            #删除一个分区

w write table to disk and exit    #写入分区表到硬盘并退出

q quit without saving changes    #退出不保存

l list known partition types        #已知分区类型列表

t change a partition's system id    #改变系统分区的id号

Command (m for help): n

Command action

l logical (5 or over)            #逻辑分区

e extended                #扩展分区

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

fdisk非交互式分区:

echo -e "n\np\n1\n\n+10M\nn\ne\n2\n\n\nn\nl\n\n+10M\nn\nl\n\n\n\nw"|fdisk /dev/sdb

MBR    分区方案        MBR存储在0磁头(柱面)0磁道1扇区

在MBR的分区表中,逻辑分区不限数量,主分区最多4个,扩展分区只占一个主分区

4个主分区1-4,无扩展分区,扩展分区可以进行二次分区,扩展分区下进行二次划分的分区叫逻辑分区

分区类型:分区p,扩展分区e,逻辑分区l

3个主分区+1个扩展分区(3p+1e),

2个主分区+1个扩展分区(2p+1e)

1个主分区+1个扩展分区(1p+1e)

如果要分5个分区,可选分区方案

3p+2l

2p+3l

1p+4l

如果要分6个分区,可选分区方案

3p+3l

2p+4l

1p+5l

[root@localhost ~]# ls /dev/sd*

/dev/sda /dev/sda2 /dev/sdb1 /dev/sdb3 /dev/sdb6 /dev/sdb8

/dev/sda1 /dev/sdb /dev/sdb2 /dev/sdb5 /dev/sdb7

 

7、格式化分区

mkfs==make file system执行命令mkfs 默认磁盘格式为ext2 指定格式为mkfs.ext4 /dev/sdb1 在mkfs后跟 . + 文件系统格式

[root@localhost ~]# mkfs.ext4 /dev/sdb

mke2fs 1.41.12 (17-May-2010)

/dev/sdb is entire device, not just one partition!

Proceed anyway? (y,n) y

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

65536 inodes, 262144 blocks

13107 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=268435456

8 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

    32768, 98304, 163840, 229376

 

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 34 mounts or

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

 

8、挂载并查看

硬盘只有在挂载之后才能访问,挂载之前如果原来的路径/mnt/下有数据,在挂载之前不做任何操作,那么挂载之后查看挂载目录下的文件时,系统会遮挡掉原来存在的文件,这样原来的文件并不会被查看到,使用命令umount /mnt 卸载硬盘之后可以重新查看

[root@localhost ~]# ls /mnt/

[root@localhost ~]# cp /etc/passwd /mnt/

[root@localhost ~]# ls /mnt/

passwd

[root@localhost ~]# mount /dev/sdb1 /mnt/

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 18G 2.2G 15G 13% /

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

/dev/sdb1 107M 1.6M 100M 2% /mnt

[root@localhost ~]# ls /mnt/

lost+found

[root@localhost ~]# umount /mnt/

[root@localhost ~]# ls /mnt/

passwd

需要说明的是,如果不需要或者不对新添加的硬盘分区,可以跳过分区的步骤,直接进行格式化,挂载操作

 

9、不重启机添加新的硬盘

ls /sys/class/scsi_host/    查看主机总线号

echo "- - -" > /sys/class/scsi_host/host0/scan    重新扫描SCSI总线来添加设备

 

10、永久挂载磁盘的方法

方法一:

将挂载命令mount /dev/sdb /mnt写入/etc/rc.local中

[root@localhost ~]# vim /etc/rc.local

[root@localhost ~]# cat vim /etc/rc.local

cat: vim: No such file or directory

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

 

touch /var/lock/subsys/local

mount /dev/sdb /mnt

 

方法二:(推荐使用)

第1步:编辑/etc/fstab文件

[root@localhost ~]# vim /etc/fstab

#

# /etc/fstab

# Created by anaconda on Fri Mar 23 14:44:05 2018

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=fb3deb8a-e2ad-4482-9f53-15c6a17ae84f / ext4 defaults     1 1

UUID=2b0d405c-7e29-4310-ae56-e6045feae03b 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/sdb,也可以指定硬盘的UUID

建议:在实际中会随时加硬盘,盘符会改变,所以推荐使用UUID进行挂载,避免不必要的麻烦

第二列:指定挂载点

第三列:文件系统的类型

第四列:挂载的参数

第五列:是否备份    1

第六列:开机时是否检查磁盘fsck    1

第2步:将需要挂载的硬盘添加进去后执行命令mount –a    挂载成功

-a:将 /etc/fstab 中定义的所有档案系统挂上

mount -o remount,rw /mnt/sysimage

-o remount:将一个已经挂下的档案系统重新用不同的方式挂上

 

11、超过2T的硬盘分区方法

MBR类型的分区表最多支持2T的硬盘

parted解决分区超过2T的硬盘,用GPT类型的分区表

fdisk只支持MBR,需要w保存

parted    除了支持MBR,还支持GPT,立即生效

[root@localhost ~]# fdisk -l

 

Disk /dev/sda: 21.5 GB, 21474836480 bytes

255 heads, 63 sectors/track, 2610 cylinders

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: 0x00098b99

 

Device Boot Start End Blocks Id System

/dev/sda1 1 262 2097152 82 Linux swap / Solaris

Partition 1 does not end on cylinder boundary.

/dev/sda2 * 262 2611 18873344 83 Linux

 

Disk /dev/sdb: 3221.2 GB, 3221225472000 bytes

255 heads, 63 sectors/track, 391625 cylinders

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: 0x00000000

 

12、使用parted进行分区的步骤

参数:

(parted) help

align-check TYPE N check partition N for TYPE(min|opt)

alignment

check NUMBER do a simple check on the file system

cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another partition

help [COMMAND] print general help, or help on

COMMAND

mklabel,mktable LABEL-TYPE create a new disklabel (partition

table)

mkfs NUMBER FS-TYPE make a FS-TYPE file system on

partition NUMBER

mkpart PART-TYPE [FS-TYPE] START END make a partition

mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system

move NUMBER START END move partition NUMBER

name NUMBER NAME name partition NUMBER as NAME

print [devices|free|list,all|NUMBER] display the partition table,

available devices, free space, all found partitions, or a particular

partition

quit exit program

rescue START END rescue a lost partition near START

and END

resize NUMBER START END resize partition NUMBER and its file

system

rm NUMBER delete partition NUMBER#删除分区

select DEVICE choose the device to edit

set NUMBER FLAG STATE change the FLAG on partition NUMBER

toggle [NUMBER [FLAG]] toggle the state of FLAG on partition

NUMBER

unit UNIT set the default unit to UNIT

version display the version number and

copyright information of GNU Parted

parted /dev/sdb

第1步:mklabel gpt    创建分区表类型为gpt

第2步:创建一个分区mkpart,直接从%0回车,若要分多个区,则直接输入大小

[root@localhost ~]# parted /dev/sdb

GNU Parted 2.1

Using /dev/sdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel gpt

(parted) mkpart

Partition name? []? 1

File system type? [ext2]?

Start? 0%

End? 1000G

(parted) mkpart

Partition name? []? 2

File system type? [ext2]?

Start? 1000G

End? 2000G

(parted) mkpart

Partition name? []? 3

File system type? [ext2]?

Start? 2000G

End? 100%

(parted) P

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 3221GB

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

Partition Table: gpt

 

Number Start End Size File system Name Flags

1 1049kB 1000GB 1000GB 1

2 1000GB 2000GB 1000GB 2

3 2000GB 3221GB 1221GB 3

可以非交互式分区,直接在命令行执行命令及所有参数,便于多台服务器批量分区

parted /dev/sdb mkpart a ext4 0% 200

第3步:格式化

mkfs.ext4 /dev/sdb

[root@localhost ~]# ls /dev/sd

sda sda1 sda2 sdb sdb1 sdb2 sdb3

[root@localhost ~]# mkfs.ext4 /dev/sdb1        #中间过程省略

[root@localhost ~]# mkfs.ext4 /dev/sdb2        #中间过程省略

[root@localhost ~]# mkfs.ext4 /dev/sdb3        #中间过程省略

[root@localhost ~]# parted /dev/sdb

GNU Parted 2.1

Using /dev/sdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) p

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 3221GB

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

Partition Table: gpt

 

Number Start End Size File system Name Flags

1 1049kB 1000GB 1000GB ext4 1

2 1000GB 2000GB 1000GB ext4 2

3 2000GB 3221GB 1221GB ext4 3

 

(parted) q

[root@localhost~]#

第4步:挂载使用

mount /dev/sdb /mnt

mount /dev/sdb /mnt

[root@localhost ~]# ls /mnt/

a b c

[root@localhost ~]# mount /dev/sd

sda sda1 sda2 sdb sdb1 sdb2 sdb3

[root@localhost ~]# mount /dev/sdb1 /mnt/a

[root@localhost ~]# mount /dev/sdb2 /mnt/b

[root@localhost ~]# mount /dev/sdb2 /mnt/c

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 18G 2.2G 15G 13% /

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

/dev/sdb1 917G 72M 870G 1% /mnt/a

/dev/sdb2 917G 72M 870G 1% /mnt/b

/dev/sdb2 917G 72M 870G 1% /mnt/c

 

13、parted对MBR格式进行分区

第1步: parted /dev/sdb进入分区工具 ,mklabel创建分区表类型为msdos

第2步:创建一个分区mkpart,直接从%0回车,若要分多个区,则直接输入大小

[root@localhost ~]# parted /dev/sdb

GNU Parted 2.1

Using /dev/sdb

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) mklabel msdos

(parted) mkpart

Partition type? primary/extended? p

File system type? [ext2]?

Start? 0%

End? 1000G

(parted) mkpart

Partition type? primary/extended? p

File system type? [ext2]?

Start? 1000G

End? 2000G

(parted) mkpart

Partition type? primary/extended? p

File system type? [ext2]?

Start? 2000G

End? 100%

(parted) p

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 3221GB

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

Partition Table: msdos

 

Number Start End Size Type File system Flags

1 1049kB 1000GB 1000GB primary

2 1000GB 2000GB 1000GB primary

3 2000GB 3221GB 1221GB primary

第3步:格式化(同上)

mkfs.ext4 /dev/sdb

第4步:挂载使用(同上)

mount /dev/sdb /mnt

 

博主原创文章,转载请务必注明出处

Linux学习之十九-Linux磁盘管理的更多相关文章

  1. Linux学习(十四)磁盘格式化、磁盘挂载、手动增加swap空间

    一.磁盘格式化 分好去的磁盘需要格式化之后才可以使用.磁盘分区一般用mke2fs命令或者mkfs.filesystemtype.这个filesystemtype分为ext4,ext3,xfs等等.xf ...

  2. Linux学习总结(七)-磁盘管理 du df fdisk

    一 命令df df,即disk free,可用来查看当前系统的挂载情况,也可以用来查看整体磁盘的使用情况df 不带参数,默认以KB单位显示df -i -----查看inodes 使用情况,要清楚理解i ...

  3. Linux学习之十六-Linux用户管理

    Linux用户管理 Linux系统跟Windows系统一样,可以创建不同的用户,不同的用户组.在不同用户下使用系统具有相应的权限 创建一个普通用户时,会修改几个文件,拷贝一些初始文件到用户家目录中 修 ...

  4. Linux学习之十八-sudo分权管理

    sudo分权管理 1.为什么需要sudo? 当我的主机是多人共管的环境时,如果大家都使用 su 来切换成为 root 的身份,那么就得每个人知道 root 的密码,这样密码太多人知道可能会流出去,很不 ...

  5. Linux学习笔记(十三)磁盘管理(一):磁盘分区

    一.查看磁盘分区使用状况 df [选项] 其中,-l是默认选项 -a 会显示出包括0字节分区在内的所有文件系统分区 -t 后须跟一个参数,这个参数为文件系统的名字,用来在系统中查找属于该文件系统的分区 ...

  6. Linux学习(十九)软件安装与卸载(二)更换yum源

    一.简介 系统自带的源数量有限,而且是国外的源,速度肯定不如国内的.而断网的时候,本地源就可以派得上用处.而RPMForge源是传说中规模最大的一个源.那么接下来我们就来分别配一下本地源,国内源,RP ...

  7. linux学习第十九天 (Linux就该这么学) 结课了

    今天最后一天课程了,结课了,还有点舍不得那,在些也祝 李老师 事业蒸蒸日上,超来超好, 今天内容是部署了 LNMP 部署动态网站环境(linux  +nginx+mysql+php) 安装文件挺别多, ...

  8. Linux学习之十五-Linux文件特殊权限和附加权限

    Linux文件特殊权限和附加权限 1.特殊权限suid 范围:只能针对二进制命令文件 作用:让普通用户拥有二进制命令文件所有者的权限 举例1:普通用户使用passwd命令修改密码 cat /etc/s ...

  9. Linux学习之十四-Linux文件和目录权限

    Linux文件和目录权限 在Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录. 通过设定权限可以从以下三种访问方式限制访问权限:只允许用户自己访问:允 ...

随机推荐

  1. pd的django To do list 教程------(1)说明与展示

    1:开发环境:windows7+django1.8+Python2.7+mysql数据库 2:开发工具:pycharm 3:说明与展示 以上就是最后的页面,可以完成添加,删除,编辑,已完成(勾选che ...

  2. zf-关于改绍兴县2个简单的BUG却需要ORACLE数据库的感慨

    装了一天你的数据库,其实可以直接检出拿到后台代码,然后远程实施让他进项目,我在他的项目上找action,找图片都是一样的,有时候需求文档上也是会截图到action的,蛋疼,这么简单的方法我居然忘记了.

  3. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之二

    好了,废话也不多说,咱们直接来看看这款MVC的造型——你可能会大吼:“这……这特么的都是些什么鬼?” 靠,告诉你吧,我也不知道这都是些什么鬼,反正以前我是没有见过这样的MVC.咦,老纸的config文 ...

  4. 通过SDK和API获取阿里云RDS的监控数据

    阿里云的RDS自带的监控系统获取数据不怎么直观,想要通过API获取数据通过zabbix显示,因为网上资料缺乏和其他一些原因,获取API签名很困难,但使用阿里云的SDK可以完美避开获取签名的步骤. 阿里 ...

  5. 使用百度ueditor的插件使得代码高亮显示

    一.在show.html模板中,引入ueditor的插件,并调用 <link rel="stylesheet" href="__ROOT__/Data/uedito ...

  6. ArrayList源码理解

    ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Col ...

  7. cocos 水果机,老Tiger虎机流水灯,博彩大转盘效果

    原(http://www.cnblogs.com/zisou/p/cocos2d-xZhuanpan.html) 博彩大转盘,转盘抽奖的小系统,这是一个很有意思的游戏模块,游戏中增加这样一些趣味的小模 ...

  8. HDU ACM 1869 六度分离(Floyd)

    六度分离 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  9. lapis 项目添加prometheus 监控集成grafana

    操作很简单,主要是进行界面的配置以及prometheus 服务的配置, 可以和https://www.cnblogs.com/rongfengliang/p/10074044.html &&a ...

  10. Silverlight中关于ComboBox的各种使用

    前端放置了几个ComboBox的控件. <Grid x:Name="LayoutRoot" Background="White"> <Comb ...