パーティションとは?
用途別にストレージの中身を分割するようなイメージ。分割することで、ディスクの障害発生時に被害を最小限にしデータの圧迫を防ぐことができる。ストレージを複数のパーティションに分割することをパーティショニングという。
データのバックアップはパーティション単位で行われる
-
基本パーティション(物理パーティション)
1つのハードディスクにMBRだと最大4個、GPTだと最大128個作成することができる。また、それぞれのパーティションにはファイルシステムを作成することができ、ファイルシステムを作成することで、パーティション内でファイルやディレクトリのようなデータを扱うことができるようになる。
ハードディスクのデバイスファイル名:/dev/sda
基本パーティション:/dev/sda1~/dev/sda4
-
拡張パーティション
基本パーティションのうち1つだけ変更したもの。その中に更に複数の論理的なパーティションを作成して利用できるパーティション。以下のように設定される
ハードディスクのデバイスファイル名:/dev/sda
拡張パーティション:/dev/sda5~
・SCSIとは??
ハードディスクやDVDドライブ、テープドライブなど様々な周辺機器を接続するための一般的な規格。高速性や拡張性を要求されるサーバやワークステーション環境で利用されることがある
-
論理パーティション
拡張パーティション内に作成されたパーティションのこと。デバイスファイル名は、作成済み基本パーティションの数に関わらず、/dev/sda5
以降になる
パーティションタイプ
- 82:Linuxスワップパーティション
- 83:Linuxデータパーティション
- 8e:Linux LVMパーティション
パーティション設計
Linuxをインストールする際、HDDやSSDの中身をどのように区切るかというパーティション設計を行う必要がある。設計には「どのように分割するか」だけではなく、「各パーティションに割り当てる容量」も決めなければならない。その際2つのパーティションが必要になる
-
ルートパーティション
ルートファイルシステムに割り当てるパーティション(ルートディレクトリが格納されるパーティション)。システムが小さければ、障害時の復旧が容易になる -
スワップ領域
物理メモリが不足した際に仮想メモリ領域として利用するパーティションのこと。割り当てる容量の目安は物理メモリの1~2倍。
ノートPCのハイバネーション(休止状態)時にメモリ内容を保存するために使われる
パーティション | 内容 |
---|---|
/パーティション | ルートディレクトリが格納される領域。/etc,/bin,/sbin,/lib,/dev ディレクトリは必ず配置 |
/bootパーティション | ブートローダー関連のファイルやカーネルイメージなどシステム起動時に必要なファイルを配置する。目安は100MB程度 |
/homeパーティション | 一般ユーザーのデータを配置する。容量が大きくなりやすく、バックアップ頻度も多いため、独立したパーティションにすることが多い |
/var(variable)パーティション | ログファイルなど更新頻度が高いファイルを配置する。ファイルサイズが急激に大きくなることがあるため、独立したパーティションにすることが多い |
/usr(user services and routines)パーティション | プログラムやライブラリ、ドキュメントなどユーザー間で共有するデータを配置する。独立したパーティションにすることが多い |
/tmpパーティション | 一時的に使用するデータを配置する。ユーザー間で共有する。独立したパーティションにすることが多い |
/optパーティション | Linuxインストール後に、追加でインストールしたパッケージ(ソフトウェア)を配置する。独立したパーティションになる |
swapパーティション | 実メモリに入りきらないプロセスを退避させる領域 |
ESP(EFI System Partition)
UEFI(Unified Extensible Firmware Interface)に遵守したシステムで必要となるパーティション。ブートローダーやカーネルイメージ、デバイスドライブなどを格納するために使用される。インストール時に自動作成される
LVM(Logical Volume Manager)
物理ボリューム(PV:物理的な記憶デバイスの領域)を、複数にまとめてボリュームグループ(VG:大きな仮想的な領域)を作成する。そこから論理ボリューム(LV;仮想的なパーティション領域)を切り出すことで、従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理することが出来るようにする仕組み。
利用することで容量の変更が容易になったり、バックアップがしやすくなるなどストレージを柔軟に管理できる。
-
ファイルシステムを動的に作成、削除できる
-
ファイルシステムを拡張できる
-
スナップショットが取れる
-
PV(Phisical Volume)
pvcreateコマンドにて作成
物理ボリュームのこと。物理的なハードディスクやパーティションを指す -
VG(Volume Group)
vgcreateコマンドにて作成
物理ボリュームを集めて作る仮想的な領域(仮想的なハードディスクみたいなもの) -
LV(Logical Group)
lvcreateコマンドにて作成
論理ボリュームのこと。ボリュームグループの一部または全部を使って作る仮想的なパーティション。従来のパーティションと同じように、この論理ボリューム上にファイルシステムを作って利用可能
fdisk(Format Disk)コマンド
書式:fdisk [-l] デバイスファイル名
MBR形式のハードディスクに対してパーティションの作成、削除、変更および情報表示を行うことが出来るコマンド。
オプションを指定せずに実行すると、対話的な操作を通じてパーティションの作成や削除を行うことが出来る。rootユーザーのみ実行可能。
サブコマンド | 説明 |
---|---|
m | サブコマンドのメニューの表示 |
l | パーティションタイプの一覧表示 |
n | パーティションの作成 |
d | パーティションの削除 |
p | パーティションテーブルの表示 |
t | パーティションタイプ(システムID)の変更 |
w | パーティションテーブルの変更を保存して終了 |
q | パーティションテーブルの変更を保存せずに終了 |
既存のパーティションに対して、サイズを変更したり削除したりすると記録されているデータが失われる。実行する前に必ずデータのバックアップを取るようにする
gdisk(GPT fdisk)コマンド
書式:gdisk [-l] デバイスファイル名
GPT(GUIDパーティションテーブル)形式のハードディスクにおいて、パーティションの作成、削除、変更および情報表示を行うことが出来るコマンド
・GPT(GUID Partition Table)とは??
MBR(Master Boot Record)形式のパーティションテーブルにあった制約を克服している新しい方式のこと。EFI(Extensible Firmware Interface)の機能の1つ
-
基本パーティション数:4
MBRでは基本パーティションが4つしか作成できず、それ以上は拡張パーティションとしその中に倫理パーティションを複数作成する必要があった
それに対して、GPTでは基本パーティションは最大128個作成可能。 -
ハードディスク容量:2.2TB(2TiB)
HDDへのアクセス最小単位はセクタとよび、1セクタのサイズは512バイト。
MBRで指定可能なセクタ数は32ビット分で、最大容量は2.2TB(2TiB: テビバイト)だった。
対してGPTは指定可能なセクタ数が64ビットとなり、最大容量は約9.4ZB(8ZiB: ゼビバイト)と増加した -
起動用システムファームウェア:BIOS
システムファームウェアがBIOSの場合、上記のような2.2TBを超える大容量ディスクを正しく認識できない。そのためGPT形式のHDDからOSを起動する場合はシステムファームウェアがUEFI(Unified Extensible Firmware Interface)である必要がある
partedコマンド
書式:parted [-l] デバイスファイル名
MBR(マスターブートレコード)、GPTにも対応したパーティション操作が可能になる。[-l]は全てのデバイスのパーティションテーブルを表示する。以下の制約がなくなる
サブコマンド | 機能 |
---|---|
mklabel,mktable | 新しいパーティションテーブルを作成する |
mkpart | 新しいパーティションを作成する |
rm | パーティションを削除する |
print(:p) | パーティションテーブルの情報を表示する |
quit(:q) | partedでの作業を終了する |
「-s」オプションでサブコマンド指定で編集を行うことも可能
# parted /dev/sdb -s mklabel msdos
mkswapコマンド
書式:mkswap [オプション] [デバイスファイル名|ファイル名]
デバイス上またはファイル上に確保されたスワップ領域の初期化を行うコマンド。
オプション | 説明 |
---|---|
-c | 不良ブロックのチェックを行う |
-L ラベル名 | ラベルを指定し、そのラベルでswaponできるようにする |
-v0 | 古い形式のスワップ領域を初期化する |
-v1 | 新しい形式のスワップ領域を初期化する |
swaponコマンド
書式:swapon [オプション] [デバイスファイル名|ファイル名]
mkswapコマンドでスワップ領域を初期化後、有効にするコマンド
オプション | 説明 |
---|---|
-a |
/etc/fstab 中でswapマークがついているデバイスを全て有効にする |
-L ラベル名 | 指定されたラベルのパーティションを有効にする |
-s | スワップの使用状況をデバイスごとに表示する |
swapoffコマンド
書式:swapoff [オプション] [デバイスファイル名|ファイル名]
指定したデバイスやファイルのスワップ領域を無効にする
パーティションの作成
partedコマンドで新しいハードディスクにパーティションを作成するには、以下の順に作業を行う
1. パーティションテーブルの指定
書式:parted mklabel [パーティションテーブル]
mklabelサブコマンドでパーティションテーブルの方式を指定する。未指定の場合はMBR形式として動作する
2. パーティションテーブルの作成
書式:parted mkpart [パーティションタイプ ファイルシステム種別 パーティション名] 開始位置 終了位置
mkpartサブコマンドでパーティションを作成する。パーティションタイプはMBR形式で指定可能で、primary(基本),extended(拡張),logical(論理)を指定する。
最後に作成されたパーティション情報を、printコマンドで確認する
# pa rted /dev/sdb
GNU Parted 3 コ
/dev/sdb を 使 用
GNU Partedへようこそ!コマンド一覧を見るには'help'と入力してください。
(parted) mklabel msdos
警告:いま存在している /dev/sdb の ディスクラベルは破壊され、このディスクの全データが失われます。続行しますか?はい( Y )/ Yes/いいえ( N ) / No? y
(parted) mkpart pr imary ext4 1 1OOOMB
(parted) print
モデル: ATA VBOX HARDDISK (scsi)
ディスク /dev/sdb : 8590MB
セクタサイズ(論理/物理) :512B/512B
パーティションテーブル:msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 1049kB IOOOMB 999MB pnmary
共有ライブラリ管理
ライブラリとはよく使われる機能を集めてひとまとめにした部品のこと。以下の種類が存在する
-
静的ライブラリ(拡張子:.a)
プログラムの作成時に組み込まれるライブラリ。ライブラリのコードのコピーがプログラムに組み込まれプログラムの一部になる -
共有ライブラリ(動的ライブラリ)(拡張子:.so)
プログラムの作成時に組み込まれず、実行時に呼び出されるライブラリ。以下の場所に格納されることがある
共有ライブラリのパスの指定
一般的に使用される共有ライブラリは、/lib
、/usr/lib
ディレクトリに格納されている。64ビット版は/lib64
と/usr/lib64
に格納されている。
プログラムに必要な共有ライブラリは、プログラムの実行時にダイナミックリンカ(リンクを行うプログラム)がいくつかのディレクトリの中から検索を行う。検索するディレクトリの指定方法は2パターンある。
1. /etc/ld.so.conf
ファイルに記載する
2. /etc/ld.so.conf.d
ディレクトリ以下に複数の設定ファイル(*.conf)を配置し、/etc/ld.so.conf
ファイルでそれらを読み込む
ただ、実行のたびに検索するのは非効率のため、Linuxではキャッシュファイル/etc/ld.so.cache
を参照している
ldconfigコマンド
/etc/ld.so.conf
ファイルの内容に基づいてキャッシュファイルである/etc/ld.so.cache
を更新・作成するコマンド。共有ライブラリを変更するたびに実行しなければならない
既存のライブラリのバージョンをアップしたり、新しいディレクトリを作ってその下に新しいライブラリをインストールする場合に有効
ldd(List Dynamic Dependencies)コマンド
書式:ldd プログラムの実行ファイル名
あるプログラムが必要としている共有ライブラリを確認できる。
LD_LIBRARY_PATH環境変数
あるライブラリを一時的に利用する場合などに使用可能。/lib
,/usr/lib
,usr/local/lib
へ書き込み権限のないユーザーが使用する場合や、検証目的で特定のライブラリを使用したい場合などに、ライブラリの保存ディレクトリ名を指定することが出来る。
リンク
リンクとはプログラム本体ファイルにライブラリなどの部品を結合すること。
-
スタティックリンク(静的リンク)
プログラムを作成する(コンパイルする)時に埋め込むリンク方法。コンパイルとはプログラムをコンピュータが理解できる機械語に翻訳すること -
ダイナミックリンク(動的リンク)
プログラムを実行するときに呼び出すリンク方法
パッケージ管理
多くのディストリビューションに導入されていて、ソフトウェアの導入や削除を簡単に行うことができる。現在インストールされているソフトウェアの情報の調査、ソフトウェア間での依存関係の確認や競合の回避なども行うことが可能。
パッケージファイルにはアーキテクチャを表す文字列が含まれていたり、バイナリのほかにライブラリや設定ファイル、マニュアルなども含まれる。
・パッケージとは??
実行プログラム、設定ファイル、ドキュメントなどを1つのファイルにまとめたもの。
・パッケージの依存関係とは??
あるパッケージが別のパッケージに依存しているような関係のこと。パッケージAなしではパッケージBを使うことが出来ないといった状態
・パッケージの競合関係とは??
パッケージAとパッケージCが同名のファイルをインストールし互いにぶつかり合う状態のこと
ディストリビューションの系統ごとで独自の形式を利用している。
Debianパッケージ管理
Debian GNU/LinuxやUbuntuなどのDebian系ディストリビューションで採用されている管理システム。
ライブラリやフレームワークなどのプログラムをインターネットを通じてインストールし、更新や依存関係の解決など様々な管理を行う。拡張子が.debのパッケージが使われる。
tree_1.6.0-1_i386.deb
tree:パッケージの名称
1.6.0:バージョン番号
-1:Debianリビジョン番号
i386:アーキテクチャ
dpkg(Debian Package)コマンド
書式:dpkg [オプション] アクション
最も基本的なパッケージ管理システムを行うコマンド。
オプション | 内容 |
---|---|
-E | 既に同じバージョンのパッケージがインストールされている場合はインストールしない |
-G | 既に新しいバージョンのパッケージがインストールされている場合はインストールしない |
-R(--recursive) | ディレクトリ内を再帰的に処理する |
アクション | 内容 |
---|---|
-i パッケージファイル名(--install) | 指定したパッケージをインストール |
-r パッケージ名(--remove) | 設定ファイルを残して指定したパッケージをアンインストール |
-P パッケージ名(--purge) | 設定ファイルも含めて完全にパッケージをアンインストール |
-l 検索パターン(--list) | インストール済みパッケージを検索して表示 |
-s パッケージ名(--status) | 指定したパッケージの情報を表示 |
-L パッケージ名(--listfiles) | 指定したパッケージに含まれる全てのファイルを表示 |
-S ファイル名検索パターン(--search) | 指定したファイルがどのパッケージからインストールされたかを表示 |
--configure パッケージ名 | 展開されたパッケージを構成する |
--unpack パッケージ名 | パッケージを展開する(インストールはしない) |
-C(--audit) | インストールが完了していない(不完全)パッケージの表示。部分的にインストールしたパッケージを探す |
#apache2パッケージをインストール
# dpkg -i apache2_2.4.29-1ubuntu4.5_amd64.deb
#apache2パッケージをアンインストール
# dpkg --purge apache2
dpkg-reconfigureコマンド
インストール済みのパッケージを再設定するコマンド。引数に指定したパッケージの初期設定スクリプトを実行する。
dselectコマンド
パッケージ管理用ユーザーインターフェースを起動するコマンド。メインメニューから利用可能パッケージのバージョンリストの更新や、インストール済み・利用可能パッケージの状況表示などを行うことが出来る。
APT(Advanced Package Tool)
Debian形式の代表的なパッケージ管理システムで、インターネット経由でパッケージをインストールでき依存関係を解決することができる。普段のパッケージ管理にはAPTを利用し、個々のパッケージの詳細を確認・管理する場合にはdpkgを利用するといったパターンが一般的。
インストールした際/etc/apt/sources.list
ファイルで管理される
apt-getコマンド
書式:apt-get [オプション] サブコマンド [パッケージ名など]
依存関係を解決しながらパッケージのインストール・アンインストール、更新などを行う
/etc/apt/sources.list
に記述された入手リストに従い、パッケージのインストールを行っている。必要に応じてURLを追加することができ、終了後は「update」サブコマンドを実行し最新バージョンに更新する。
オプション | 内容 |
---|---|
-d | ファイルをダウンロードする(インストールはしない) |
-s | システムを変更せず動作をシミュレートする |
サブコマンド | 内容 |
---|---|
install | 指定したパッケージをインストール。依存関係を自動的に解決してインストールを行う |
upgrade | 全パッケージのうち、既存パッケージの削除や新規パッケージの追加をせずに更新できるものについて、アップグレードする |
dist-upgrade | インストール済みの全パッケージを更新する。その際古いパッケージは削除する |
update | パッケージリのデータベースを最新版に更新 |
remove | 設定ファイルを残して指定したパッケージをアンインストール |
purge | 設定ファイルも含めて指定したパッケージを完全にアンインストール |
clean | 過去に取得し保持していたパッケージファイルを削除する |
apt-cacheコマンド
書式:apt-cache [オプション] サブコマンド [パッケージ名など]
パッケージ情報を検索・表示するコマンド
サブコマンド | 内容 |
---|---|
search | 指定したキーワードを含むパッケージを検索・表示 |
show | 指定したパッケージの表示 |
showpkg | パッケージについての詳細な情報を表示する |
depends | 指定したパッケージの依存関係を表示 |
aptコマンド
書式:apt [オプション] サブコマンド [パッケージ名など]
上記2つのコマンドを統合した新しいコマンド。aptコマンドの使用が推奨されている。
オプション | 内容 |
---|---|
-c 設定ファイル | 設定ファイルを指定する(デフォルトは/etc/apt/sources.list ) |
-d | パッケージのダウンロードのみ行う |
-y | 問い合わせに対して自動的にyesと回答する |
--no-install-recommends | 必須ではない推奨パッケージはインストールしない |
--install-suggests | 推奨パッケージもインストールする |
--reinstall | インストール済みパッケージの再インストールを許可する |
サブコマンド | 内容 |
---|---|
install | 指定したパッケージをインストール |
upgrade | インストール済みの全パッケージを更新する。その際パッケージの削除は行わない |
full-upgrade | インストール済みの全パッケージを更新する。その際古いパッケージは削除する |
update | パッケージリストを更新 |
remove | 設定ファイルを残して指定したパッケージをアンインストール |
purge | 設定ファイルも含めて指定したパッケージを完全にアンインストール |
search | 指定したキーワードを含むパッケージを検索・表示 |
show | 指定したパッケージの表示 |
depends | 指定したパッケージの依存関係を表示 |
RPM(RPM Package Manager)パッケージ管理
Red Hat系ディストリビューションで採用されている管理システム。拡張子が.rpmのパッケージが使用される。
rpmコマンド
書式:rpm オプション
パッケージのインストールやアップロード、アンインストールはrootユーザーのみ行える。参照及び検査も行える。
インストールやアンインストールを行う際、パッケージ同士の依存関係に問題がある場合はエラーが発生する
rpmコマンドではオプションは必須!!
併用オプションは単独で使用不可!!
オプション | 説明 |
---|---|
-i(--install) パッケージファイル名 | パッケージをインストール |
-e(--erase) パッケージ名 | 設定したパッケージをアンインストール |
-U(--upgrade) パッケージファイル名 | パッケージをアップグレードする。インストール済みのパッケージがなければ新規にインストールする |
-F(--freshen) | パッケージのアップデートする。インストール済みのパッケージが存在しない場合何も行わない |
-q(--query) パッケージ名 | 指定したパッケージインストールされていればバージョンを表示する |
-V(--verify) パッケージ名 | パッケージの検査。PRMデータベースに格納されているファイルに関する情報と、インストールされたパッケージのファイルに関する情報を比較する方法で行う。 |
「-V(--verify)」オプションは以下の内容を検査する
- ファイルのサイズ
- MD5チェックサム
- 所有ユーザー
- 所有グループ
- タイムスタンプ
併用オプション | 説明 |
---|---|
-v(--verbose) | 詳細情報の表示 |
-h(--hash) | 進行状況を#で表示 |
--nodeps | 依存関係を無視 |
-a(--all) | インストール済みの全パッケージの表示 |
-l(--list) | 指定したパッケージに含まれるすべてのファイルを表示する |
-i(--info) | 指定したパッケージの詳細情報の表示 |
-f(--file) | 指定したファイルを含むrpmパッケージを表示 |
-c(--configfiles) | 指定したパッケージ内の設定ファイルのみ表示 |
--changelog | 指定したパッケージの変更履歴の表示 |
-p(--package) | インストールされたパッケージではなく、指定したrpmパッケージファイルの情報を表示する |
-R(--requires) | 指定したパッケージが依存するファイルの表示。依存関係を調べる |
パッケージ名とパッケージファイル名の違いに注意!!
htop⇒パッケージ名
htop-2.2.0-3.el7.x86_64.rpm⇒パッケージファイル名
rpm2cpioコマンド
rpmファイルをcpioアーカイブ形式に変換し、標準出力に出力するコマンド
Yum(Yellowdog Updater Modified)
RPM形式の代表的なパッケージ管理システムで、Debian形式におけるAPTに相当する。インターネット経由で必要なパッケージを自動的にインストールでき依存関係を解決できるという特徴も一緒。以下のファイル・ディレクトリで設定を行うことができる
-
/etc/yum.confファイル
Yum実行時のログファイルの指定など基本設定情報が記述されている。 -
/etc/yum.repos.dディレクトリ
Yumのリポジトリ情報(URLなど)に関する設定ファイルが格納されている。
$releasever
や$basearch
などの変数を利用できる
yumコマンド
書式:yum [オプション] サブコマンド [パッケージ名など]
パッケージのインストールやアップロード、アンインストールはrootユーザーのみ行える
サブコマンド | 内容 |
---|---|
install | 指定したパッケージをインストール |
update | インストール済みの全パッケージを更新する。パッケージの指定も可能 |
remove | 指定したパッケージをアンインストール |
search | 指定したキーワードでパッケージを検索・表示 |
list | 全パッケージのリスト表示 |
list installed | インストール済みのrpmパッケージの詳細情報を表示する |
deplist | 指定したパッケージの依存関係を表示 |
info | 指定したパッケージの詳細情報の表示 |
check-update | インストール済みのパッケージのうち更新可能なものを表示 |
grouplist | パッケージグループリストを表示 |
groupinstall | 指定したグループのパッケージをインストール |
# 「Emacs」パッケージグループをインストール
# yum groupinstall Emacs
・パッケージグループとは??
システムツールや特定のアプリケーションなど、共通の目的でサービス提供するパッケージの集合
yumdownloaderコマンド
書式:yumdownloader パッケージ名
個別にrpmファイルをダウンロードすることが出来る。一般ユーザー権限でも使用可能。
dnf(Dandified Yum)コマンド
Yumの後継バージョン。Fedora 22以降やCentOS 8以降で置き換えられている。サブコマンドはyumコマンドと一緒。
zypperコマンド
書式:zypper [グローバルオプション] サブコマンド [コマンドオプション] [パッケージ名など]
Slackware系ディストリビューションのopenSUSE(オープン・スーゼ)ではRPM形式によるパッケージ管理を行う。
サブコマンド | 内容 |
---|---|
install(in) | 指定したパッケージをインストール |
update(up) | インストール済みの全パッケージを更新する。パッケージの指定も可能 |
remove(rm) | 指定したパッケージをアンインストール |
search(se) | 指定したキーワードでパッケージを検索・表示 |
info | 指定したパッケージの詳細情報の表示 |
list-updates(lu) | 全パッケージのリスト表示 |
repos(lr) | リポジトリの一覧表示 |
refresh | リポジトリの更新 |