現在、Centos4で稼働しているメールサーバーがいるのですが、最近inodeを使い切るような事態が発生しました。
そのため、サーバーもずいぶん古いので、これを機に新規にメールサーバーをクラウド(AWS想定)に作成することになりました。

調べてみると、inodeの上限変更コマンドは見つかったのですが、
このコマンドでファイルシステムを作成後、どのような手順でシステム領域などを移動させればよいのでしょうか。

AWS上なので、インスタンスを立てて新規EBSボリュームを1つ追加。
このEBSボリュームをinode上限変更してファイルシステム作成。
というところまではいいと思うのですが、そこからどうやってシステム領域などを移動させるのかがわからないのです。

もし参考になる情報などありましたら、ご教授いただけないでしょうか。

※inode上限変更コマンド
https://viblo.asia/eiji346/posts/jlA7GKmWRKZQ
※$ mke2fs -i Byte -t filesystem

このQ&Aに関連する最新のQ&A

A 回答 (3件)

コマンドの詳細はmanで引けばよいです。


変更方法に関する説明は以下のような解説記事が参考になるでしょう。

http://www.itmedia.co.jp/enterprise/articles/080 …

また、「Linux inode数 変更」といったキーワードでいろいろ見つかるはずです。
Linux、Unixの設定解説本もいろいろあります。O'ReillyのUnixシステム管理系の本なんかは必須かもしれません。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。

参考でいただいたサイトは見ていたのですが、クラウド環境だとCDブートが出来ないので、その場合はどのようにするのかわからなかったため、質問させていただきました。

サイト上の説明文では、
・ファイルシステムを再構築する必要があるので、iノード変更前には必ず対象となるファイルシステムのバックアップが必要。
・/や/varといったシステム領域は、OSが起動している状態では再構築できない。
との記述があります。

この記述から、以下の手順でシステム領域を含めたinodeの変更を行うという必要があるとのことでしょうか。

1.「ファイルシステムを再構築」=データがすべてなくなるからバックアップが必要(dump)。
2.OS起動中はシステム領域は再構築できないから、CDブートできないクラウド環境では、ディスクをマシンに追加して、追加したディスクのinodeを変更。
3.バックアップデータをinodeを変更したディスク上にリストア(restoreコマンド)
4.ディスクの差し替え

お礼日時:2015/09/26 22:04

そもそも論なのですが、「システム領域を移動させる」必要があるのでしょうか?


せっかくボリューム(ディスク)が二つあるのでしたらそのまま分けて使用した方がいろいろと都合がよろしいかと思います。
システム領域はAMIから作った領域をそのまま、メールスプール(/homeとか?)は新規で作ったボリュームをマウント。

/etc/fstabに /home /dev/sdb1 …
等で良いのではないでしょうか?

こちらの方法も不明であれば補足頂ければ、と思います。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。

>そもそも論なのですが、「システム領域を移動させる」必要があるのでしょうか?
>せっかくボリューム(ディスク)が二つあるのでしたらそのまま分けて使用した方がいろいろと都合がよろしいかと思います。

別ディスクでメール用の領域として使用すればいいとは思っているのですが、"上"の方からシステム領域も~、と来ているので...。

とりあえず、検証してみてダメだったら、ディスク分ける構成で納得してもらうようにしてみます。

お礼日時:2015/09/30 17:32

No.1です。


クラウド環境依存の部分はクラウドサービスの提供者(社)に聞かないとわかりません。
システムの再構築に関する説明は提供者(社)が提供するマニュアル等に無いのでしょうか? システムの再構築はイレギュラーなことではないのであるように思いますが。
最悪はユーザデータを全バックアップして最初に環境構築した際と同じ手順で、、、なのでしょう。でもinodeの追加の際は安全のためどのみちユーザデータの全バックアップはしますよね。
    • good
    • 0
この回答へのお礼

回答頂きありがとうございます。
>クラウド環境依存の部分はクラウドサービスの提供者(社)に聞かないとわかりません。

確かにその通りですね。
手順等の情報があるか、念の為提供元に確認してみます。
※技術系の問いあわせは、有料サポートになるようですが、聞くだけ聞いてみます。

お礼日時:2015/09/30 15:17

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjs 親ノード

javascriptの Node.appendChild()の使い方に親ノード、子ノードとあるのですが
これは親要素、子要素とは違うのですか?

以下引用
Node.appendChild() メソッドは、特定の親ノードの子ノードリストの末尾にノードを追加します。追加しようとしたノードが既に存在していたら、それは現在の親ノードから除かれ、新しい親ノードに追加されます(他のノードに追加する前にそのノードを親ノードから削除する必要はありません)。

Aベストアンサー

子ノードにはテキストノードとか、属性ノードとか
要素ノード以外のノードも沢山あります。
親ノードは殆どの場合要素ノードですが、
ドキュメントノードや要素参照ノードの場合も有りますね。

QLinux(centos 6.6) の日本語環境への変更ができません

仮想環境にOSを導入し、CUIの環境で初心者ながら勉強をはじめています。

日本語環境へ切り替えて勉強をしたいので、
以下ページを参考して日本語環境へ変えようとしています。

 ◆ CentOS 6 - 日本語環境にする : Server World
 http://www.server-world.info/query?os=CentOS_6&p=japanese

しかし、一通り設定をしても、日本語環境に変わらず、
設定したに、でたらめなコマンドなどを打っても以下のような
文字化け状態で返されます。
「-bash:detarame: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■」

再起動や、ログアウトをしても改善せず、
OS初期インストール直後の環境でも、改善しません。

ネットの情報などを調べ、2時間ほど調べましたがお手上げ状態です。

ご迷惑をおかけして申し訳ございません。
どなたかご教授のほど、よろしくお願いいたします。

--------------------------------------------
※ 補足
・上記URLの(1)yum -y groupinstall "Japanese Support" の実施はIP取得後なので、
正常にインストールは完了します。

・上記URLの(2)[root@dlp ~]# vi /etc/sysconfig/i18n の編集ですが、
編集前から LANG="ja_JP.UTF-8" となっていました。

・上記URLの(2)[root@dlp ~]# echo $LANG を実施しても、
ページ記載どおりの以下設定となっています。
ja_JP.UTF-8

・その後、確認で [root@dlp ~]# passwd などと入力しても、
日本語でなく、以下のように返されます。
「 ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■」
--------------------------------------------

仮想環境にOSを導入し、CUIの環境で初心者ながら勉強をはじめています。

日本語環境へ切り替えて勉強をしたいので、
以下ページを参考して日本語環境へ変えようとしています。

 ◆ CentOS 6 - 日本語環境にする : Server World
 http://www.server-world.info/query?os=CentOS_6&p=japanese

しかし、一通り設定をしても、日本語環境に変わらず、
設定したに、でたらめなコマンドなどを打っても以下のような
文字化け状態で返されます。
「-bash:detarame: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■」

再起動...続きを読む

Aベストアンサー

コンソールで文字化けするのは当たり前。(質問者のそれ元々Xでのターミナルやsshクライアントで使う物だし)
そんなの昔からのことで対応なんてされていない。
日本語表示するなら昔からフレームバッファターミナルを使うしか方法はない。

CUIだけで使うならWindowsのsshクライアントを使ってやった方がフレームバッファターミナルをインストールする何倍も楽。

QC# TreeView 効率良いノード追加の仕方

C# TreeViewについて質問させてください。
ノード(子ノード含む)を数万件以上登録する際に、効率の良い方法を教えて頂けないでしょうか?

実際のコードとは異なりますが、大まかに以下のような処理をメインスレッドで行っています。
class MyTreeNode : TreeNode{
  void AddNode(){
    BeginUpdate();
    SuspendLayout();
    foreach( var 親ノード情報 in 親ノード情報リスト ){
      TreeNode parentNode = new TreeNode( 親ノード名 );
      foreach( var 子ノード情報 in 子ノード情報リスト ){
        TreeNode childNode = new TreeNode( 子ノード名);
        parentNode.Nodes.Add( childNode );
      }
      this.Nodes.Add( parentNode );
    }
    ResumeLayout();
    EndUpdate();
  }
}
この方法ですと、かなり時間がかかってしまい、UIが固まったようになってしまいます。

(TreeViewに、子ノードの一斉展開機能が必要なので、親ノード展開時のイベントを拾って
 子ノードを追加する方法は上記と同じく遅くなってしまうのではと思っていますがどうなんでしょうか?)

C# TreeViewについて質問させてください。
ノード(子ノード含む)を数万件以上登録する際に、効率の良い方法を教えて頂けないでしょうか?

実際のコードとは異なりますが、大まかに以下のような処理をメインスレッドで行っています。
class MyTreeNode : TreeNode{
  void AddNode(){
    BeginUpdate();
    SuspendLayout();
    foreach( var 親ノード情報 in 親ノード情報リスト ){
      TreeNode parentNode = new TreeNode( 親ノード名 );
      foreach( var 子ノード情報 in ...続きを読む

Aベストアンサー

今試せる環境がないので半分くらい無責任発言なんですが、一応案として、何かの参考になれば。

・効率が良くなるかもしれない方法
 TreeNodeを配列化してAddRangeする(Addを使わず配列で渡す)
 ※配列はListではなくTreeNode[]でnew

・追加時間を短縮する方法
 System.Threading.Tasks.Parallelを使って並列実行する
 ぱっと見、1つの「親ノード情報」に対する子は予め決まってそうなので、「親ノード情報」単位で並列化が可能にみえます。ノード間で何かしら依存する場合はたぶん無理です。

・ノード追加処理を非同期化させるか、メッセージ処理をはさむ
 UIが固まるのは、処理が重いからというより、ウインドウが長時間メッセージを処理できなくなるからです。
 なので、たとえば何階層か展開する毎にメッセージ処理を挟めばUIが止まることはなくなります(処理中にウインドウが操作を受け付けるようになるので別の問題起き得ます)。

QLinuxのinodeについて。

Linuxのinodeとは何のことでしょうか?

ファイルとブロックを結びつける媒介という捉え方でよろしいでしょうか?

よろしくお願いします。

Aベストアンサー

inodeは、ファイルやディレクトリに対し必ず1個存在するファイルの実体に関する情報を管理するためのもの(構造体)になります。
inodeには、実際にデータが書き込まれいるディスク上のブロックの情報をはじめ、ファイルのオーナーやグループ、パーミッション、サイズ、最終更新日時などが格納されています。

ただし、ファイル名やディレクトリ名に関する情報はinodeには格納されていません。
これら、ファイル名やディレクトリ名は、ディレクトリエントリという所に格納され、ここにファイルの実体への情報、つまり該当するinodeがどれかという情報も格納されています。

これらの構成はUNIX系OSであれば、基本的に違いはありません(inode内に格納されている情報にファイルシステムによる違いは存在しますが)。

QTreeViewのノードの編集結果が反映されない

C#3.5を使用しています。

treeView1にはnameが「ノード1」のノードがセットされていて、
それを次のようにして

TreeNode newNode;
newNode = new TreeNode(treeView1.SelectedNode.Name);
newNode.Text = "ノードテキスト変更";
treeView1.SelectedNode = newNode;
MessageBox.Show(treeView1.SelectedNode.Text);// ノード1のまま・・・

ノードを編集したと思ったのですがノードのテキストは変更されませんでした。
間に直接

treeView1.SelectedNode.Text = newNode.Text;

を入れるとテキストは変更されるのですが、ノードそのものを入れ替える(編集する)には
どのように記述すれば良いのでしょうか?

C#3.5を使用しています。

treeView1にはnameが「ノード1」のノードがセットされていて、
それを次のようにして

TreeNode newNode;
newNode = new TreeNode(treeView1.SelectedNode.Name);
newNode.Text = "ノードテキスト変更";
treeView1.SelectedNode = newNode;
MessageBox.Show(treeView1.SelectedNode.Text);// ノード1のまま・・・

ノードを編集したと思ったのですがノードのテキストは変更されませんでした。
間に直接

t...続きを読む

Aベストアンサー

 こんばんは。

 新規ノードを追加した後、選択ノードを引っこ抜かないといけないのではないでしょうか。
 新規ノードを追加する際、ツリーの形状を辿って適切な位置に入れないといけないので、再帰を使って話を進めた方が楽かもしれません。
 速度面等、色々とアラはあると思いますが、以下参考程度に。

private bool SwapTreeNode(TreeNodeCollection tvnc, TreeNode selectedNode, TreeNode newNode)
{
for (int n = 0; n < tvnc.Count; ++n)
{
//選択ノードを発見
if (tvnc[n] == selectedNode)
{
//新規ノードを追加
tvnc.Insert(n, newNode);
return true;
}

//+1階層下へ再帰する
if (SwapTreeNode(tvnc[n].Nodes, selectedNode, newNode))
return true;
}
return false;
}

private void ???()
{
//新規ノード作成
TreeNode newNode = new TreeNode(treeView1.SelectedNode.Name);
newNode.Text = "ノードテキスト変更";

//ツリー形状を辿って選択ノードの位置を見つけて新規ノードを追加
SwapTreeNode(treeView.Nodes, treeView.SelectedNode, newNode);

//選択ノードを引っこ抜く
treeView.SelectedNode.Remove();

//新規ノードを選択する
treeView.SelectedNode = newNode;

//確認
MessageBox.Show(treeView1.SelectedNode.Text);
}

 こんばんは。

 新規ノードを追加した後、選択ノードを引っこ抜かないといけないのではないでしょうか。
 新規ノードを追加する際、ツリーの形状を辿って適切な位置に入れないといけないので、再帰を使って話を進めた方が楽かもしれません。
 速度面等、色々とアラはあると思いますが、以下参考程度に。

private bool SwapTreeNode(TreeNodeCollection tvnc, TreeNode selectedNode, TreeNode newNode)
{
for (int n = 0; n < tvnc.Count; ++n)
{
//選択...続きを読む

Qlinux2つのデュアルブート環境を構築したいが、1つめのlinuxから2つめのlinuxの/boot以下が見えない

LPICレベル2の取得を目指して学習中のものです。Linuxの知識はほぼテキストベースの初心者ですので、質問のための情報に過不足があるかもしれませんが、ご指摘願えれば幸いです。よろしくお願いいたします。

<やりたいこと>
一つのパソコンにCentOS3.6を2つインストールし、1つめのCentOS3.6のLILOからそれぞれの/をルートパーティションとし、それぞれのカーネルを読み出せるようにしたいです。

<困っていること>
一つ目のCentOS3.6(以下便宜上CentOS1とします)に二つ目(CentOS2とします)の/をマウントし、CentOS1からCentOS2を認識できる状態にした上で、CentOS1の/etc/lilo.confを書き換え、「それぞれの/をルートパーティションとし、それぞれのカーネルを読み出せるように」しました。(つもり)
しかし、CentOS1からはCentOS2の/boot配下に何もないように見えてしまいます。(よって、CentOS1の/etc/lilo.confにCentOS2のカーネルイメージを記述しても無効になってしまいます)
詳細は下の<やったこと>にて。

<やったこと>
80GBのSATAハードディスクが1つ搭載されているパソコン(真っ白)にCentOS1をインストールしました。
パーティション構成は以下のとおりです。
/dev/sda1 /boot 100M
/dev/sda2 /   残り全部
このドライブ(ドライブA)のMBRにはLILOをインストールしました。

…長くてすいません。続きます。

LPICレベル2の取得を目指して学習中のものです。Linuxの知識はほぼテキストベースの初心者ですので、質問のための情報に過不足があるかもしれませんが、ご指摘願えれば幸いです。よろしくお願いいたします。

<やりたいこと>
一つのパソコンにCentOS3.6を2つインストールし、1つめのCentOS3.6のLILOからそれぞれの/をルートパーティションとし、それぞれのカーネルを読み出せるようにしたいです。

<困っていること>
一つ目のCentOS3.6(以下便宜上CentOS...続きを読む

Aベストアンサー

mountという処理の概念を理解できていないようですね。

原因は、
/dev/sdb2 はmount済み
/dev/sdb1 はmountしていない
ためです。

JF(Linux Howto Documents)は参照したことがありますか?

参考URL:http://www.linux.or.jp/JF/JFdocs/Multi-Disk-HOWTO.html

Q【C#】TreeViewでクリックした親ノードと、子ノードを表示させた

【C#】TreeViewでクリックした親ノードと、子ノードを表示させたい

C#初心者です。
TreeView(treeView1)で親ノードをクリックしたら、その親ノード+子ノードを、別のTreeView画面(treeView2)に表示させたいのですが、やり方がわかりません。
例えば、

+A
 -B
 -C
+D
 -E

というTreeViewの場合、Aの親ノードをクリックしたら、Aの親ノードと、BとCの子ノードが、別画面(treeView2)に表示されるようにしたいです。
どなたか分かる方いらっしゃいましたら教えていただけると幸いです。
宜しくお願いいたします。

Aベストアンサー

あまり詳しくはないのですが、ノードのサブツリーを含めたコピーはCloneメソッドを使うと簡単そうです。

「C# treenode clone」などで検索すると様々なサンプルが得られます。少し考えて下記のコードでできたと思います。

Windows7 + Visual C# 2010 Expressで試しています。

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
TreeNode CloneNode = (TreeNode)e.Node.Clone();
treeView2.Nodes.Clear();
treeView2.Nodes.Add(CloneNode);
treeView2.Nodes[0].Expand(); // rootを展開
}

QWindows系又はLinux系のOSのレンタルサーバーでPHPの環境をととのえるには

私はPHPの環境の整ったところでしかプログラミングをしたことがないため、PHPの環境をどのように手配したらいいのかわらりません・・・。
どうしたらいいでしょうか??

そもそもレンタルサーバーでメールの送受信のテストなどは可能でしょうか?

Aベストアンサー

PHP対応のサーバなんてあるのかな?
と思っていたのですが、調べるといろいろありそうですね。
いろいろまとめたページがありましたので、ご参考までに。

参考URL:http://phpspot.net/php/rentalserver.php

Q[C言語]単連結リストにおける着目ノードの操作

http://www.bohyoh.com/Books/CalgoA/EX/ALGOEX0901.html

上の線形リストのプログラムにおいて、着目ノードを1個次にずらす操作と、1個前にずらす操作を追加したいのですが、単連結リストでは後者の実現は少しばかりややこしく、困っています。
おそらく先頭ノードから後続ノードへのポインタを辿って行って、着目ノードを探索すれば良いのでしょうが……。
尚、前者において着目ノードが末尾ノードだった場合、後者において着目ノードが先頭ノードだった場合は考えないものとします。

皆様にご教授頂けると幸いです。

/* 着目ノードを一個次のノードにする */
void NextCrnt(List *list)
{
if (list->crnt == NULL){
puts("着目要素はありません。");
}
else {
list->crnt = list->crnt->next;
}
}

Aベストアンサー

「明白に質問者を置き去りにしている」としか思えないので「先頭ノードから後続ノードへのポインタを辿っていく」バージョンも書いてみる... けど, 本質的に「next が『着目しているノード』であるようなノード」をひたすら探すだけなので構造的には SearchNode と変わりません:
void PrevCrnt(List *list)
{
if (list->crnt == NULL) {
puts("着目要素はありません。");
} else if (list->crnt != list->head) {
Node *p = list->head;
while (p != NULL) {
if (p->next != list->crnt) {
list->crnt = p;
return;
}
p = p->next;
}
}
}
本当に正しいことまでは保証できないので確認はお願いしますね.

それにしても「crnt」はどうしても「クルント」って読んじゃうなぁ. こんな無理して縮めずとも「current」でいいのに. NO とか NAME とかも, シフト使えば... いやいや, こんなところであら捜ししてもしょうがないんだ....

で蛇足タイム (笑):
ウケ狙いで
#define defStruct(tag) typedef struct tag tag; struct tag
とかやると #3 の最初の 2行が
typedef struct Node Node;
struct Node {
から
defStruct(Node) {
に変わるのでちょっと見やすい... か?

祝 gets消滅 (謎)

「明白に質問者を置き去りにしている」としか思えないので「先頭ノードから後続ノードへのポインタを辿っていく」バージョンも書いてみる... けど, 本質的に「next が『着目しているノード』であるようなノード」をひたすら探すだけなので構造的には SearchNode と変わりません:
void PrevCrnt(List *list)
{
if (list->crnt == NULL) {
puts("着目要素はありません。");
} else if (list->crnt != list->head) {
Node *p = list->head;
while (p != NULL) {
if (p->next != list->crnt) {
list->crnt = p;
return...続きを読む

Q稼働してるCentOSを丸ごと別PCにコピーしたい

CentOS6.3がx86_64の仮想環境上(KVM on CentOS6.3)で稼働しています。
この仮想マシン上でCentOS6.3の最小構成を元にパッケージやアプリケーションを追加し設定を行ってきました。
当初は仮想マシンを別のサーバのKVMに移行するだけだったのですが、この仮想マシン上の環境を実ハードウェア上で実行する事になりました。

現状は以下のようになっております。
KVM、実機ともx86_64になります。
カーネルはCentOSのモノをそのまま使ってます。
KVMでは/と/varがlvmのパーティーションで/homeはnfs。
実機の/homeはlocalにおきます。(たいして容量は使ってないのでコピーする予定)
Xは使ってません。
実機はKVMを使っていたPCと比べて性能が落ちるのでKVMは使えません。
仮想マシンのCentOSに実機のethernetとコンソール用ドライバは入れました。
initramfsは必要なら実機に合わせて作り直します。

一応手順として下記を考えましたが、できるだけ確実に、また時間を掛けずに行いたいので注意点や手順について教えて下さい。

手順その1
1USBHDDケースが有るので実機のHDDを一旦USBHDDケースに移す。
2 KVM上でUSBパススルーを使ってHDを接続しraid1でミラーする。
3 そのHDを実機に繋ぎ直して起動する。
4 /etc等を修正する。
問題点
ちゃんと起動するか判らない。
KVMから実機に移行した後に必要な修正点が把握出来ていない。

手順その2
1 最小構成で実機にインストール
2 KVM上のcentosからパッケージリストをダンプして、それを元にyumでパッケージを追加
3 /etcとか/varをコピー、修正
4 ユーザーの追加等、設定を移行
5 追加したアプリケーションをインストールし設定の移行、データのコピー。
問題点
基本的に新規インストールと変わらない。
dbのデータ移行はどうするか、設定漏れが無いか確認する手間が煩雑なのが予想される。
手動でコピーは作業漏れが怖いのでやりたく無いです。

手順その3
kickstartなるものが有るらしいのでそれを使う。
問題点
やり方が良く判ってません。
どの程度自動化できるのか把握出来てません。

以上3点どれも?マークな状況です。
注意点、手順等ご指摘お願いします。

CentOS6.3がx86_64の仮想環境上(KVM on CentOS6.3)で稼働しています。
この仮想マシン上でCentOS6.3の最小構成を元にパッケージやアプリケーションを追加し設定を行ってきました。
当初は仮想マシンを別のサーバのKVMに移行するだけだったのですが、この仮想マシン上の環境を実ハードウェア上で実行する事になりました。

現状は以下のようになっております。
KVM、実機ともx86_64になります。
カーネルはCentOSのモノをそのまま使ってます。
KVMでは/と/varがlvmのパーティーションで/homeはnfs。
実機の/homeはl...続きを読む

Aベストアンサー

http://d.hatena.ne.jp/nayutaya/20090204/1233735588
普通にMondo rescueではダメですか?
上記記事は物理→仮想ですが、特に物理とか仮想とか関係無く使えるツールなので、使ってみてはいかがでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング