linux 系统中所有的硬件设备都是通过文件的方式来使用和表达的。位于/dev目录下的。成为设备文件。设备文件分为;
字符设备文件和块设备文件。字符设备文件也被称为"raw"设备文件。比如打印机。终(TTY)。
块设备文件。是以数据块的方式存取的。系统通过块设备存取文件的时候,先从内存的buffer中读或写数据,而不是直接传送数据到物理磁盘。这样提高了磁盘的I/O性能。
企业常用硬盘:sas stat ssd
linux磁盘设备常用方案:主设备号+次设备号+磁盘分区编号
1.主设备号代表设备的类型:比如:hd 代表IDE硬盘。sd代表SCSI硬盘。tty代表终端设备。
2.次设备号代表相同设备的序号:‘a-z‘就表示设备的序号。例如:/dev/sda 和 /dev/sdb 就表示第一和第二块
SCSI 硬盘。当然在IDE硬盘中也可能出现系统只有一块磁盘。却显示 /dev/hdb。这与硬盘的跳线有关。
3.磁盘分区号:用x 表示在每块磁盘上划分的磁盘分区编号。
比如 /dev/sdbx 就表示第二块SCSI硬盘的第“x“个分区。
磁盘的使用
linux下设备对应的是硬盘分区,对任何设备都需要通过挂载的方式实现的要完成挂载,需要3个条件:
1.挂载磁盘分区的文件系统类型。
2.要挂载分区对应的设备文件
3.已经存在的目录作为挂载点
常用于硬盘的命令:fdisk (应用范围:容量小于 2T) 分为命令行模式和交互模式(一般进入磁盘的操作都是交互模式)
查看系统的磁盘设备:# fdisk -l (可以查看系统上的硬盘信息)
# fdisk /dev/sda (如果后面接具体的硬盘就是对硬盘的操作)当然所有的操作前必须卸载硬盘。
挂载命令:
# mount /dev/sdbx /data 挂载分区
# mount /dev/cdrom /mnt 挂载光盘
# mount -t ntfs-3g /dev/sdc /data1 挂载移动硬盘需要指定文件类型 -t ntfs-3g
卸载命令:
# umount /mnt 卸载分区
如果硬盘故障怎么修复;
进入 linux rescure模式下:执行 fsck /dev/sdb -y (fsck 一般会自动识别文件类型)
查看分区的情况:
# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 29G 6.0G 22G 22% /
tmpfs tmpfs 495M 0 495M 0% /dev/shm
/dev/sda1 ext4 194M 29M 155M 16% /boot
/dev/sda5 ext4 48G 185M 46G 1% /data
这里密切关注 Use% 代表磁盘已经使用的空间。如果为100%,则表示磁盘满了。系统运行受阻。
磁盘分区的划分标准:
磁盘分区由主分区,扩展分区和逻辑分区组成。
在一块硬盘上,主分区最大个数是4个,扩展分区算是一个主分区。扩展分区可以建立多个逻辑分区。
主分区包括扩展分区编号:1-4.逻辑分区从5开始。逻辑分区建立在扩展分区的基础上而非主分区上。
扩展分区可以理解为逻辑分区的"容器"。实际使用的是主分区和逻辑分区。
下面看一下 /dev/sda 硬盘的情况:
# fdisk -l
Disk /dev/sda: 85.9 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 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: 0x000411d2
Device Boot Start End Blocks Id System
/dev/sda1 * 1 26 204800 83 Linux
/dev/sda2 26 3851 30720000 83 Linux
/dev/sda3 3851 4106 2048000 82 Linux swap / Solaris
/dev/sda4 4106 10444 50912256 5 Extended
/dev/sda5 4106 10444 50911232 83 Linux
这里的start 和end 的单位是柱面。 Id 选项 83代表主分区和逻辑分区
82 代表swap交换分区 5代表 扩展分区(扩展分区不能使用。只是作为逻辑分区的容器)
8e 代表lvm 分区 ( 7 NTFS 分区)
硬盘分区:
# fdisk dev/sdb
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)
这里日常用到的是:
d :删除一个分区
选定分区号即可。
n : 增加一个新的分区包括2个选项 e 扩展分区 p 主分区
e extended
p primary partition (1-4)
还有就是设定大小的时候,如果不输入数值。默认占有剩余所有的空间。
p :显示分区信息
q : 退出交互操作,不保存操作的内容
t : 改变分区类型
输入后提示输入L 查看分区标识。设定相应的类型
w :写入飞哪去表信息到硬盘,保存操作退出
创建分区实例:
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (263-2610, default 263):
Using default value 263
Last cylinder, +cylinders or +size{K,M,G} (263-2610, default 2610): +2G
需要注意的是这里:如果想分很多分区的话。第四个一定是 extended (扩展分区)
因为系统只支持4个主分区。(扩展分区可以算作一个主分区)
多余4个的分区可以在逻辑分区表示(前提是建立在扩展分区基础上的)
创建完成,可以w 退出
如何使用,创建的分区?
格式化分区,然后挂载磁盘。
# fdisk /dev/sdb -l (查看磁盘分区情况)
Disk /dev/sdb: 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: 0x5ab8b6fd
Device Boot Start End Blocks Id System
/dev/sdb1 1 654 5253223+ 83 Linux
/dev/sdb2 655 1177 4200997+ 83 Linux
/dev/sdb3 1178 1570 3156772+ 83 Linux
/dev/sdb4 1571 2610 8353800 5 Extended
/dev/sdb5 1571 1832 2104483+ 83 Linux
/dev/sdb6 1833 2610 6249253+ 83 Linux
# mkfs.ext4 /dev/sdb6 (格式化文件系统位ext4)
# mkdir /sdb6 (创建挂载点)
# mount /dev/sdb6 /sdb6 (挂载分区)
# df -hT | grep sdb6 (查看结果)
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb6 ext4 5.9G 140M 5.5G 3% /sdb6
如果磁盘大于2T。使用parted 工具。可以完成超大磁盘分区。
既然分区大了,那么分区表也做了响应的调整。
分区表分为:MBR 和GPT 两种。
MBR 支持2T以下硬盘容量。最多支持4个主分区或3个主分区+ 1个扩展分区。正式因为这个原因:
我们要使用多个分区。就必须利用扩展分区作为容器扩容。
GPT 支持大于2T 的硬盘容量。最多128个分区。最大达到18EB。
首先安装parted # yum install parted -y
parted 的使用:
# parted (进入parted 分区交互模式)
GNU Parted 2.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb (切换磁盘分区 sda是系统盘不可以分的。sdb 是新加测试硬盘)
Using /dev/sdb
(parted) p free (p是print的简写。查看磁盘情况。free 显示剩余空间)
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdoc
(parted) mklabel gpt (前面说了要想划分更大的分区。分区表一定要改变。mklabel 创建分区表类型)
Warning: Partition(s) on /dev/sdb are being used.
Ignore/Cancel? Ignore (这里是测试实验。所以选择忽略。真实环境如果磁盘又数据或挂载选择 Cancel)
Yes/No? yes (是否进行执行)
(parted) mkpart primary 0gb 15gb (创建主分区。开始位置,结束位置。硬盘大小 15G)
(parted) mkpart primary 15gb 21.5gb (创建第二个主分区。开始位置15G 结束位置21.5G 。大小位6.5G)
(parted) rm 2 (删除第二个主分区)
(parted) quit (离开 parted 交互模式)
然后就是格式化分区。挂载和fdisk无异。
这里查看的时候建议用:
# parted /dev/sdb p
不建议用 # fdisk /dev/sdb -l (这种方式不支持gpt 分区表。所以显示的分区是一个整体)