ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

パーティション/ファイルシステム管理コマンド

使う機会が少ないコマンド類。

fdisc - パーティションの作成、情報表示、削除、変更コマンド。

USB Linux 作るときにつかったけど忘れた。理解してやらないと非常に危険。
以下、/dev/sda にパーティションを作成する。

# fdisk /dev/sda
コマンド (m でヘルプ): p           <-入力
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System

コマンド (m でヘルプ): n           <-入力
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p                                  <-入力
領域番号 (1-4): 3                  <-入力
最初 シリンダ (1-130, default 1):  <-[ENTER]
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-130, default 130): +500M  <-入力

コマンド (m でヘルプ): w           <-入力
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

# fdisk -l

Disk /dev/hda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         978     7855753+  83  Linux
/dev/hda2             979        1043      522112+  82  Linux swap / Solaris

Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sda3               1          62      497983+  83  Linux

パーティション上にファイルシステムを作成

パーティションを切っただけではセクタを指定してデータを読み出すことになるが、ファイルシステムを作ることでディレクトリ名・ファイル名でデータを扱うことができる。
Linuxファイルシステムは 実態データ と ファイルの属性や管理情報(iノード = Index Node) を別々に保存しており、ファイルやディレクトリを作成するたびに iノードが使われていく。

mkfs - ファイルシステム作成のフロントエンド

パラメータ: -t に作成したいファイルシステムを与える。
デフォルトは ext2。以下は ext3ファイルシステムを /dev/sda3 に作成する。

# mkfs -t ext3 /dev/sda3
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
124928 inodes, 497980 blocks
24899 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
61 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

mkswap - スワップ領域の作成

通常スワップ領域は独立したパーティション上に行う。
システムには最低1つのスワップ領域が必要。

# mkswap /dev/sda4 
Setting up swapspace version 1, size = 106921 kB
mount / umount - マウントとアンマウント

苦労して作ったファイルシステムをマウントしないなんて武器も防具も装備せずにゾーマを倒すくらい無駄。
デバイス名とマウントポイントを引数で渡すことでファイルの入出力が可能な状態となる。

# mount -t ext3 /dev/sda3 /data
# df -m
Filesystem           1M-ブロック    使用   使用可 使用% マウント位置
/dev/hda1                 7432      1197      5852  17% /
tmpfs                       93         0        93   0% /dev/shm
/dev/sda3                  471        11       437   3% /data

umount を unmount とタイプミスした場合は極刑とする。

マウント頻度の高いファイルシステムは /etc/fstab に書いておく。

/etc/fstab 書式
書式) デバイスファイル名 マウントポイント ファイルシステムの種類 マウントオプション dumpフラグ ブート時fsck
例) /dev/sda3 /data ext3 exec,nouser,ro,suid 1 2
ファイルシステムの種類
種類 説明
ext2 Linux標準のファイルシステム
ext3 ext2ジャーナリング機能を+
reiserfs 高速なジャーナリングファイルシステム
xfs SGIが開発した 〃
jfs IBM
iso9660 CD-ROM
msdos MS-DOS
vfat Windows 9x
nfs Network File System
ほか wiki:ファイルシステム
主なマウントオプション
オプション 説明
defaults デフォルト(async,auto,dev,exec,nouser,rw,suid)
async 非同期入出力
auto mount -a でマウントする
noauto mount -a でマウントしない
exec バイナリ実行を許可
noexec バイナリ実行を許可しない
rw 読み書きを許可
ro 読み出し専用
unhide 長さ1.56メートルではない。隠しファイルも表示
suid SUID、SGIDを可能にする
user 一般ユーザによるマウントを許可
users マウントしたユーザ以外のアンマウントを許可
nouser 一般ユーザのマウントを許可しない
usrquota ユーザクォータを有効にする
grpquota グループクォータを有効にする

df / du - ディスクの利用状況確認

ファイルシステムの空き容量 は df コマンドを利用。iノードの使用状況も確認できる。

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda1             7.3G  1.2G  5.8G  17% /
tmpfs                  93M     0   93M   0% /dev/shm
/dev/sda3             471M   11M  437M   3% /data
# df -h -i
Filesystem            Iノード  I使用   I残り I使用% マウント位置
/dev/hda1               1.9M     38K    1.9M    2% /
tmpfs                    24K       1     24K    1% /dev/shm
/dev/sda3               122K      11    122K    1% /data

ファイルやディレクトリを占める容量を確認する場合は du コマンドを使う。

# du -a -b ~/
35      /root/.lesshst
24      /root/.bash_logout
176     /root/.bashrc
2134    /root/.bash_history
129     /root/.tcshrc
191     /root/.bash_profile
100     /root/.cshrc
6885    /root/

fsck - ファイルシステムのチェック

オプション: -t にチェックを行うファイルシステム名を与えるのでコマンドとしてはフロントエンドぽい。デフォルトは ext2
実行するときは対象とするファイルシステムをアンマウントするか、読み取り専用モードでマウントしておくべき。

# fsck -t ext3 -a /dev/sda3
fsck 1.39 (29-May-2006)
/dev/sda3: clean, 11/124928 files, 26310/497980 blocks

ディスククォータの管理

ディスク容量の制限を ユーザ/グループごとに管理できる。
ソフトリミットを超えるとユーザへ警告が発せられ、ソフトリミットを越えたまま一定期間を経過すると書き込めなくなる。
ハードリミットを越えた場合はそれ以上書き込みができない。
適用手順

  1. /etc/fstab にマウントオプションに「usrquota」を指定して記述。
  2. マウントする。
  3. クォータ制限をかけるファイルシステムの最上位に「aquota.user」ファイルを配置し、アクセス権限を設定する。
  4. quotacheck コマンドでデータベースを初期化。
  5. quotaon コマンドで有効化
  6. edquota コマンドでユーザごとのクォータを設定
  7. repquota コマンドで内容確認
  8. quota コマンドでディスクごと、ユーザごとのクォータ状況を表示します。

コレはめんどい…