linux partition

本文讨论了在Linux系统中正确设置磁盘分区的重要性和好处,包括提高安全性、效率、备份与恢复等,并提供了推荐的分区方案及如何限制特定文件系统的增长。

The importance of Linux partitions


Disk partitioning is the creation of separate divisions of a hard disk drive using partition editors such as fdisk. Once a disk is divided into several partitions, directories and files of different categories may be stored in different partitions.

Many new Linux sys admin (or Windows admin) create only two partitions / (root) and swap for entire hard drive. This is really a bad idea. You need to consider the following points while partitioning disk.

Purposes for Disk Partitioning

An operating system like Windows / Linux can be installed on a single, unpartitioned hard disk. However, the ability to divide a hard disk into multiple partitions offers some important advantages. If you are running Linux on server consider following facts:

  • Ease of use – Make it easier to recover a corrupted file system or operating system installation.
  • Performance – Smaller file systems are more efficient. You can tune file system as per application such as log or cache files. Dedicated swap partition can also improve the performance (this may not be true with latest Linux kernel 2.6).
  • Security – Separation of the operating system files from user files may result into a better and secure system. Restrict the growth of certain file systems is possible using various techniques.
  • Backup and Recovery – Easier backup and recovery.
  • Stability and efficiency – You can increase disk space efficiency by formatting disk with various block sizes. It depends upon usage. For example, if the data is lots of small files, it is better to use small block size.
  • Testing – Boot multiple operating systems such as Linux, Windows and FreeBSD from a single hard disk.


File systems that need their own partitions
PartitionPurpose
/usrThis is where most executable binaries, the kernel source tree and much documentation go.
/varThis is where spool directories such as those for mail and printing go. In addition, it contains the error log directory.
/tmpThis is where most temporary data files stored by apps.
/bootThis is where your kernel images and boot loader configuration go.
/homeThis is where users home directories go.

Let us assume you have 120 GB SCSI hard disk with / (root) and swap partitions only. One of user (may be internal or external or cracker ) runs something which eats up all your hard disk space (DoS attack). For example, consider following tiny script that user can run in /tmp directory:

#!/bin/sh
man bash > $(mktemp)
$0

Anyone can run above script via cron (if allowed), or even with nohup command:
$ nohup bad-script &

The result can be a total disaster as entire file system comes under Denial of Service attack. It will even bypass the disk quota restriction. One of our Jr. Linux sys admin created only two partition. Later poorly written application eats up all space in /var/log/. End result was memo for him (as he did not followed internal docs that has guidelines for partition setup for clients server). Bottom line create the partition on Linux server.

If you do not have a partition schema, than following attacks can take place:

  1. Runaway processes.
  2. Denial of Service attack against disk space (see above example script).
  3. Users can download or compile SUID programs in /tmp or even in /home.
  4. Performance tuning is not possible.
  5. Mounting /usr as read only not possible to improve security.
  6. All of this attack can be stopped by adding following option to /etc/fstab file:
  • nosuid – Do not set SUID/SGID access on this partition
  • nodev – Do not character or special devices on this partition
  • noexec – Do not set execution of any binaries on this partition
  • ro – Mount file system as readonly
  • quota – Enable disk quota

Please note that above options can be set only, if you have a separate partition. Make sure you create a partition as above with special option set on each partition:

  • /home – Set option nosuid, and nodev with diskquota option
  • /usr – Set option nodev
  • /tmp – Set option nodev, nosuid, noexec option must be enabled

For example entry in /etc/fstabe for /home should read as follows:

/dev/sda1  /home          ext3    defaults,nosuid,nodev 1 2

Here is mount command output from one of my OpenBSD production server:

/dev/wd0a on / type ffs (local)
/dev/wd1a on /home type ffs (local, nodev, nosuid, with quotas)
/dev/wd0d on /root type ffs (local)
/dev/wd0e on /usr type ffs (local, nodev)
/dev/wd0f on /tmp type ffs (local, nodev)
/dev/wd0h on /var type ffs (local, nodev, nosuid)
/dev/wd0g on /var/log type ffs (local, nodev)

How do I obtain information about partitions?

There are several ways that information about partitions can be obtained on Linux / UNIX like operating systems.

List partitions:

fdisk -l

Report file system disk space usage:

df -h
OR
df -k

Display partition mount options including mount points

mount
Sample output:

/dev/sda2 on / type ext3 (rw,relatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
/proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
/dev/sda1 on /media/sda1 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda5 on /share type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sdb2 on /disk1p2 type ext3 (rw,relatime,errors=remount-ro)
securityfs on /sys/kernel/security type securityfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/vivek/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=vivek)
Display / edit file system configuration options

less /etc/fstab
or
vi /etc/fstab

Quickly remount /usr in ro mode

mount -o remount, ro /usr

Quickly mount all file system configured in /etc/fstab

mount -a

References:

### Linux 分区管理与概念 在 Linux 系统中,分区(partition)是指将硬盘划分为多个逻辑部分的过程。每个分区可以独立格式化并挂载为文件系统的一部分。这种设计有助于提高磁盘空间的利用率、数据的安全性和系统的性能。 #### 1. 分区的基本概念 Linux 中的分区通常通过设备文件表示,例如 `/dev/sda1` 表示第一个 SATA 硬盘的第一个分区。分区的主要类型包括主分区(Primary Partition)、扩展分区(Extended Partition)和逻辑分区(Logical Partition)。主分区直接存储数据,而扩展分区用于容纳逻辑分区[^2]。 - **主分区**:最多支持四个主分区。 - **扩展分区**:如果需要超过四个分区,则可以通过创建一个扩展分区来实现。 - **逻辑分区**:扩展分区内部可以包含多个逻辑分区。 #### 2. 分区工具 Linux 提供了多种工具来管理和操作分区: - **fdisk**:传统的分区工具,适用于 MBR 分区表。 - **gdisk**:用于 GPT 分区表的工具,功能类似于 fdisk。 - **parted**:支持更大的磁盘和更复杂的分区操作。 - **lsblk** 和 **df**:用于查看分区和文件系统的状态。 以下是一个使用 `fdisk` 创建新分区的示例: ```bash sudo fdisk /dev/sda ``` 在交互模式下,可以输入命令如 `n` 创建新分区,`p` 查看当前分区表,`w` 写入更改并退出。 #### 3. 文件系统与挂载 创建分区后,需要为其分配文件系统(如 ext4、xfs),然后将其挂载到指定的挂载点。例如: ```bash # 格式化分区为 ext4 sudo mkfs.ext4 /dev/sda1 # 挂载分区到 /mnt sudo mount /dev/sda1 /mnt ``` #### 4. 数据库分区的概念 在数据库领域,如引用[1]所述,IBM DB2 UDB 的 Data Partitioning Feature (DPF) 允许用户将数据库表分布在多个物理分区上,从而提升查询性能和可扩展性[^1]。这种技术类似于操作系统中的分区管理,但其目的是优化大规模数据处理。 #### 5. 监控分区使用情况 为了监控分区的使用情况,可以使用 `df` 命令: ```bash df -h ``` 上述命令将以人类可读的格式显示所有分区的使用情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值