SDB:KIWI-LTSP 转码

跳转到:导航搜索

简介

dvd::rip 和 transcode 是用于在不同视频和音频格式之间转换的工具。dvd::rip 用于撕取视频 DVD(MPEG2 数据流)的内容到磁盘,最终剪切场景并开始转码,然后将 MPEG2 数据流转换为所需的格式(例如 xvid 和 mp3)。

由于转码过程可能需要很长时间,可以将工作分成几个片段,然后由网络上的其他机器处理。实现此目的的最佳方法是在一个服务器上设置控制转码过程,客户端可以从该服务器启动(无盘)。这在 openSUSE 11.1 上进行了测试(截至 2009 年 6 月 10 日)。

在以下示例中,主机具有 IP 地址 192.168.0.50,名称为 ws50。客户端命名为 ws51、ws52、ws53 等。如果需要,请根据自己的设置调整地址。 “user”指定在主机上运行 dvd::rip 的普通用户。

重要的是要知道客户端必须分配一个固定的主机名/IP 地址,因为您必须将客户端列表指定给 dvdrip-master(整个集群的控制器)。LTSP 的默认行为是,如果在默认租期内重新启动客户端(dhcpd.conf),则客户端会被分配新的主机名和 IP 地址,然后 dvdrip-master 将看不到它(将先前使用的主机名显示为“离线”)。

要求

仓库

openSUSE-11.1-i586 安装 DVD 内容必须在 /mnt/11.1 处可用(通过将内容复制到那里、挂载 DVD 或对 DVD 镜像使用“mount -o loop”)。需要存在以下仓库

  • Packman
  • openSUSE OSS

软件包

需要在主机上安装以下软件包

  • dvd::rip (>= 0.98.10)
  • transcode (>= 1.1.0)

KIWI-LTSP

按照 KIWI-LTSP 快速入门 中的说明安装 LTSP 服务器。

在主机上设置 LTSP

/etc/sysconfig

应在 System/Kiwi-ltsp 中设置以下值

  • DHCP_RANGE = 192.168.0.51 192.168.0.100
  • DHCP_SUBNET = 192.168.0.0
  • IMAGETYPE = NFS
  • LTSP_LOCALAPP = transcode ogmtools nfs-client

这将指示 KIWI-LTSP 提供 NFS 根文件系统,并将 transcode、ogmtools 和 nfs-client 作为客户端的本地应用程序。使用网络子网 192.168.0.0。DHCP 服务器将提供从 .51 到 .100 的 IP 范围,以向网络引导的客户端分配地址。

设置 KIWI 所需的仓库

kiwi-ltsp-setup(稍后运行此脚本)需要以下仓库

  • Packman
  • openSUSE OSS

这是一个添加到 /usr/share/kiwi/image/ltsp/suse-11.1/config.xml 的示例。找到最后一个仓库条目并添加

<repository type="rpm-md">
    <source path="http://ftp.skynet.be/pub/packman/suse/11.1/"/>
</repository>
<repository type="rpm-md">
    <source path="http://download.opensuse.org/distribution/11.1/repo/oss/suse/"/>
</repository>

KIWI 设置

现在可以运行 KIWI 设置脚本了。通过以 root 身份调用来执行

kiwi-ltsp-setup -s

这可能需要一些时间,因为它会下载所需的软件包,将它们安装到 /srv/kiwi-ltsp-nfs,并准备主机以提供用于网络引导 openSUSE 的终端服务。

/srv/tftpboot/KIWI/lts.conf (可选)

修改 lts.conf,以便排除启动时不需要的功能(GUI、声音等)。这可以在客户端上节省一些 RAM。它可能如下所示

[default]
    SOUND=false
    LOCALDEV=false
    CONFIGURE_X=false
    SERVER=192.168.0.50
    SCREEN_07=shell
    LOCAL_APPS=true
    LDM_NOMAD=false

SERVER 变量设置为主机的 IP 地址。

/etc/dhcpd.conf

调整 dhcpd.conf 中的“subnet 192.168.0.0”部分,以便为每个客户端分配唯一的 IP 地址。它可能如下所示

subnet 192.168.0.0 netmask 255.255.255.0 {
#  range 192.168.0.51 192.168.0.100;
  default-lease-time 14400;
  max-lease-time 172800;
  filename "pxelinux.0";
  host ws51 {
    hardware ethernet 00:01:23:45:67:89;
    fixed-address 192.168.0.51;
  }
  host ws52 {
    hardware ethernet 00:12:34:56:78:9A;
    fixed-address 192.168.0.52;
  }
  host ws53 {
    hardware ethernet 00:23:45:67:89:AB;
    fixed-address 192.168.0.53;
  }
  host ws54 {
    hardware ethernet 00:34:56:78:9A:BC;
    fixed-address 192.168.0.54;
  }
  host ws55 {
    hardware ethernet 00:45:67:89:AB:CD;
    fixed-address 192.168.0.55;
  }
}

MAC 地址(“硬件以太网”值)在客户端尝试 PXE 启动时显示。

要应用更改,以 root 身份运行

/etc/init.d/dhcpd restart

如果显示任何错误,dhcpd.conf 中可能存在拼写错误(或缺少分号)。修复它并重新运行上述命令。

/etc/hosts

必须更新主机 /etc/hosts,以便 dvd::rip 可以使用主机名(在进行集群转码时不允许使用 IP 地址)。一个例子是

192.168.0.50    ws50 ws50
192.168.0.51    ws51 
192.168.0.52    ws52 
192.168.0.53    ws53 
192.168.0.54    ws54 
192.168.0.55    ws55

设置转码集群

调整 fping 文件属性

以 root 身份运行以下命令

chmod u+s /usr/sbin/fping

这将设置 fping 上的 SUID 属性,这对于 dvdrip-master 是必需的。

准备使用 ssh 进行无密码登录到客户端

由于 dvdrip-master 将使用 ssh 登录到客户端,因此它不会发送登录密码。因此,每个客户端必须在启动时下载准备好的 /root/.ssh/authorized_keys 文件。

如果 ~/.ssh/id_rsa.pub 尚不存在,这将创建一个(以普通用户身份运行,密码留空)

ssh-keygen -t rsa

以 root 身份执行

cat /home/user/.ssh/id_rsa.pub > /srv/tftpboot/KIWI/authorized_keys

这将把创建的公钥添加到 authorized_keys 文件中,该文件将在启动时由每个客户端下载。

现在在 /srv/tftpboot/KIWI/config.default 中找到以“CONF=”开头的行,并添加(没有空格或换行符)

,/KIWI/authorized_keys;/root/.ssh/authorized_keys;192.168.0.50

这告诉客户端从主机(192.168.0.50)下载 /srv/tftpboot/KIWI/authorized_keys 并将其复制到 /root/.ssh/authorized_keys。

准备 dvdrip-data 目录

由于所有客户端必须使用相同的数据文件,因此它们都必须访问主机上的一个文件夹。通过设置在“user”的主目录中导出的 NFS 文件夹来实现。

以普通用户身份执行

mkdir ~/dvdrip-data
cat /etc/passwd | grep "user"

这将在“user”的主目录中创建 dvdrip-data 文件夹。其次,它显示了一些关于“user”的信息,这些信息是导出文件夹所必需的。它应该如下所示

user:x:1000:100:User:/home/user:/bin/bash

数字 1000 是数值用户 ID (UID),100 是数值组 ID (GID)。

将以下行添加到 /etc/exports

/home/user/dvdrip-data 192.168.0.0/255.255.255.0(rw,all_squash,async,no_subtree_check,anonuid=1000,anongid=100)

并应用更改,以 root 身份运行

/etc/init.d/nfsserver restart

这将使“user”主目录中的 dvdrip-data 文件夹使用 NFS 在 192.168.0.0 子网中共享。值“anonuid”和“anongid”最终必须调整为“user”的 UID/GID。这两个选项都是必需的,以便让主机 NFS 服务器将所有文件和文件夹(由客户端“root”用户创建)分配到那里。

在客户端上自动挂载 dvdrip-data

以 root 身份在 /srv/kiwi-ltsp-nfs/etc/init.d/after.local 中创建一个文件

#! /bin/sh
mkdir /root/dvdrip-data
mount.nfs 192.168.0.50:/home/user/dvdrip-data /root/dvdrip-data -o rsize=8192,wsize=8192,timeo=14,intr -w

并(以 root 身份)使其可执行

chmod a+x /srv/kiwi-ltsp-nfs/etc/init.d/after.local

after.local 脚本在客户端启动完成后运行。它在 root 的主目录中创建 dvdrip-data 文件夹。之后,主机(192.168.0.50)上共享的 NFS 文件夹“dvdrip-data”被挂载到它。

准备 dvd::rip 在集群中转码

必须告知 dvdrip-master 网络中哪些客户端将进行集群转码。这可以使用 dvd::rip GUI 完成。每个客户端可以运行多个节点,这在客户端具有多个 CPU 时很有用。例如,具有双核 CPU 的客户端可以运行两个节点。具有 8 个虚拟 CPU 的 Intel Core i7 处理器(4 个物理核心,启用超线程,每个核心显示两个 CPU),因此它可以运行最多 8 个节点,这些节点可以命名为 wsXXa、wsXXb、wsXXc 等。命名方案由用户决定。主机也可以参与集群转码,只需像其他任何客户端一样添加它。除此之外,建议在主机上保留一个“空闲”CPU,然后用于处理节点生成的网络和磁盘流量。

启动要参与集群转码的每个客户端。确保它们都已启动并正在运行。以主机上的普通用户身份,登录到每个客户端

ssh root@wsXX

将 wsXX 替换为客户端的名称(ws51、ws52 等)。SSH 将回答说指纹未知并将添加到 known_hosts 列表中,在此处写入“yes”。重复此操作,直到添加了每个客户端的指纹。每次用户运行“ssh-keygen”时都需要这样做。

然后以普通用户身份运行 dvd::rip。单击菜单“Cluster”->“Control Window”,将显示标题为“dvd::rip - Cluster Control”的窗口。按“Add node”以将每个客户端的节点添加到节点列表中

  • 名称:(节点的名称,例如:ws51a、ws51b、ws52a、ws52b 等)。
  • 客户端名称:(节点运行的客户端的名称;ws51、ws52、ws53 等)。
  • 本地数据目录:/root/dvdrip-data
  • 通过 SSH 连接的用户名:root
  • 将所有其他字段留空。

按“Test settings”并检查“Results”列表。然后按“OK”以添加节点。如果需要,按“Start node”。

所有节点现在都应显示为“online”。

使用 dvd::rip

撕取 DVD

有关撕取 DVD 和创建项目等信息,请参阅 dvd::rip 的文档。

转码

要使用 dvd::rip 转码视频/音频数据,请选择“Transcode”选项卡,选择标题,如果需要,调整设置,然后按“to cluster”。在显示的“dvd::rip - edit cluster project”窗口中,只需按“OK”。在显示的“dvd::rip - Cluster Control”窗口中,在“Project queue”列表中,选择项目并按“Start project”。完成后,可以从队列中删除该项目。如果没有剩余的项目,可以简单地关闭客户端。