磁盘/硬盘/disk是一样的,不同于内存的是容量比较大
尺寸 1.8、 2.5、 3.5 英寸
接口 早期IDE——现在SATA接口
转速 5400、 7200、 10000、 15000rpm
厂商 西部数据、 希捷、 三星/日立/金士顿
盘片、柱面、扇区、磁道
扇区:将一个盘面分为若干内角相同的扇形,这样盘面上的每个磁道就被分为若干段圆弧,每段圆弧叫做一个扇区
kernel对不同接口的硬盘命名方式 : RHEL7/centos7
IDE(并口)
/dev/hda
古老
SATA(串口)
/dev/sda
主引导记录,是位于磁盘最前端的一段引导
MBR支持最大的磁盘容量是2TB。设计时分配4个分区
如果希望超过4个分区,需放弃主分区,改为扩展分区和逻辑分区
扩展分区是不能放东西的,需要划分逻辑分区才能放东西
只有主分区才能装系统
一般是三个主分区,一个扩展分区(N个逻辑分区)。而不是一个主分区,一个扩展分区。主分区不用省。
全局唯一标识分区表
支持大于2T的硬盘,支持128个分区
修改虚拟机设置直接添加,磁盘越大格式化越慢,记得要关机
分区(MBR/GPT)->格式化/文件系统Filesystem->挂载mount
分别对应:隔间->放家具/打造柜子->加个门/目录
//b代表block,块,意思之前的计算机很大块
[root@192 ~]# ll /dev/sd*
brw-rw----. 1 root disk 8, 0 1月 22 23:36 /dev/sda
brw-rw----. 1 root disk 8, 1 1月 22 23:36 /dev/sda1
brw-rw----. 1 root disk 8, 2 1月 22 23:36 /dev/sda2
brw-rw----. 1 root disk 8, 16 1月 22 23:36 /dev/sdb
brw-rw----. 1 root disk 8, 32 1月 22 23:36 /dev/sdc
brw-rw----. 1 root disk 8, 48 1月 22 23:36 /dev/sdd
brw-rw----. 1 root disk 8, 64 1月 22 23:36 /dev/sde
brw-rw----. 1 root disk 8, 80 1月 22 23:36 /dev/sdf
brw-rw----. 1 root disk 8, 96 1月 22 23:36 /dev/sdg
[root@192 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sdc 8:32 0 5G 0 disk
sdd 8:48 0 5G 0 disk
sde 8:64 0 5G 0 disk
sdf 8:80 0 5G 0 disk
sdg 8:96 0 5G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64
MBR:把房子分为卧室和客厅
[root@192 ~]# fdisk /dev/sdb
//启动分区工具,进入会话模式
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xd7b84c9f 创建新的 DOS 磁盘标签。
//欢迎界面
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
//选择主分区或者扩展分区
分区号 (1-4,默认 1):1
//选择分区号
起始 扇区 (2048-10485759,默认为 2048):
//选择磁盘开始的扇区,0-2048是个小账本(mbr)
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
//选择磁盘分区结束的扇区,即分区大小
//实际环境根据磁盘划分,如4T磁盘,可以500G一个分区
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):w
//输入w(write)保存分区信息,自动退出分区工具
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# partprobe /dev/sdb
//刷新分区表
[root@192 ~]# fdisk -l /dev/sdb
//查看分区结果
磁盘 /dev/sdb:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xd7b84c9f
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
help | 命令操作(用n进入) |
---|---|
a | toggle a bootable flag |
b | edit bsd disklabel |
c | toggle the dos compatibility flag |
d | delete a partition 删除一个分区 |
g | create a new empty GPT partition table |
G | create an IRIX (SGI) partition table |
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) |
mkfs.ext4 /dev/sdb1
或mkfs -t ext4 /dev/sdb2
extend4扩展文件系统第四代。是文件系统的类型
/dev/sdb1第二块串口硬盘的第一个分区。
准备格式化了
[root@192 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)//一个格子的大小block 4k
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
临时挂载随便放,永久挂载要放到/etc/fstab
手动挂载
[root@192 ~]# mkdir /mnt/disk1
//创建挂载点,一个分区一个挂载点(可以放在任意位置)
[root@192 ~]# mount -t ext4 /dev/sdb1 /mnt/disk1
[root@192 ~]# df -hT
//h是人性化显示单位
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 974M 0 974M 0% /dev
tmpfs tmpfs 991M 0 991M 0% /dev/shm
tmpfs tmpfs 991M 11M 980M 2% /run
tmpfs tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 4.7G 13G 28% /
/dev/sda1 xfs 1014M 211M 804M 21% /boot
tmpfs tmpfs 199M 52K 198M 1% /run/user/0
/dev/sr0 iso9660 4.4G 4.4G 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 ext4 2.0G 6.0M 1.8G 1% /mnt/disk1
挂载之后写入挂载点(相当于上文中的/mnt/disk1
)的文件就相当于写入了sdb1。
挂载相当于一个入口,用umount
取消挂载后,文件还在硬盘里面,再次挂载就可以读取。
目的:管理磁盘的一种方式,性质与基本磁盘无异
特点:随意扩张大小
物理卷(Physical Volume):将物理磁盘,转换成物理卷-PV
[root@192 ~]# pvcreate /dev/sdf
Physical volume "/dev/sdf" successfully created.
卷组 (Volume Group):创建卷组-VG
[root@192 ~]# vgcreate vg1 /dev/sdf
Volume group "vg1" successfully created
逻辑卷(Logical Volume)
//指定大小,单位M,G
//创建逻辑卷 -L 大小 -n 卷名 vg1 组名(lv1是卷名)
[root@192 ~]# lvcreate -L 4G -n lv1 vg1
Logical volume "lv1" created.
mkfs.ext4 /dev/vg1/lv1
相当于初始化,其中/dev/卷族名/逻辑卷名
mkdir /mnt/lv1
mount /dev/vg1/lv1 /mnt/lv1
命令:dd if=/dev/zero of=/mnt/lv1/1.txt bs=1M count=5000
可以写入一堆文件
扩大VG vgextend
环境:/dev/vg1
容量由5G扩容到10G
[root@192 ~]# pvcreate /dev/sdg
Physical volume "/dev/sdg" successfully created.
[root@192 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdf vg1 lvm2 a-- <5.00g 1020.00m
/dev/sdg lvm2 --- 5.00g 5.00g
[root@192 ~]# vgextend vg1 /dev/sdg
Volume group "vg1" successfully extended
[root@192 ~]# vgs//查看VG空间
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
vg1 2 1 0 wz--n- 9.99g 5.99g
[root@192 ~]# lvextend -L +4G /dev/vg1/lv1//扩容LV
Size of logical volume vg1/lv1 changed from 4.00 GiB (1024 extents) to 8.00 GiB (2048 extents).
Logical volume vg1/lv1 successfully resized.
[root@192 ~]# df -hT | tail -1
/dev/mapper/vg1-lv1 ext4 3.9G 16M 3.6G 1% /mnt/lv1
[root@192 ~]# resize2fs /dev/vg1/lv1//fs扩容
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg1/lv1 is mounted on /mnt/lv1; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg1/lv1 is now 2097152 blocks long.
[root@192 ~]# df -hT | tail -1
/dev/mapper/vg1-lv1 ext4 7.8G 18M 7.4G 1% /mnt/lv1
[root@192 ~]# umount /dev/vg1/lv1
[root@192 ~]# lvremove /dev/vg1/lv1
Do you really want to remove active logical volume vg1/lv1? [y/n]: y
Logical volume "lv1" successfully removed
[root@192 ~]# vgremove /dev/vg1
Volume group "vg1" successfully removed
[root@192 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdd lvm2 --- 5.00g 5.00g
/dev/sde lvm2 --- 5.00g 5.00g
[root@192 ~]# pvremove /dev/sdd /dev/sde
Labels on physical volume "/dev/sdd" successfully wiped.
Labels on physical volume "/dev/sde" successfully wiped.
[root@192 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
[root@192 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
[root@192 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
作用:"提升"内存的容量,防止OOM(Out Of Memory)
swap大小
推荐为内存的2倍
4-16G:最小4G交换空间
16-64G:最小8G交换空间
64-256G:最小16G交换空间
[root@192 ~]# free -m
total used free shared buff/cache available
Mem: 1980 884 281 24 814 900
Swap: 2047 0 2047
[root@192 ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p
//此处省略磁盘信息
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 4196351 2097152 83 Linux swap / Solaris
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):82
//82是Linux的swap交换,原来的83也可以,但是最好用82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
//此处省略磁盘信息
设备 Boot Start End Blocks Id System
/dev/sdc1 2048 4196351 2097152 82 Linux swap / Solaris
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# partprobe /dev/sdc
[root@192 ~]# ll /dev/sdc*
brw-rw----. 1 root disk 8, 32 1月 24 16:52 /dev/sdc
brw-rw----. 1 root disk 8, 33 1月 24 16:52 /dev/sdc1
[root@192 ~]# mkswap /dev/sdc1
mkswap: /dev/sdc1: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=ac39f991-7bd6-4049-aaff-5b81b7c91cde
[root@192 ~]# swapon /dev/sdc1
[root@192 ~]# free -m
total used free shared buff/cache available
Mem: 1980 886 278 24 815 898
Swap: 4095 0 4095
//交换内存变大了2G
[root@192 ~]# swapoff /dev/sdc1
[root@192 ~]# free -m
total used free shared buff/cache available
Mem: 1980 884 279 24 816 900
Swap: 2047 0 2047
文件系统类型 Windows:FAT16 FAT32 NTFS
Linux:EXT3 EXT4 XFS
索引:目录,字典的前十几页
索引(index)文件系统
EXT3:文件系统最大16TB
EXT4:文件系统最大16TB
XFS:文件系统最大100TB
记录文件的属性(文件的元数据metadata)
元数据:文件的属性,大小,权限,属主,属组,连接数,块数量,块编号
一个文件占用一个inode,同时记录此文件数据所在的block number.
inode大小为128bytes。
inode决定了文件系统中文件的数量
存储文件的实际数据
实际存储文件的内容,若文件较大,会占用多个block
block大小:默认为4k
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
[root@192 disk1]# df -i | tail -1
/dev/sdb1 65536 12 65524 1% /mnt/disk1
语法:ln -s /file1 /root/桌面/file11
[root@192 disk1]# ll /root/桌面/file11
lrwxrwxrwx. 1 root root 6 1月 25 20:07 /root/桌面/file11 -> /file1
//可以看出链接数是1,软链接只能是1
总结:
df -k
观察硬链接数量无变化[root@192 disk1]# echo 22 > /file2
[root@192 disk1]# ln /file2 /file2-h1
[root@192 disk1]# ls -l /file2 /file2-h1
-rw-r--r--. 2 root root 3 1月 25 20:19 /file2
-rw-r--r--. 2 root root 3 1月 25 20:19 /file2-h1
//链接数是几代表了硬链接了几个
[root@192 disk1]# rm -rf /file2
[root@192 disk1]# cat /file2-h1
22
//不依赖于源文件
总结
廉价磁盘冗余阵列(Redundant Array of Independent Disks)
作用:容错、提升读写速率
类型 RAID0 RAID1 RAID5
条带集 2块硬盘以上,读写速率快100%*N,但不容错
镜像集 2块磁盘,容量50%,读写速率一般,容错
带奇偶校验条带集 3块硬盘以上,利用率(n-1)/n读写速率快,容错
mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd{c,d,e,f}
mkdir /mnt/raid5
mount /dev/md0 /mnt/raid5
mdadm -D /dev/md0
//-D查看详细信息