linux 分区管理
1. 查看系统中硬盘的设备
[root@centos6 ~]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb
可以看出,系统有两块硬盘,sda 与 sdb,sda有是三个分区。
2. 查看系统分区
[root@centos6 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17941936 4095324 12928548 25% / tmpfs 514132 72 514060 1% /dev/shm /dev/sda1 487652 32421 429631 8% /boot
或者:
[root@centos6 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 4.0G 13G 25% / tmpfs 503M 72K 503M 1% /dev/shm /dev/sda1 477M 32M 420M 8% /boot [root@centos6 ~]#
注解:
1. 显示的只有sda硬盘的分区,因为sdb硬盘并没有分区且没有挂载到目录下。
2. 第一个命令df 显示一个 1K-blocks列,意思是,这个分区有多少个block块,一个block块是 8 * 521B,对于硬盘而言,最小单位是扇区,一个扇区是512个字节。块属于操作系统级别,操作系统在存储数据时,是一个块一个块的去存储。这样存储数据时效率高。
3. 硬盘分区
第一步:
[root@centos6 ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel with disk identifier 0x0b37e823. 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) WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help):
第二步:选择 n
Command (m for help): n Command action e extended # 扩展分区 p primary partition (1-4) # 主分区
第三步:选择 创建 主分区(p)
p Partition number (1-4):
第四步:输入分区编号 1
Partition number (1-4): 1 First cylinder (1-2610, default 1):
第五步:输入柱面 起始位置,默认为1, 默认即可,点击回车
First cylinder (1-2610, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610):
第六步:输入柱面 结束位置,可以输入柱面结束位置,也可以输入分区大小,因为柱面之间的位置就是你的分区大小
输入 +5G
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +5G
第七步:第一个分区,分区完成,按p查看
Command (m for help): p 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux Command (m for help):
继续输入 n 新建分区
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 # 输入分区编码 First cylinder (655-2610, default 655): # 输入柱面起始位置,不用输入,直接回车,会接着上一个区分的最后柱面位置,继续排,如上面结束时654,这次开始是655
Using default value 655
Last cylinder, +cylinders or +size{K,M,G} (655-2610, default 2610): +5G # 输入分区大小 Command (m for help): P # 分区完成,按p查看 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux Command (m for help):
继续输入 n 再分一个分区
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (1309-2610, default 1309): Using default value 1309 Last cylinder, +cylinders or +size{K,M,G} (1309-2610, default 2610): +5G Command (m for help): P 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux /dev/sdb3 1309 1962 5253255 83 Linux
上面已经分了3个主分区,下面分一个逻辑分区
Command (m for help): n Command action e extended p primary partition (1-4) e # 输入e 创建扩展分区 Selected partition 4 First cylinder (1963-2610, default 1963): # 这里直接回车 回车,表示将剩余的空间,全部分给扩展分区。 Using default value 1963 Last cylinder, +cylinders or +size{K,M,G} (1963-2610, default 2610): Using default value 2610 Command (m for help): p 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux /dev/sdb3 1309 1962 5253255 83 Linux /dev/sdb4 1963 2610 5205060 5 Extended # 扩展区分 Command (m for help):
以上扩展分区创建完成,扩展分区是不能使用,即不能就进行文件存储,需要在扩展区分的基础上创建逻辑分区。
继续...
Command (m for help): n First cylinder (1963-2610, default 1963): Using default value 1963 Last cylinder, +cylinders or +size{K,M,G} (1963-2610, default 2610): +1G Command (m for help): P 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux /dev/sdb3 1309 1962 5253255 83 Linux /dev/sdb4 1963 2610 5205060 5 Extended /dev/sdb5 1963 2094 1060258+ 83 Linux Command (m for help):
这里看一下,/dev/sdb5 这个分区的起始位置 是扩展分区起始位置一致,都为1963,因为扩展分区就是一个逻辑概念,不占用空间。
继续创建扩展分区
Command (m for help): n First cylinder (2095-2610, default 2095): Using default value 2095 Last cylinder, +cylinders or +size{K,M,G} (2095-2610, default 2610): +1G Command (m for help): P 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux /dev/sdb3 1309 1962 5253255 83 Linux /dev/sdb4 1963 2610 5205060 5 Extended /dev/sdb5 1963 2094 1060258+ 83 Linux /dev/sdb6 2095 2226 1060258+ 83 Linux Command (m for help): /dev/sdb5
继续...
Command (m for help): n First cylinder (2227-2610, default 2227): Using default value 2227 Last cylinder, +cylinders or +size{K,M,G} (2227-2610, default 2610): # 直接回车 回车 将剩余的空间全部分给这个分区 Using default value 2610 Command (m for help): p 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: 0x1b5d0db0 Device Boot Start End Blocks Id System /dev/sdb1 1 654 5253223+ 83 Linux /dev/sdb2 655 1308 5253255 83 Linux /dev/sdb3 1309 1962 5253255 83 Linux /dev/sdb4 1963 2610 5205060 5 Extended /dev/sdb5 1963 2094 1060258+ 83 Linux /dev/sdb6 2095 2226 1060258+ 83 Linux /dev/sdb7 2227 2610 3084448+ 83 Linux Command (m for help):
第八步:分区完成之后 按 w 保存
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
最后 输入命令:partprobe 跟新分区列表
[root@centos6 ~]# partprobe Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (设备或资源忙). As a result, it may not reflect all of your changes until after reboot. Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。 Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。 Error: 无效的分区表 - /dev/sr0 出现递归分区。 [root@centos6 ~]#
最后查看你的分区情况
如果不显示,重启系统
[root@centos6 ~]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5 /dev/sdb6 /dev/sdb7
4. 格式化分区,制作文件系统
磁盘分区之后,并不能使用,需要将分区格式化,格式化的过程是为分区写入文件系统。
[root@centos6 ~]# mkfs.ext4 /dev/sdb3 mke2fs 1.41.12 (17-May-2010) 文件系统标签= 操作系统:Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 328656 inodes, 1313313 blocks 65665 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=1346371584 41 block groups 32768 blocks per group, 32768 fragments per group 8016 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 正在写入inode表: 完成 Creating journal (32768 blocks): 完成 Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@centos6 ~]#
将建的分区一 一格式化,扩展分区不需要格式化
5. 挂载
将格式化的分区挂载的目录下,分区才能被真正使用,进行文件读写。
挂载定义: 建立分区与目录映射关系的过程。
[root@centos6 /]# mount /dev/sdb2 /s2 [root@centos6 /]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17941936 4095632 12928240 25% / tmpfs 514132 72 514060 1% /dev/shm /dev/sda1 487652 32421 429631 8% /boot /dev/sdb2 5039624 10264 4766700 1% /s2
卸载:
[root@centos6 /]# umount /s2 [root@centos6 /]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda3 17941936 4095632 12928240 25% / tmpfs 514132 72 514060 1% /dev/shm /dev/sda1 487652 32421 429631 8% /boot
umount -l /s2 # 强制卸载
6. 设置开始自动挂载
上面分区挂载到对应的目录下之后,如果系统重启,系统就会将挂载取消,因此可以设计开始时,自动挂载
vim /etc/fstab 在/etc/fstab 增加一行 /dev/sdb1 /test ext4 defaults 0 0
7. 思考
例如,
[root@centos6 /]# cd /opt [root@centos6 opt]# ls rh [root@centos6 opt]# touch a.txt [root@centos6 opt]# ls /opt a.txt rh
touch a.txt 的过程,文件到底存放到哪去了?
系统会找其父目录opt有没有映射原设备,如果没有找opt的上一级目录 / 有没有源设备,而 / 挂载的 /dev/sda3 分区下,那么a.txt 就存放到 /dev/sda3 这个源设备下(分区)。看样子文件都存放在目录下,其实都是存放在目录对应的源设备下。
如果opt有源设备,那么文件就存放在opt对应的源设备下。
那么 ls /opt 显示的就是 optt对应的源设备下 或者 / 对应的源设备下的内容